2016-10-20 7 views
1

はnltkでかなり新しいです。彼らはWordNetのデータベース内の同じSYSNETに属しているかどうかを確認する方法はあり2つの単語を指定すると、それらが同じsynset内にあるかどうかを調べる

  • W1およびW2二つの単語を考える:私は、私が現在働いている 問題への解決策を見つけるためにしようとしていますか?
  • また、特定の単語を含むsysnetsのリストを見つけることは可能ですか?

ありがとうございます。

答えて

2

また、 という単語を含むsysnetsのリストを見つけることは可能ですか?

はい

>>> for ss in wn.synsets(car): 
...  assert 'car' in ss.lemma_names() 
... 
>>> for ss in wn.synsets(car): 
...  print 'car' in ss.lemma_names(), ss.lemma_names() 
... 
True [u'car', u'auto', u'automobile', u'machine', u'motorcar'] 
True [u'car', u'railcar', u'railway_car', u'railroad_car'] 
True [u'car', u'gondola'] 
True [u'car', u'elevator_car'] 
True [u'cable_car', u'car'] 

:我々はwn.synsets(car)からすべてのsynsetに補題を見れば

>>> from nltk.corpus import wordnet as wn 
>>> auto, car = 'auto', 'car' 
>>> wn.synsets(auto) 
[Synset('car.n.01')] 
>>> wn.synsets(car) 
[Synset('car.n.01'), Synset('car.n.02'), Synset('car.n.03'), Synset('car.n.04'), Synset('cable_car.n.01')] 

は、私たちが "車" を見つけることは補題の一つとして存在します注:補題は必ずしも表面語ではありません。Stemmers vs Lemmatizersを参照してください。また、この情報はhttps://github.com/alvations/pywsd/blob/master/pywsd/utils.py#L66(免責事項:恥知らずプラグ)二つの単語のW1およびW2を考える

は、彼らがWordNetのデータベース内の同じSYSNETに属している かどうかを確認する方法はありますか?

はい

>>> from nltk.corpus import wordnet as wn 
>>> auto, car = 'auto', 'car' 
>>> wn.synsets(auto) 
[Synset('car.n.01')] 
>>> wn.synsets(car) 
[Synset('car.n.01'), Synset('car.n.02'), Synset('car.n.03'), Synset('car.n.04'), Synset('cable_car.n.01')] 
>>> auto_ss = set(wn.synsets(auto)) 
>>> car_ss = set(wn.synsets(car)) 
>>> car_ss.intersection(auto_ss) 
set([Synset('car.n.01')]) 
関連する問題