如何在wordnet中使用超级/ hyponyms查找单词的抽象性?

问题描述 投票:1回答:1

我有2个字,假设computertoolComputer是一个具体名词,而tool相对抽象。我想获得每个单词的抽象程度,以反映这一点。我认为最好的方法是通过计算每个单词的高/低位假名的数量。

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

谢谢!

python nlp nltk wordnet
1个回答
0
投票

第一个问题是您指的是computer的含义?

在WordNet中,一个单词具有不同的“概念”,又名同义词集:

>>> 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)'

并且超级/同义词未与单词computer连接

[hyper / hyponyms]是概念,也就是同义词集,因此它与形式/单词无关,但与可能由单词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 / hypernyms?

好吧,你是把我带到圈子里来。。。只是告诉我如何使用超-/缩写来查看一个单词是否比另一个单词更抽象!!

好的,那么我们必须做一些假设。

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

  2. [我们考虑给定单词的所有同义词集的所有DIRECT超/同义词的总和

  3. 基于可以由某个单词形式表示的所有同义词集的超-/同义词的数量,我们推论出word Xword Y更具抽象性//不具有抽象性]] >>

    但是如何执行代码中的(1),(2)和(3)?

  4. >>> 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)是您要检验的假设,因此您应该根据hyponym_counthypernym_count的结果来决定如果一个单词是多或少抽象的话,应该推论得出的启发式方法

请稍等,DIRECT的超/小写字母是什么?

我们仅访问在同义词集之上/之下一级的超-/////////////////////////。这就是“直接”在这里的意思。

然后如何获取同义词下方的所有下位词,请参见https://stackoverflow.com/a/42012001/610569

所以我应该在下面使用直接或所有下位字母,还是在上面使用所有所有上位字母?

这是供您查找并告诉我们=)玩得开心!

© www.soinside.com 2019 - 2024. All rights reserved.