如何在wordnet层次结构中使用python nltk找到两个synset之间的距离?

时间:2014-02-26 04:45:15

标签: python nlp nltk wordnet

假设我有两个synset synset(car.n.01')和synset('bank.n.01')并且如果我想在wordnet层次结构中找到这两个synset之间的距离那么我该如何使用它NLTK?
我在互联网上搜索但是我得到了类似lin,resnik,jcn等的相似算法,这些算法不能解决我的问题 请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

来自this

路径相似性,wup_similarity和lch_similarity ,所有这些都应该有效,因为它们基于Wordnet层次结构中两个同义词集之间的距离。

dog = wn.synset('dog.n.01')
cat = wn.synset('cat.n.01')

dog.path_similarity(cat)

dog.lch_similarity(cat)

dog.wup_similarity(cat)

<小时/> 来自同一链接,(粗体相关部分)

<强> synset1.path_similarity(synset2):

  

返回表示相似程度的分数   两个词的意思是,基于连接的最短路径   感觉是is-a(上位词/ hypnoym)分类法。得分在   范围0到1,除了那些无法找到路径的情况(将   只有动词是真的,因为有许多不同的动词分类法)   返回哪个案例-1。得分为1代表身份,即   将感觉与自身进行比较将返回1.


synset1.lch_similarity(synset2),Leacock-Chodorow相似度:

  

返回a   得分表示两个词的感觉有多相似,基于最短的   连接感官的路径(如上所述)和最大深度   感官发生的分类学。这种关系如下   -log(p / 2d)其中p是最短路径长度,d是分类深度。


synset1.wup_similarity(synset2),Wu-Palmer相似度:

  

返回分数   表示两个词的感觉有多相似,基于深度   分类学中的两种意义和他们的最不共同的潜意识者   (最具体的祖先节点)。注意此时给出的分数   总是同意Pedersen的Perl给出的那些   实现Wordnet相似性。

答案 1 :(得分:0)

此外,您可以查看chatterbot实现。

"chatterbot comparison class"

您将在该文件中找到更多距离处理