我想找出两个网页是否相似。有人可以建议带有 wordnet 相似性函数的 python nltk 是否有用以及如何?在这种情况下使用的最佳相似度函数是什么?
问问题
6416 次
2 回答
14
Joyceschan提到的 spotigs 论文解决了内容重复检测问题,其中包含大量值得深思的内容。
如果您正在寻找关键术语的快速比较,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')]
它可以理解复数形式,还可以告诉您同义词对应的词性
同义词集存储在树中,在叶子处具有更具体的术语,在根处具有更通用的术语。词根称为上位词
您可以通过术语与常见上位词的接近程度来衡量相似度
注意不同的词性,根据 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看看你还能做些什么来帮助你分析文本。
于 2011-06-06T23:25:35.137 回答
1
考虑实施 Spotsig
于 2011-06-06T15:35:29.420 回答