Задание NLP
Необходимо реализовать алгоритм, определяющий смысловую схожесть двух текстов небольшой длины (до 50 слов). Для тестирования результатов и/или обучения заказчик рекомендовал использовать датасет ParaPhraser (http://paraphraser.ru/) Решение должно представлять из себя бинарный классификатор, принимающий на вход две фразы, а на выходе предоставляющий информация о схожести фраз. Решение должно быть реализовано в виде веб-сервиса на языке Python, разрешается использовать любые сторонние библиотеки.
В качестве результата необходимо предоставить исходные коды, желательно выложить GitHub, Bitbucket.
Решение:
Для решения использовал transformers, PyTorch и предобученную модель SBERTA от Сбербанк. Сравнивал схожесть полученных векторов через коссинусное расстояние (cosine_similarity из sklearn.metrics.pairwise) Оформил решение на Flask. Понятно, что для продакшн потребовалось бы делать валидацию, выносить подключение sbert_large_nlu_ru в инициализатор Flask и сборку легкого docker-контейнера, но для тестового задания на junior data-scientist думаю этого может быть достаточно. Если бы входные данные были на английском языке, то для решения я бы использовал Spacy и решил задачу в три строки, без какого-либо вникания под капот.