用WordN计算距离

2024-09-28 03:22:57 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python3.5、NLTK和WordNet(最新版本),我在计算单词“continuous”和“continuous”的所有synset对之间的wup_nality()。尽管这两个词的简单英语意思看起来很相似,但每个距离都是“无”。我还注意到这些词的词性分别是“形容词”和“形容词卫星”。在

计算失败是因为词性不同吗? 有没有办法把这两个词类结合起来以避免这个问题?在

先谢谢你。我的代码片段如下所示。在

import nltk
from nltk.corpus import wordnet as wn
sl1 = wn.synsets("continuous")
sl2 = wn.synsets("ongoing")
for x in sl1:
    for y in sl2:
        print(x, y, x.wup_similarity(y))

Tags: inimport版本forwordnetcontinuousnltk词性
1条回答
网友
1楼 · 发布于 2024-09-28 03:22:57

不应该有任何“失败”,就像在提出类似的错误。在

但是它会返回None,例如

from nltk.corpus import wordnet as wn
sl1 = wn.synsets("dog")
sl2 = wn.synsets("cat")
for x in sl1:
    for y in sl2:
        print(x, y, x.wup_similarity(y))

[出来]:

^{pr2}$

你可以简单地检查无,然后把它赋值为零

sl1 = wn.synsets("dog")
sl2 = wn.synsets("cat")
for x in sl1:
    for y in sl2:
        score = x.wup_similarity(y)
        score = score if score else 0
        print(x, y, score)

[出来]:

Synset('dog.n.01') Synset('cat.n.01') 0.8571428571428571
Synset('dog.n.01') Synset('guy.n.01') 0.631578947368421
Synset('dog.n.01') Synset('cat.n.03') 0.631578947368421
Synset('dog.n.01') Synset('kat.n.01') 0.25
Synset('dog.n.01') Synset('cat-o'-nine-tails.n.01') 0.42105263157894735
Synset('dog.n.01') Synset('caterpillar.n.02') 0.4
Synset('dog.n.01') Synset('big_cat.n.01') 0.8571428571428571
Synset('dog.n.01') Synset('computerized_tomography.n.01') 0.1
Synset('dog.n.01') Synset('cat.v.01') 0
Synset('dog.n.01') Synset('vomit.v.01') 0
Synset('frump.n.01') Synset('cat.n.01') 0.48
Synset('frump.n.01') Synset('guy.n.01') 0.5714285714285714
Synset('frump.n.01') Synset('cat.n.03') 0.5714285714285714
Synset('frump.n.01') Synset('kat.n.01') 0.4

相关问题 更多 >

    热门问题