1

semcor コーパス ( http://www.cse.unt.edu/~rada/downloads.html ) から、新しいバージョンのワードネットにマッピングされていない感覚があります。そして魔法のように、マッピングは NLTK WordNet API で次のように見つけることができます。

>>> from nltk.corpus import wordnet as wn
# Emunerate the possible senses for the lemma 'delayed'
>>> wn.synsets('delayed')
[Synset('delay.v.01'), Synset('delay.v.02'), Synset('stay.v.06'), Synset('check.v.07'), Synset('delayed.s.01')]
>>> wn.synset('delay.v.01')
Synset('delay.v.01')
# Magically, there is a 0th sense of the word!!!
>>> wn.synset('delayed.a.0')
Synset('delayed.s.01')

コードと API を確認しました ( http://nltk.googlecode.com/svn/trunk/doc/api/nltk.corpus.reader.wordnet.Synset-class.htmlhttp://nltk.org/ _modules/nltk/corpus/reader/wordnet.html ) しかし、存在しないはずの魔法のようなマッピングをどのように行ったのかわかりません (たとえば、delayed.a.0->の場合delayed.s.01)。

NLTK Wordnet API コードのどの部分が魔法のマッピングを行っているか知っている人はいますか?

4

1 に答える 1

4

それは私が推測するバグです。wn.synset('delayed.a.0')メソッドの最初の 2 行を実行すると、次のようになります。

lemma, pos, synset_index_str = name.lower().rsplit('.', 2)
synset_index = int(synset_index_str) - 1

したがって、この場合の値はsynset_index-1Python で有効なインデックスです。lemmaまた、 isdelayedおよびposisである synset の配列を検索しても失敗しませんa

この動作を使用すると、次のようなトリッキーなことを実行できます。

>>> wn.synset('delay.v.-1')
Synset('stay.v.06')
于 2013-08-28T19:43:15.110 に答える