7

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

4

2 回答 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 回答