Сравните две фразы с помощью WordNet?

Я пытаюсь сравнить семантику двух фраз. В Python я использую nltk и difflib. Сначала я удаляю стоп-слова из фраз, затем использую WordNetLemmatizer и PorterStemmer для нормализации слов, затем сравниваю остальное с SequenceMatcher из difflib. Я все еще думаю, что есть гораздо лучший способ, чем использование difflib. Любое предложение или предложение? Есть ли какая-нибудь библиотека, которая использует Wordnet для сравнения фраз? Я правильно делаю шаги?


person Rami    schedule 07.05.2014    source источник


Ответы (1)


Короче говоря, нет, вы не можете использовать такую ​​семантику с NLTK. А использовать Wordnet просто не получится, потому что большинство предложений содержат слова, которых нет в базе данных. Текущий способ аппроксимации сентенциальной семантики включает методы распределения (модели словесного пространства).

Если вы программист на Python, scikit-learn и Gensim предоставят вам необходимую функциональность с помощью скрытого семантического анализа (LSA, LSI) и скрытого распределения Дирихле (LDA). См. ответы на предыдущий вопрос. В Java я бы посоветовал вам попробовать отличный пакет S-Space.

Однако большинство моделей дадут вам строго словесное представление. Объединение семантики слов в более крупные структуры гораздо сложнее, если только вы не предполагаете, что фразы и предложения представляют собой наборы слов (и, таким образом, упуская из виду разницу между, например, Мэри любит Кейт и Кейт любит Мэри.

person emiguevara    schedule 07.05.2014