如何得到普林斯顿WN的感应id以获得一个感应偏移量?Python

2024-06-15 04:04:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以从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语料库,我怎么做呢?其中:

^{pr2}$

我可以这样做,但这只是太长太多的冗余周期:

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

Tags: infromposimportascorpussswordnet
1条回答
网友
1楼 · 发布于 2024-06-15 04:04:24

不幸的是,如果不在语料库上至少迭代一次(如您所示),就无法反向查找。如果要多次查找基于偏移量的synsets,我唯一能建议的是将它保存在字典中。在

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

相关问题 更多 >