2016-12-04 7 views
2

は私が成功し、他の意味関係を介してベースsynsetに接続されているのsynsetを取得していますNLTKのWordnetでターゲットsynsetのantonym synsetを取得するにはどうすればよいですか?次のように

wn.synset('good.a.01').also_sees() 
Out[63]: 
[Synset('best.a.01'), 
Synset('better.a.01'), 
Synset('favorable.a.01'), 
Synset('good.a.03'), 
Synset('obedient.a.01'), 
Synset('respectable.a.01')] 

wn.synset('good.a.01').similar_tos() 
Out[64]: 
[Synset('bang-up.s.01'), 
Synset('good_enough.s.01'), 
Synset('goodish.s.01'), 
Synset('hot.s.15'), 
Synset('redeeming.s.02'), 
Synset('satisfactory.s.02'), 
Synset('solid.s.01'), 
Synset('superb.s.02'), 
Synset('well-behaved.s.01')] 

をしかし、反意語関係が異なるようです。私は基本synsetに接続補題を取得するために管理しますが、そのように、実際のsynsetを取得することができませんでした:

wn.synset('good.a.01').lemmas()[0].antonyms() 
Out[67]: [Lemma('bad.a.01.bad')] 

にはどうすればsynsetはなく、補題を得ることができ、それはにantonymyを介して接続されています私の基本synset - wn.synset( 'good.a.01')?何らかの理由でTIA

+1

それはトリッキーなコヨーテ異性間の関係は、synsetではなくsynsetと関連しています。 – alvas

+1

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

+0

こんにちはAlvas!私は実際にあなたの電子メールを取得しようとしていたが、それを見つけることができませんでした..どのように私はあなたに連絡できますか?私はあなたがここで私のすべてのWordnetの質問について大部分を助けてくれたことを思い出してください:) – modarwish

答えて

1

、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を参照)、その質問はSynsetsLemmasは、多対多を持っているか、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ではなく LemmasSynsetsの関係を比較しています。 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#L202https://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から:

補題は、同じ名前のメソッドを介してアクセス属性::

  • 名前:この補題の正規名を。
  • synset:この補助定理が属するsynset。
  • syntactic_marker:形容詞の場合、 の構文上の相対修飾名詞を識別するWordNet文字列。参照: http://wordnet.princeton.edu/man/wninput.5WN.html#sect10 他のすべての品詞については、この属性はなしです。
  • count:wordnetのこの補題の頻度。

だから我々はこれを行うと、何とか各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')]) 
+1

ありがとうございました。どうすればあなたに連絡できますか? – modarwish

+1

Errr、[スリングリング](http://marvel.wikia.com/wiki/Sling_Ring)でポータルを作ってください; P? – alvas

+0

私は次元旅行で吐き気になる。私は従来の電子メールを好む:D。しかし、答えのheheのおかげで。 – modarwish

関連する問題