如何在 wordnet 中使用 hyper-/hyponyms 查找单词的抽象度?

How to find abstractness of a word using hyper-/hyponyms in wordnet?

我有2个词,比方说computertoolComputer 是具体名词,而 tool 是相对抽象的名词。 我想获得反映这一点的每个词的抽象程度。 我认为最好的方法是计算每个单词的 hyper/hypo nyms 数。

  1. 可能吗?
  2. 有更好的方法吗?

谢谢!

第一个问题是computer指的是什么意思?

在 WordNet 中,一个词有不同的 "concepts",即同义词集:

>>> from nltk.corpus import wordnet as wn

>>> wn.synsets('computer')
[Synset('computer.n.01'), Synset('calculator.n.01')]

>>> wn.synsets('computer')[0].definition()
'a machine for performing calculations automatically'
>>> wn.synsets('computer')[1].definition()
'an expert at calculation (or at operating calculating machines)'

和hyper/hyponyms没有连接到单词computer

hyper/hyponyms 也是概念,即同义词集,因此它与 form/word 无关,而是与可能由单词 computer 表示的同义词集相关联,即

>>> type(wn.synsets('computer')[0])
<class 'nltk.corpus.reader.wordnet.Synset'>

>>> wn.synsets('computer')[0].hypernyms()
[Synset('machine.n.01')]

>>> wn.synsets('computer')[0].hyponyms()
[Synset('analog_computer.n.01'), Synset('digital_computer.n.01'), Synset('home_computer.n.01'), Synset('node.n.08'), Synset('number_cruncher.n.02'), Synset('pari-mutuel_machine.n.01'), Synset('predictor.n.03'), Synset('server.n.03'), Synset('turing_machine.n.01'), Synset('web_site.n.01')]

是的,这是很多信息,但我如何获得 hyper/hyponyms 的单词?

根据定义,单词应该有hyper/hyponyms?或者概念应该有hypo/hypernyms?

好吧,你把我带进了圈子...告诉我如何使用 hyper-/hyponyms 来查看一个词是否比另一个词更抽象!!!

好吧,那我们得做个假设。

  1. 让我们将通过 WordNet 访问的单词的所有同义词集视为任何单词形式的 "holistic" 概念

  2. 我们考虑所有 DIRECT hyper-/hyponyms 给定单词

  3. 的所有同义词集的总和
  4. 根据某种词形可以表示的所有同义词集的hyper-/hyponyms个数,我们推导出word X比more/less抽象=17=]

但是代码中的(1)、(2)、(3)怎么做呢?

>>> hypernym_count = lambda word: sum(len(ss.hypernyms()) for ss in wn.synsets(word)) 
>>> hyponym_count = lambda word: sum(len(ss.hyponyms()) for ss in wn.synsets(word)) 

>>> hyponym_count('computer')
14
>>> hypernym_count('computer')
2


>>> hypernym_count('tool')
8
>>> hyponym_count('tool')
32

由于 (3) 是您要检验的假设,如果一个词是 more/less 基于 hyponym_count 和 [=19 的摘要,则您应该决定要推断出什么启发式方法=] 结果

等一下,DIRECT hyper-/hyponyms 是什么?

我们只访问 hyper-/hyponyms 一级 above/below 同义词集。这就是 "direct" 在这里的意思。

然后如何获取同义词集下的所有下位词,参见

那么我应该使用直接或下面的所有下位词还是上面的所有上位词?

这是为了让您找出并告诉我们 =) 玩得开心!