我正在使用nltk的wordnet API.当我将一个synset与另一个synset进行比较时,我得到了None
但是当我比较它们时,我得到一个浮点值.
他们不应该给出相同的价值吗?有解释还是这是wordnet的错误?
例:
wn.synset('car.n.01').path_similarity(wn.synset('automobile.v.01')) # None
wn.synset('automobile.v.01').path_similarity(wn.synset('car.n.01')) # 0.06666666666666667
Run Code Online (Sandbox Code Playgroud) 使用几种内置的相似性度量可以轻松地计算WordNet中两个同义词集之间的语义相似性,例如:
synset1.path_similarity(synset2)
Run Code Online (Sandbox Code Playgroud)
synset1.lch_similarity(synset2)
,Leacock-Chodorow相似度
synset1.wup_similarity(synset2)
,吴帕尔默相似
然而,所有这些都利用了WordNet的分类关系,这些关系是名词和动词的关系.形容词和副词通过同义词,反义词和属性相关联.如何衡量两个形容词之间的距离(跳数)?
我尝试过path_similarity()
,但正如预期的那样,它会返回'None'
:
from nltk.corpus import wordnet as wn
x = wn.synset('good.a.01')
y = wn.synset('bad.a.01')
print(wn.path_similarity(x,y))
Run Code Online (Sandbox Code Playgroud)
如果有任何方法来计算一个形容词与另一个形容词之间的距离,那么指出它将会非常感激.