Бумага spotigs , упомянутая joyceschan , предназначена для обнаружения дублирования контента и содержит много пищи для размышлений.
Если вы ищете быстрое сравнение ключевых терминов, может быть достаточно стандартных функций nltk
.
С помощью nltk
вы можете использовать синонимы ваших терминов, просматривая synsets , содержащиеся в WordNet
>>> from nltk.corpus import wordnet
>>> wordnet.synsets('donation')
[Synset('contribution.n.02'), Synset('contribution.n.03')]
>>> wordnet.synsets('donations')
[Synset('contribution.n.02'), Synset('contribution.n.03')]
Он понимает множественное число, а также говорит, какой части речи соответствует синоним
Synsets хранятся в дереве с более конкретными терминами на листьях и более общими терминами в корне. Корневые термины называются гиперными
Вы можете измерить сходство по тому, насколько близки термины к общему гиперным
Следите за различными частями речи, согласно поваренной книге NLTK, у них нет перекрывающихся путей, поэтому не следует пытаться измерить сходство между ними.
Скажем, у вас есть два условия пожертвование и подарок , вы можете получить их от synsets
, но в этом примере я инициализировал их напрямую:
>>> d = wordnet.synset('donation.n.01')
>>> g = wordnet.synset('gift.n.01')
Кулинарная книга рекомендует метод сходства Wu-Palmer
>>> d.wup_similarity(g)
0.93333333333333335
Этот подход позволяет быстро определить, соответствуют ли используемые термины связанным понятиям. Взгляните на Обработка естественного языка с Python , чтобы узнать, что еще вы можете сделать, чтобы помочь в анализе текста.