如何在 NLTK Python 的 WordNet 中获取 Sense Key?
How to get Sense Key in WordNet for NLTK Python?
嗨 Whosebug 社区
我刚刚开始研究 Python NLTK,并将注意力转向了 Wordnet 模块。
我正在尝试获取给定引理的 Sense Ky 并发现以下内容:
s = wn.synset('skill.n.01')
s.lemmas # >>> [Lemma('skill.n.01.skill'), ... ]
s.lemmas[0].key # >>> 'skill%1:09:01::'
但是,此实现似乎不再受支持。
Traceback (most recent call last):
File "C:/Users/Admin/PycharmProjects/momely/placementarchitect/testbench.py", line 59, in <module>
s.lemmas[0].key
TypeError: 'method' object is not subscriptable
我想知道是否有人能够指出我如何在给定引理或同义词集的情况下获得意义键的正确方向?
如有任何建议,我们将不胜感激!
如果您查看此模块的示例,例如在http://www.nltk.org/howto/wordnet.html中,lemmas
是一个方法——所以你需要在它后面加上()来调用它,例如:
s = wn.synset('skill.n.01')
s.lemmas() # >>> [Lemma('skill.n.01.skill'), ... ]
然后您可以像这样访问 return 值:
s.lemmas()[0].key # >>> 'skill%1:09:01::'
TypeError: 'method' object is not subscriptable
错误消息告诉您您正在尝试将方法或函数视为列表 - 当您看到类似的错误时,请查找您拥有 [0] 或类似内容的内容这可能是一个函数。
所以我想通了。在深入研究 NLTK 的 Wordnet API 之后,我注意到 API 似乎需要这样调用密钥:
s = wn.synset('skill.n.01')
print(s.lemmas) # >>> <bound method Synset.lemmas of Synset('skill.n.01')>
print(str(s.lemmas()[0]._key)) #>>>skill%1:09:01::
因此调用._key 成功returns Sense Key.
感谢@bouteillebleu 为我指明了正确的开始方向。
米
查看 了解 Synset.lemmas()[0].key
和 Synset.lemmas()[0].key()
之间的区别:
>>> from nltk.corpus import wordnet as wn
>>> wn.synset('dog.n.1')
Synset('dog.n.01')
>>> wn.synset('dog.n.1').lemmas()
[Lemma('dog.n.01.dog'), Lemma('dog.n.01.domestic_dog'), Lemma('dog.n.01.Canis_familiaris')]
>>> wn.synset('dog.n.1').lemmas()[0]
Lemma('dog.n.01.dog')
>>> wn.synset('dog.n.1').lemmas()[0].name()
u'dog'
# To retrieve Princeton WordNet style keys.
>>> wn.synset('dog.n.1').lemmas()[0].key()
u'dog%1:05:00::'
对于Open Multilingual WordNet,使用offset + pos键会更容易,例如:
>>> from nltk.corpus import wordnet as wn
>>> ss = wn.synset('dog.n.1')
>>> ss.offset()
2084071
>>> ss.pos()
u'n'
>>> '{}-{}'.format(str(ss.offset()).zfill(8), ss.pos())
'02084071-n'
在 OMW 界面上搜索偏移量 + pos 键(例如 02084071-n
):http://compling.hss.ntu.edu.sg/omw/cgi-bin/wn-gridx.cgi?gridmode=grid 将带您进入一个漂亮的 synset 可视化页面。
嗨 Whosebug 社区
我刚刚开始研究 Python NLTK,并将注意力转向了 Wordnet 模块。
我正在尝试获取给定引理的 Sense Ky 并发现以下内容:
s = wn.synset('skill.n.01')
s.lemmas # >>> [Lemma('skill.n.01.skill'), ... ]
s.lemmas[0].key # >>> 'skill%1:09:01::'
但是,此实现似乎不再受支持。
Traceback (most recent call last):
File "C:/Users/Admin/PycharmProjects/momely/placementarchitect/testbench.py", line 59, in <module>
s.lemmas[0].key
TypeError: 'method' object is not subscriptable
我想知道是否有人能够指出我如何在给定引理或同义词集的情况下获得意义键的正确方向?
如有任何建议,我们将不胜感激!
如果您查看此模块的示例,例如在http://www.nltk.org/howto/wordnet.html中,lemmas
是一个方法——所以你需要在它后面加上()来调用它,例如:
s = wn.synset('skill.n.01')
s.lemmas() # >>> [Lemma('skill.n.01.skill'), ... ]
然后您可以像这样访问 return 值:
s.lemmas()[0].key # >>> 'skill%1:09:01::'
TypeError: 'method' object is not subscriptable
错误消息告诉您您正在尝试将方法或函数视为列表 - 当您看到类似的错误时,请查找您拥有 [0] 或类似内容的内容这可能是一个函数。
所以我想通了。在深入研究 NLTK 的 Wordnet API 之后,我注意到 API 似乎需要这样调用密钥:
s = wn.synset('skill.n.01')
print(s.lemmas) # >>> <bound method Synset.lemmas of Synset('skill.n.01')>
print(str(s.lemmas()[0]._key)) #>>>skill%1:09:01::
因此调用._key 成功returns Sense Key.
感谢@bouteillebleu 为我指明了正确的开始方向。
米
查看 了解 Synset.lemmas()[0].key
和 Synset.lemmas()[0].key()
之间的区别:
>>> from nltk.corpus import wordnet as wn
>>> wn.synset('dog.n.1')
Synset('dog.n.01')
>>> wn.synset('dog.n.1').lemmas()
[Lemma('dog.n.01.dog'), Lemma('dog.n.01.domestic_dog'), Lemma('dog.n.01.Canis_familiaris')]
>>> wn.synset('dog.n.1').lemmas()[0]
Lemma('dog.n.01.dog')
>>> wn.synset('dog.n.1').lemmas()[0].name()
u'dog'
# To retrieve Princeton WordNet style keys.
>>> wn.synset('dog.n.1').lemmas()[0].key()
u'dog%1:05:00::'
对于Open Multilingual WordNet,使用offset + pos键会更容易,例如:
>>> from nltk.corpus import wordnet as wn
>>> ss = wn.synset('dog.n.1')
>>> ss.offset()
2084071
>>> ss.pos()
u'n'
>>> '{}-{}'.format(str(ss.offset()).zfill(8), ss.pos())
'02084071-n'
在 OMW 界面上搜索偏移量 + pos 键(例如 02084071-n
):http://compling.hss.ntu.edu.sg/omw/cgi-bin/wn-gridx.cgi?gridmode=grid 将带您进入一个漂亮的 synset 可视化页面。