NLTK的WordNet中不完整的synset上位词列表?

时间:2018-01-31 15:13:41

标签: python nlp nltk wordnet

在尝试通过WN NLTK的界面恢复任何给定的WordNet synset的上位词时,我得到了我认为与WN的网络搜索界面不同的结果。例如:

from nltk.corpus import wordnet as wn
bank6ss = wn.synsets("bank")[5]  # 'bank' as gambling house funds
bank6ss.hypernyms()
# returns [Synset('funds.n.01')]

也就是说,只找到一个上位词(没有找到其他上位词,例如instance_hypernyms())。但是,在查看WN's web interface时,这种“银行”感觉如何。列出了"直接hypernym":

下的其他几个上位词
funds, finances, monetary resource, cash in hand, pecuniary resource

什么可以解释这种差异,我怎样才能在NLTK的WordNet中获得更长的上位词列表?

我的NLTK安装中使用的WordNet版本是3.0。

1 个答案:

答案 0 :(得分:1)

我刚刚意识到我正在研究两种不同类型的输出:NLTK WordNet中返回的是一个hypernym synset Synset['funds.n.01'])而网络中的上位词列表interface由属于该synset的 lemmas 组成。

为了完全回答这个问题,这个引理列表可以在NLTK中恢复,如下所示:

from nltk.corpus import wordnet as wn
bank6ss = wn.synsets("bank")[5]  # 'bank' as gambling house funds
hn1ss = bank6ss.hypernyms()[0]
hn1ss.lemmas()
# returns [Lemma('funds.n.01.funds'), 
#   Lemma('funds.n.01.finances'),
#   Lemma('funds.n.01.monetary_resource'), 
#   Lemma('funds.n.01.cash_in_hand'),
#   Lemma('funds.n.01.pecuniary_resource')]

或者,如果只引起引理名称:

hn1ss.lemma_names()
# returns [u'funds',
#   u'finances',
#   u'monetary_resource',
#   u'cash_in_hand',
#   u'pecuniary_resource']