如何获得princeton WN感觉id给出一个感觉偏移? Python的NLTK

时间:2013-03-14 07:05:57

标签: python nlp nltk wordnet corpus

我可以从NTLK语料库中标记的普林斯顿WN意义上获得感觉偏移:

[in]:'dog.n.01'
>>> from nltk.corpus import wordnet as wn
>>> ss = wn.synset('dog.n.01')
>>> offset = str(ss.offset).zfill(8)+"-"+ss.pos
>>> print offset
[out]:'02084071-n'

该偏移量类似于http://casta-net.jp/~kuribayashi/cgi-bin/wn-multi.cgi?synset=02084071-n&lang=eng

中使用的惯例

如何在不循环整个wordnet语料库的情况下进行反向操作?其中:

[in]: '02084071-n'
[out]: 'dog.n.01' or Synset('dog.n.01')

我可以做到这一点,但它太长了太多冗余周期:

[in]: '02084071-n'
in_offset, in_pos = "02084071-n".split("-")
from nltk.corpus import wordnet as wn
nltk_ss = [i for i in wn.all_synsets() if i.offset == int(in_offset) and i.pos == in_pos][0]
print nltk_ss
[out]: Synset('dog.n.01')

1 个答案:

答案 0 :(得分:3)

不幸的是,如果不至少迭代一次语料库就不能反向查找(就像你所示)。如果你要多次根据偏移量查找同义词,我唯一可以建议的就是将它保存在字典中。

>>> senseIdToSynset = {s.offset:s for s in wn.all_synsets()}
>>> senseIdToSynset[2084071]
Synset('dog.n.01')