我正在尝试使用 python nltk 的 wordnet 来查找两个单词之间的相似性。两个示例关键字是“游戏”和“莱昂纳多”。首先,我提取了这两个词的所有同义词集并交叉匹配每个同义词集以找到它们的相似性。这是我的代码
from nltk.corpus import wordnet as wn
xx = wn.synsets("game")
yy = wn.synsets("leonardo")
for x in xx:
for y in yy:
print x.name
print x.definition
print y.name
print y.definition
print x.wup_similarity(y)
print '\n'
这是总输出:
game.n.01 用规则确定获胜者的竞赛 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才 (1452-1519) 0.285714285714
game.n.02 一项运动或其他比赛的单场比赛 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才 (1452-1519) 0.285714285714
game.n.03 娱乐或消遣 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才(1452-1519)0.25
game.n.04 为食物或运动而猎杀的动物 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才 (1452-1519) 0.923076923077
game.n.05(网球)比赛的一个部门,其中一名球员为 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师服务;意大利文艺复兴时期最多才多艺的天才(1452-1519)0.222222222222
game.n.06(比赛)特定点的得分或获胜所需的得分 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才 (1452-1519) 0.285714285714
game.n.07 用于食用的野生动物的肉 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才(1452-1519)0.5
plot.n.01 做某事的秘密计划(尤其是秘密或非法的) leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才(1452-1519)0.2
game.n.09 玩特定游戏所需的游戏设备 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才 (1452-1519) 0.666666666667
game.n.10 你的职业或工作 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才(1452-1519)0.25
game.n.11 轻浮或琐碎的行为 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才(1452-1519)0.222222222222
bet_on.v.01 押注 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才(1452-1519)-1
crippled.s.01 脚或腿残疾 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才(1452-1519)-1
game.s.02 愿意面对危险 leonardo.n.01 意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才(1452-1519)-1
但是 game.n.04 和 leonardo.n.01 之间的相似之处真的很奇怪。我认为相似度(0.923076923077)不应该那么高。
游戏.n.04
为食物或运动而猎杀的动物
莱昂纳多.n.01
意大利画家、雕塑家、工程师、科学家和建筑师;意大利文艺复兴时期最多才多艺的天才(1452-1519)
0.923076923077
我的概念有问题吗?