0

wordnet.synset()在我的代码中使用函数

>>> cb = wordnet.synset('fever.n.01')
>>> cb
Synset('fever.n.01')

>>> cb = wordnet.synset('disbelieve.n.01')

Traceback (most recent call last):
  File "<pyshell#60>", line 3, in <module>
    cb = wordnet.synset('disbelieve.n.01')
  File "C:\Python27\lib\site-packages\nltk\corpus\reader\wordnet.py", line 1016, in synset
    raise WordNetError(message % (lemma, pos))
WordNetError: no lemma 'disbelieve' with part of speech 'n'

>>> cb = wordnet.synset('disbelieve.v.01')
>>> cb
Synset('disbelieve.v.01')

'disbelieve.v.01' 存在于 wordnet 中。但是 nltk.pos_tag 将其标记为名词。

>>> import nltk
>>> tagged = nltk.pos_tag('disbelieve')
>>> tagged
[('disbelieve', 'NN')]

展望未来,我将使用 wordnet 的同义词集相似度函数。我不想检查 pos 标签,因为很有可能出现上述错误。

所以我想知道nltk中是否有任何函数可以检查wordnet中是否存在以(比如'disbelieve')开头的单词,然后获取单词的完整wordnet存储形式(即'disbelieve.v.01')

4

1 回答 1

2

您可以通过以下方式获得list任何给定单词的同义词集,

>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('disbelieve')
[Synset('disbelieve.v.01')]

一个想法可能是偏爱那些 POS 标签与您的标注器匹配的同义词集,否则只需选择列表中的第一个。

于 2013-03-31T05:39:35.700 回答