【问题标题】:Differnt Nltk, wordnet hypernym output needed不同的 Nltk,需要 wordnet 上位词输出
【发布时间】:2017-06-16 01:29:02
【问题描述】:

当我尝试打印上位词时,我只想要单词而不是单词的所有信息。

pp = wn.synset('grow.v.01')
pp1= pp.hypernyms()
print pp1

我的输出是 [Synset('change.v.02')]。我只想“改变”。我需要做什么改变?抱歉,我是 wordnet 新手。

【问题讨论】:

标签: python nltk wordnet hypernym


【解决方案1】:

您可以使用Synset 对象的lemma_names 函数。 请记住,它会返回名称列表,您可以选择您满意的一个(在这种情况下,它只有 1 个结果 'change')。

>> print(pp1[0].lemma_names())
['change']

同时调用hypernyms() 也会返回一个列表,因此我使用了pp1[0]。例如查询 'dog' 会返回 [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']]

【讨论】:

  • 谢谢,使用 print(pp1[0].lemma_names()),我得到输出 [u'change'],'u' 是什么意思,为什么它与你的不同?是 wordnet 版本问题还是其他问题?
  • @codeninja u 关键字表示它是一个unicode 字符串。我在 python 3 上写了我的回复,其中文字字符串被 default 编码为unicode,因此有所不同。无论如何,它只是在控制台上的表示方式,对您没有任何影响,您正在处理changeu 只是向您显示它的编码。 (如果您打印列表中的一个成员,即:print(pp1[0].lemma_names()[0]) 我相信它也应该在没有 python 2 中的 unicode 关键字的情况下打印出来)
猜你喜欢
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 2023-03-11
  • 2013-02-26
  • 1970-01-01
  • 2013-10-16
相关资源
最近更新 更多