、WordNetのインデックスantonymy
補題レベルでの関係の代わりに、Synset(http://wordnetweb.princeton.edu/perl/webwn?o2=&o0=1&o8=1&o1=1&o7=&o5=&o9=&o6=&o3=&o4=&s=good&i=8&h=00001000000000000000000000000000#cを参照)、その質問はSynsets
とLemmas
は、多対多を持っているか、1対1の関係かどうかです。曖昧な言葉の場合
、一つの単語の多くの意味を、我々は、例えば、文字列対Synset
の間に1対多の関係を持っています
>>> dog = wn.synset('dog.n.1')
>>> dog.definition()
u'a member of the genus Canis (probably descended from the common wolf) that has been domesticated by man since prehistoric times; occurs in many breeds'
>>> dog.lemma_names()
[u'dog', u'domestic_dog', u'Canis_familiaris']
:1つの意味/コンセプト、複数の表現の場合
>>> wn.synsets('dog')
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]
、我々は(文字列補題名を参照)
Synset
-to-文字列の間に1対多の関係を持っています
注:までは、
Synsets
ではなく
Lemmas
と
Synsets
の関係を比較しています。
Lemma
オブジェクトの
_name
プロパティは、Unicode文字列ではなく、リストを返します
>>> wn.synsets('dog')
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]
>>> wn.synsets('dog')[0]
Synset('dog.n.01')
>>> wn.synsets('dog')[0].definition()
u'a member of the genus Canis (probably descended from the common wolf) that has been domesticated by man since prehistoric times; occurs in many breeds'
>>> wn.synsets('dog')[0].lemmas()
[Lemma('dog.n.01.dog'), Lemma('dog.n.01.domestic_dog'), Lemma('dog.n.01.Canis_familiaris')]
>>> wn.synsets('dog')[0].lemmas()[0]
Lemma('dog.n.01.dog')
>>> wn.synsets('dog')[0].lemmas()[0].name()
u'dog'
:
「かわいい」事がLemma
と文字列が1対1の関係を有することです。コードポイントから:https://github.com/nltk/nltk/blob/develop/nltk/corpus/reader/wordnet.py#L202とhttps://github.com/nltk/nltk/blob/develop/nltk/corpus/reader/wordnet.py#L444
そして、補題はSynsetと1対1の関係にあるようです。 https://github.com/nltk/nltk/blob/develop/nltk/corpus/reader/wordnet.py#L220でのdocstringから:
補題は、同じ名前のメソッドを介してアクセス属性::
だから我々はこれを行うと、何とか各Lemma
オブジェクトは私たちだけ1つのsynset返すために起こっていることを知ることができる:あなたには、いくつかの感情分析をやろうとしていると仮定すると
>>> wn.synsets('dog')[0].lemmas()[0]
Lemma('dog.n.01.dog')
>>> wn.synsets('dog')[0].lemmas()[0].synset()
Synset('dog.n.01')
をし、 WordNetであらゆる形容詞の反意語が必要な場合は、反意語のシンクセットを受け入れるためにこれを簡単に行うことができます:
>>> from nltk.corpus import wordnet as wn
>>> all_adj_in_wn = wn.all_synsets(pos='a')
>>> def get_antonyms(ss):
... return set(chain(*[[a.synset() for a in l.antonyms()] for l in ss.lemmas()]))
...
>>> for ss in all_adj_in_wn:
... print ss, ':', get_antonyms(ss)
...
Synset('unable.a.01') : set([Synset('unable.a.01')])
それはトリッキーなコヨーテ異性間の関係は、synsetではなくsynsetと関連しています。 – alvas
http://wordnetweb.princeton.edu/perl/webwn?o2=&o0=1&o8=1&o1=1&o7=&o5=&o9=&o6=&o3=&o4=&s=good&i=8&h=00001000000000000000000000000000#c、* * S **はSynsetを意味し、** W **は単語(つまり補題)を意味します – alvas
こんにちはAlvas!私は実際にあなたの電子メールを取得しようとしていたが、それを見つけることができませんでした..どのように私はあなたに連絡できますか?私はあなたがここで私のすべてのWordnetの質問について大部分を助けてくれたことを思い出してください:) – modarwish