Python: Семантическая оценка сходства для строк [дубликат]

На этот вопрос уже есть ответ здесь:

Как вычислить сходство между двумя текстовыми документами? 7 ответов

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

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

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

я не ищу последовательность операций, которая помогла бы мне найти счет (как просятздесь я'

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

РЕДАКТИРОВАТЬ: Я рассматривал вопрос об использовании NLTK и вычислении баллов для каждой пары слов, повторяемых в двух предложениях, а затем делал выводы из стандартного отклонения результатов, но я нене знаю, если этозаконная оценка сходства. Плюс этозаймет много времени для длинных струн.

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

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

>>similarity(str1,str2)
>>0.889
 alvas13 июн. 2013 г., 15:17
Для сравнения сходства предложений рассмотрим семантические модели на основе векторов или модели разложения матриц. Если нет, вы можете использовать косинус-косинус, который сначала векторизирует предложение, вычисляя косинус между двумя векторами.
 Andrew Scott Evans09 июл. 2015 г., 06:50
если вы хотите взвесить что-то в качестве отсечки или отчаянно нуждаетесь в счете, подумайте о NLTK 'Схожесть. Вам нужно будет использовать что-то вроде шаблона CLIPS, чтобы получить тип (глагол, существительное, прилагательное и т. Д.). Вы можете использовать это, чтобы найти идеальное количество категорий для LSA / LDA, как в gensim или нечеткой / косинусной реализации Kmeans.

Ответы на вопрос(3)

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

Решение Вопроса

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

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

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

Если ты'Вы заинтересованы в науке о том, как это работает, проверьтеЭта бумага.

 user847225 июн. 2013 г., 12:21
Это выглядит очень многообещающе. Спасибо за указание на это Джастин.
 user847211 июн. 2013 г., 07:40
NLTK имеет около 6 баллов за семантическое сходство между парой понятий слова, но яхочу сравнить две строки (из нескольких, может быть, сотен слов)

Ваш ответ на вопрос