python中的wordet synset

时间:2013-03-31 05:26:45

标签: python python-2.7 nltk wordnet

我在我的代码中使用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的synset相似度函数。我不想检查pos标签,因为上述错误的可能性很大。

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

1 个答案:

答案 0 :(得分:2)

您可以通过执行

获取任何给定单词的list个同义词集
>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('disbelieve')
[Synset('disbelieve.v.01')]

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