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