【问题标题】:How to get the princeton WN sense id given a sense offset? Python-NLTK如何在给定感测偏移的情况下获得普林斯顿 WN 感测 ID? Python-NLTK
【发布时间】:2013-03-14 07:05:56
【问题描述】:

我可以从 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')

【问题讨论】:

  • 这个问题已经回答了here
  • 谢谢,似乎唯一的方法是从打开的 WN 中读取或查看一整套同义词集

标签: python nlp nltk wordnet corpus


【解决方案1】:

不幸的是,如果不迭代语料库至少一次(如您所展示的),您将无法反向查找。如果您要多次查找基于偏移量的同义词集,我唯一可以建议的是将其保存在字典中。

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

【讨论】:

  • 真的吗?只需要遍历整个 wordnet?!
猜你喜欢
  • 2018-10-15
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多