2011-06-06 28 views
7

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

+1

NLTK很有用。看一看(开源)O'Reilly的书 - 它发布在nltk.org上,如果你无法找到/提供打印版本。这应该指向正确的方向,因为它涵盖了NLTK可以完成的大部分工作。 – winwaed 2011-06-06 13:08:57

+0

[链接到Python 2书为了方便](http://www.nltk.org/book_1ed/) - 他们目前正在为Python 3和NLTK 3修改版本 – Ksofiac 2017-06-14 20:53:30

+0

[link to Python 3 book](http: //www.nltk.org/book/) – Ksofiac 2017-06-15 14:02:49

回答

14

通过joyceschan地址内容重复检测中提到的spotsigs纸,它含有大量的深思。

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

有了你可以通过查找同义词集载拉你项的同义词nltk通过共发现

>>> 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') 

菜谱建议吴帕尔默相似方法

>>> d.wup_similarity(g) 
0.93333333333333335 

该方法为您提供了一种快速确定所用术语是否对应于相关概念的方法。看看Natural Language Processing with Python看看你还能做些什么来帮助你分析文本。

+0

感谢队友,这是有帮助的。但是,使用这些东西,我可以找到一对单词之间的相似性,但我怎么做的句子。 – station 2011-06-07 12:26:00

+1

哇!这比性或冰淇淋好! – 2011-06-07 14:26:10

+1

@ user567797没有问题。本文概述了测量两个句子之间语义相似度的算法。 http://www.google.com/url?sa=t&source=web&cd=2&ved=0CCYQFjAB&url=http%3A%2F%2Fwordnetdotnet.googlecode。COM%2Fsvn%2Ftrunk%2FProjects%2FThanh%2FPaper%2FWordNetDotNet_Semantic_Similarity.pdf&RCT = J&Q =相似性%20sentences&EI = XEruTanSLcXegQetyeSVDw&USG = AFQjCNF9fWcVrWZ4_cBZcfW_p7fFxaL_1A&SIG2 = qY7LW7YWGzNXMhOOPS5Llw及CAD = RJA – 2011-06-07 16:00:32

1

考虑实施Spotsigs

相关问题