Библиотека позволяет находить похожие на пользовательский ввод тексты из датасета.
Пользовательский ввод может содержать как орфографические, так и реестровые ошибки.
Рассмотрим самые частые ошибки:
- используются сокращения или полные формы слова:
«Литературный институт имени А.М. Горького»
||«Литературный институт им. А.М. Горького»
; - пропущены либо добавлены слова:
«Литературный институт имени А.М. Горького»
||«Институт имени А.М.Горького»
; - пропущены либо добавлены дополнительные символы:
«Сибирский федеральный университет»
||«Сибрский федерааальный универ»
; - слова могут быть в не правильном порядке:
Институт космических и информационных технологий
||Институт информационных и космических технологий
.
Данные проблемы помогает решить разработанный модуль recs-searcher (registry error correction system - searcher)
, основанный на известных NLP-алгоритмах.
- модуль универсален для любого датасета;
- содержит API для использования библиотеки;
- содержит множество подмодулей алгоритмов для оптимизации задачи, из которых строится pipeline (предобработка текста, модели для создания эмбеддингов, алгоритмы для эффективного сравнения эмбеддингов, аугментация текста для оценки обученного pipeline);
- возможность интерпретировать результаты обученных pipeline;
- масштабирование библиотеки благодаря имеющимся абстрактным классам.
pip install recs-searcher
- Соберём 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!
- Найдём 3 схожих текстов в базе данных на пользовательский ввод "Красный ярск":
pipeline.search('Красный ярск', 3, ascending=True)
# return: pandas.DataFrame
Более подробные примеры кода API.
Пример WEB-интерфейса, в который внедрена данная библиотека.
- Кобелев Максим — автор и единственный разработчик.