如何通过意义偏移量获取普林斯顿WN意义ID?Python-NLTK
我可以从普林斯顿的WN(WordNet)词义中获取感知偏移量,这在NTLK语料库中有标记:
[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 个回答
3
很遗憾,你不能不遍历整个数据集就进行反向查找(就像你展示的那样)。我能给你的建议是,如果你需要多次根据偏移量查找同义词集,最好把它们放在一个字典里。
>>> senseIdToSynset = {s.offset:s for s in wn.all_synsets()}
>>> senseIdToSynset[2084071]
Synset('dog.n.01')