xxleyi / learning_list

聚集自己的学习笔记
11 stars 3 forks source link

公共上位词 #272

Open xxleyi opened 3 years ago

xxleyi commented 3 years ago

看到即友发问:有没有工具可以查询到几个单词的公共上位词? 评论区有人指出方法:wordnet 数据库

经过查询和调试,发现有成熟 Python 数据库以及相关问答:https://stackoverflow.com/questions/45289133/find-lowest-common-hypernym-given-multiple-words-in-wordsnet-python

虽然比较低效,但对付几个单词,应该绰绰有余了 :-)


# pip install nltk
# 下载数据包,需要外网环境
# python3 -c "import nltk; nltk.download('wordnet')"

from nltk.corpus import wordnet as wn

words = ['apple', 'orange', 'pear']
senses = set(map(lambda word: wn.synsets(word)[0], words))

while len(senses) > 1: 
    senses = {s1.lowest_common_hypernyms(s2)[0] for s1 in senses for s2 in senses if s1 != s2}

if senses: print(list(senses)[0].lemma_names()[0])
else: print('nothing')