Подтвердить что ты не робот

Python: оценка семантического сходства для строк

Существуют ли библиотеки для вычисления оценок семантического подобия для пары предложений?

Я знаю семантическую базу WordNet и как я могу сгенерировать оценку для двух слов, но я ищу библиотеки, которые выполняют все задачи предварительной обработки, такие как удаление портов, прекращение удаления слова и т.д., в целом предложения и выводит оценку того, как связаны два предложения.

Я нашел работу, которая написана с использованием платформы .NET, которая вычисляет счет, используя массив шагов предварительной обработки. Есть ли какой-нибудь проект, который делает это в python?

Я не ищу последовательность операций, которая помогла бы мне найти оценку (как просят здесь)
Я хотел бы реализовать каждый этап самостоятельно или склеить функции из разных библиотек, чтобы он работал для пар предложений, но мне это нужно в основном как инструмент для тестирования выводов по данным.


EDIT: Я подумывал об использовании NLTK и вычислении оценки для каждой пары слов, повторяющихся по двум предложениям, а затем сделал выводы из стандартного отклонения результатов, но я не знаю если это законная оценка сходства. Кроме того, это займет много времени для длинных строк.
Опять же, я ищу проекты/библиотеки, которые уже реализуют это разумно. Что-то, что позволяет мне сделать это:

import amazing_semsim_package
str1='Birthday party ruined as cake explodes'
str2='Grandma mistakenly bakes cake using gunpowder'

>>similarity(str1,str2)
>>0.889
4b9b3361

Ответ 1

Лучший пакет, который я видел для этого, - это Gensim, найденный на домашней странице Gensim. Я использовал его много раз, и в целом был очень доволен легкостью использования; он написан на Python и имеет удобное руководство учебник, чтобы вы начали, что сравнивает 9 строк. Он может быть установлен через pip, поэтому у вас не будет много хлопот, чтобы установить его. Надеюсь.

Какой алгоритм скоринга вы используете, в значительной степени зависит от контекста вашей проблемы, но я бы предложил начать с функциональности LSI, если вы хотите что-то основное. (Это то, что учит вас.)

Если вы просмотрите учебник для gensim, он проведет вас через сравнение двух строк, используя функцию сходства. Это позволит вам увидеть, как ваши жало сравниваются друг с другом или с каким-либо другим укусом на основе текста, который они содержат.

Если вы интересуетесь наукой о том, как это работает, посмотрите эту статью.

Ответ 2

К сожалению, я не могу помочь вам с PY, но вы можете взглянуть на мой старый проект, который использует словари для выполнения семантических сравнений между предложениями (которые позже могут быть закодированы в PY, реализующем векторно-пространственный анализ). Для перевода с JAVA на PY должно быть всего несколько часов кодирования. https://sourceforge.net/projects/semantics/

Ответ 3

AFAIK самый мощный NLP-Lib для Python http://nltk.org/