当我尝试打印上位词时,我只是想要这个词而不是关于这个词的所有信息。Differnt Nltk,wordnet hypernym输出需要
pp = wn.synset('grow.v.01')
pp1= pp.hypernyms()
print pp1
我的输出是[Synset('change.v.02')]。我只想“改变”。我需要做什么改变?对不起,我是wordnet的新手。
当我尝试打印上位词时,我只是想要这个词而不是关于这个词的所有信息。Differnt Nltk,wordnet hypernym输出需要
pp = wn.synset('grow.v.01')
pp1= pp.hypernyms()
print pp1
我的输出是[Synset('change.v.02')]。我只想“改变”。我需要做什么改变?对不起,我是wordnet的新手。
您可以使用Synset
对象的lemma_names
函数。 记住它返回的名称列表,你可以选择一个你感到满意的名字(在这种情况下,它只有1个结果'更改')。
>> print(pp1[0].lemma_names())
['change']
还呼吁hypernyms()
也将返回一个列表,所以我用pp1[0]
。例如查询'狗'返回[dog, frump, cad...]
等。如果您想要获取所有上位词的所有lemma_names
,则可以使用列表理解。
>> [s.lemma_names() for s in wn.synsets('dog')]
[['dog', 'domestic_dog', 'Canis_familiaris'],
['frump', 'dog'],
['dog'],
...
['chase', 'chase_after', 'trail', 'tail', 'tag', 'give_chase', 'dog', 'go_after', 'track']]
感谢,带有打印内容(PP1 [0] .lemma_names ()),我得到输出[u'change'],'你'是什么意思,为什么它与你的不同?这是一个wordnet版本问题或其他什么? –
@codeninja'u'关键字表示它是一个'unicode'字符串。我在python 3上写了我的回复,其中文字字符串被* default *编码为'unicode',因此是差异。无论如何,它只是如何在控制台上表现出来,不应该对你有所帮助,你正在处理'change','u'只是显示它的编码。 (如果你打印列表的成员,即:print(pp1 [0] .lemma_names()[0])'我相信它应该在python 2中没有unicode关键字的情况下打印出来) – umutto
参见https://stackoverflow.com/questions/27517924/extract-word-from-synset-using-wordnet-in-nltk-3-0 – alvas