WordNet无法返回"South Korean"的Pertainym,升级至3.1仍无效
解决WordNet中带空格形容词的Pertainym查询报错问题
你遇到的问题确实是带空格的多词词汇输入格式不对导致的。WordNet里的多词lemma(比如"South Korean")是用下划线_代替空格来存储的,直接用空格输入会找不到对应的lemma。
正确的代码写法
直接把输入里的空格换成下划线即可:
from nltk.corpus import wordnet as wn input_lemma = "south_korean.a.01.south_korean" lemma = wn.lemma(input_lemma) # 获取Pertainym并输出 print([p.name() for p in lemma.pertainyms()]) # 输出: ['south_korea']
更稳妥的方式(避免手动拼错格式)
也可以先定位到对应的synset,再从中获取lemma,不用手动拼接标识符:
from nltk.corpus import wordnet as wn # 找到形容词词性的synset sk_synset = wn.synset("south_korean.a.01") # 获取该synset下的第一个lemma(这里只有一个) lemma = sk_synset.lemmas()[0] # 提取Pertainym print([p.name() for p in lemma.pertainyms()])
为什么单字形容词(如Chinese、Russian)没问题
因为这类单字词汇没有空格,你输入的格式和WordNet内部存储的完全一致,所以能正常匹配到lemma;而带空格的多词词汇必须统一用下划线替换空格,这是WordNet的标准存储规则。
内容的提问来源于stack exchange,提问作者KCpremo
相关产品推荐
相关产品推荐

