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