使用python nltk查找两个网页之间的相似性?

时间:2011-06-06 12:47:27

标签: python nlp nltk wordnet

我想找出两个网页是否相似。有人可以建议如果python nltk与wordnet相似性功能有用,如何?在这种情况下使用的最佳相似度函数是什么?

2 个答案:

答案 0 :(得分:14)

joyceschan 提到的spotsigs论文解决了内容重复检测问题,它包含了大量值得思考的内容。

如果您正在寻找关键术语的快速比较,nltk标准函数可能就足够了。

使用nltk,您可以通过查找 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

此方法为您提供了一种快速方法,可以确定所使用的术语是否与相关概念相对应。请查看Natural Language Processing with Python,了解您可以采取哪些其他措施来帮助您分析文字。

答案 1 :(得分:1)

考虑实施Spotsigs