используя python nltk, чтобы найти сходство между двумя веб-страницами? - PullRequest
7 голосов
/ 06 июня 2011

Я хочу узнать, похожи ли две веб-страницы или нет.Кто-нибудь может подсказать, полезен ли Python NLTK с функциями подобия Wordnet и как?Какую функцию подобия лучше всего использовать в этом случае?

Ответы [ 2 ]

14 голосов
/ 07 июня 2011

Бумага 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 , чтобы узнать, что еще вы можете сделать, чтобы помочь в анализе текста.

1 голос
/ 06 июня 2011

рассмотрим реализацию Spotsigs

...