4

こんにちは Stackoverflow コミュニティ

Python NLTK をいじり始めたばかりで、Wordnet モジュールに注意を向けました。

特定のレンマのセンス 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

レンマまたはシンセットを指定してセンスキーを取得する方法について、誰かが私を正しい方向に向けることができるかどうか疑問に思っていますか?

どんなアドバイスでも大歓迎です!

4

3 に答える 3

4

との違いについては、https://stackoverflow.com/a/27518899/610569をご覧ください。Synset.lemmas()[0].keySynset.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'

02084071-nOMW インターフェースでオフセット + pos キー (例: ) を検索すると、 http ://compling.hss.ntu.edu.sg/omw/cgi-bin/wn-gridx.cgi?gridmode=grid で適切な視覚化が得られます。 synset のページ。

于 2016-06-13T11:26:55.620 に答える
1

このモジュールの例を見ると、たとえばhttp://www.nltk.org/howto/wordnet.htmllemmasあるのはメソッドです。つまり、その後に () を付けて呼び出す必要があります。次に例を示します。

s = wn.synset('skill.n.01')
s.lemmas() # >>> [Lemma('skill.n.01.skill'), ... ]

次に、次のように戻り値にアクセスできます。

s.lemmas()[0].key # >>> 'skill%1:09:01::'

TypeError: 'method' object is not subscriptableエラー メッセージは、メソッドまたは関数をリストのように処理しようとしていることを示しています。そのようなエラーが表示された場合は、[0] などの関数である可能性があるものを探してください。

于 2016-06-05T16:14:02.407 に答える
-1

だから私はそれを理解しました。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 はセンス キーを正常に返します。

最初に正しい方向に私を向けてくれてありがとう@buteillebleu。

M

于 2016-06-06T13:15:01.653 に答える