recs-searcher

Search engine and registry error corrector


Keywords
python, searcher, corrector, faiss, chroma-bd, embeddings, data-science, embeddings-similarity, spelling-correction, text-similarity
License
Apache-2.0
Install
pip install recs-searcher==0.1.1

Documentation

GitHub Workflow Status (branch) Read the docs

PyPI PyPI - Downloads

recs-searcher β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для поиска ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… тСкстов

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° позволяСт Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ тСксты ΠΈΠ· датасСта.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  1. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°
  2. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
  3. Установка
  4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ орфографичСскиС, Ρ‚Π°ΠΊ ΠΈ рССстровыС ошибки.

Рассмотрим самыС частыС ошибки:

  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ сокращСния ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ слова: Β«Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ институт ΠΈΠΌΠ΅Π½ΠΈ А.М. Π“ΠΎΡ€ΡŒΠΊΠΎΠ³ΠΎΒ» || Β«Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ институт ΠΈΠΌ. А.М. Π“ΠΎΡ€ΡŒΠΊΠΎΠ³ΠΎΒ»;
  • ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹ Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ слова: Β«Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹ΠΉ институт ΠΈΠΌΠ΅Π½ΠΈ А.М. Π“ΠΎΡ€ΡŒΠΊΠΎΠ³ΠΎΒ» || Β«Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ ΠΈΠΌΠ΅Π½ΠΈ А.М.Π“ΠΎΡ€ΡŒΠΊΠΎΠ³ΠΎΒ»;
  • ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹ Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ символы: «Бибирский Ρ„Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ унивСрситСт» || «Бибрский Ρ„Π΅Π΄Π΅Ρ€Π°Π°Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ½ΠΈΠ²Π΅Ρ€Β»;
  • слова ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π² Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС: Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ космичСских ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ || Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΈ космичСских Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

Π”Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ recs-searcher (registry error correction system - searcher), основанный Π½Π° извСстных NLP-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ….

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

  • ΠΌΠΎΠ΄ΡƒΠ»ΡŒ унивСрсалСн для любого датасСта;
  • содСрТит API для использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ;
  • содСрТит мноТСство ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… строится pipeline (ΠΏΡ€Π΅Π΄ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкста, ΠΌΠΎΠ΄Π΅Π»ΠΈ для создания эмбСддингов, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ для эффСктивного сравнСния эмбСддингов, аугмСнтация тСкста для ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ pipeline);
  • Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… pipeline;
  • ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ благодаря ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ абстрактным классам.

Установка

pip install recs-searcher

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния

  1. Π‘ΠΎΠ±Π΅Ρ€Ρ‘ΠΌ pipeline:
from recs_searcher import (
    dataset,  # ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ датасСты
    preprocessing,  # ΠΏΡ€Π΅Π΄ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкста
    embeddings,  # ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста Π² эмбСддинги
    similarity_search,  # быстрыС поисковики Π² пространствС эмбСддингов
    augmentation,  # аугмСнтация тСкста для Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ²
    explain,  # интСрпрСтация сходства Π΄Π²ΡƒΡ… тСкстов
    api,  # Пайплайн
)

model_embedding = embeddings.CountVectorizerWrapperEmbedding(
    analyzer='char',
    ngram_range=(1, 2),
)

pipeline = api.Pipeline(
    dataset=['ΠšΡ€Π°ΡΠ½ΠΎΡΡ€ΡΠΊ', 'Москва', 'Владивосток'],
    preprocessing=[preprocessing.TextLower()],
    model=model_embedding,
    searcher=similarity_search.FaissSearch,
    verbose=True,
)
# Pipeline ready!
  1. Найдём 3 схоТих тСкстов Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ "ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ ярск":
pipeline.search('ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ ярск', 3, ascending=True)
# return: pandas.DataFrame

ДокумСнтация.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° API.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ WEB-интСрфСйса, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π½Π΅Π΄Ρ€Π΅Π½Π° данная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.

Автор