nmi*_*nmi 5 similarity nltk wordnet
我已经看到,对于动词,NLTK中的WordNet相似性度量有时会返回"无",但我理解这不应该发生在其他词性上.看一下代码,似乎很清楚,在任何其他词性中两个词之间没有关系的地方应该产生-1,而不是"无".但是我得到了这个结果:
>>> from nltk.corpus import wordnet as wn
>>> plodding1 = wn.synset('plodding.a.01')
>>> for sense in wn.synsets('unsteady','a'):
print sense.name, sense.path_similarity(plodding1)
unsteady.a.01 None
unfirm.s.01 None
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
小智 10
WordNet中的形容词没有按层次结构排列,因此最短路径不适用于形容词.副词也是如此.对形容词和副词有效的唯一措施是相关性度量,如lesk度量.WordNet中的动词被组织成层次结构,但是它们中有很多并且它们相当"短",所以有时你无法在动词之间找到路径(因为它们可能属于不同的动词层次结构).一般来说,你可以找到名词之间的最短路径,因为它们属于一个大名词层次结构(至少从WordNet 3.0开始).
我希望这有帮助.关于这些问题的更多讨论也可以在WordNet :: Similarity列表中找到(它不是NLTK的一部分,而是一个独立的Perl包来完成这些测量).http://wn-similarity.sourceforge.net
祝你好运,泰德
您正在比较的特定同义词集在其分类中似乎没有“最短路径”。如果将“unsteady”的所有同义词集与“plodding”的所有同义词集进行比较,您确实会发现一些路径相似之处。
我尝试了更通用的:
from nltk.corpus import wordnet as wn
sy1 = wn.synsets('plodding')
sy2 = wn.synsets('unsteady')
for s in sy1:
for t in sy2:
print "%s\t %s\t :%s" % (s.name,t.name,wn.path_similarity(s,t))
Run Code Online (Sandbox Code Playgroud)
我得到:
drudgery.n.01 unsteady.a.01 :None
drudgery.n.01 unfirm.s.01 :None
plodding.n.02 unsteady.a.01 :None
plodding.n.02 unfirm.s.01 :None
slog.v.02 unsteady.a.01 :0.2
slog.v.02 unfirm.s.01 :0.2
leaden.s.04 unsteady.a.01 :None
leaden.s.04 unfirm.s.01 :None
Run Code Online (Sandbox Code Playgroud)
希望有帮助。
| 归档时间: |
|
| 查看次数: |
3059 次 |
| 最近记录: |