wordnet python中国語と英語の処理

5538 ワード

一、英語
1.nltkをインストールし、Wordnetをインポートし、
Pythonバージョン3.5
from nltk.corpus import wordnet as wn

2.同義語セットの定義
car.n.01はcarの名詞的意味であり、同義語集、すなわち意味が同じ語(または語条)の集合と呼ばれる.ここの'dog.n.01’はdogの最初の名詞の意味を指す.chase.v.01’とは、chaseの最初の動詞の意味を指し、definition()という同義語集で説明することができます.
print( wn.synset('apple.n.01').definition())
fruit with red or yellow or green skin and sweet to tart crisp whitish flesh

3.同義語セットのすべての語を検索
print(wn.synset('car.n.01').lemma_names())
['car', 'auto', 'automobile', 'machine', 'motorcar']

4.文を作る
print(wn.synset('dog.n.01').examples())
['the dog barked all night']

5.類義語照会
for synset in wn.synsets('car'):
   print(synset.lemma_names())
['car', 'auto', 'automobile', 'machine', 'motorcar']
['car', 'railcar', 'railway_car', 'railroad_car']
['car', 'gondola']
['car', 'elevator_car']
['cable_car', 'car']

下位語
下位語(hyponym)は、概念的に内包が狭い主題語を指す.例えば、「花速達」の下位語には、「上海花速達」、「深セン花速達」、「ネット上の花速達」、「愚かな子供」は「歌」の下位語、「愚かな子供」は「劉徳華」の下位語が含まれている.++下位語はある主題語に対して、それ自身の同等語、上位語、下位語、同類語もある. 
motorcar = wn.synset('car.n.01')
types_of_motorcar=motorcar.hyponyms()
print(sorted([lemma.name() for synset in types_of_motorcar for lemma in synset.lemmas()]) )
['Model_T', 'S.U.V.', 'SUV', 'Stanley_Steamer', 'ambulance', 'beach_waggon', 'beach_wagon', 'bus', 'cab', 'compact', 'compact_car', 'convertible', 'coupe', 'cruiser', 'electric', 'electric_automobile', 'electric_car', 'estate_car', 'gas_guzzler', 'hack', 'hardtop', 'hatchback', 'heap', 'horseless_carriage', 'hot-rod', 'hot_rod', 'jalopy', 'jeep', 'landrover', 'limo', 'limousine', 'loaner', 'minicar', 'minivan', 'pace_car', 'patrol_car', 'phaeton', 'police_car', 'police_cruiser', 'prowl_car', 'race_car', 'racer', 'racing_car', 'roadster', 'runabout', 'saloon', 'secondhand_car', 'sedan', 'sport_car', 'sport_utility', 'sport_utility_vehicle', 'sports_car', 'squad_car', 'station_waggon', 'station_wagon', 'stock_car', 'subcompact', 'subcompact_car', 'taxi', 'taxicab', 'tourer', 'touring_car', 'two-seater', 'used-car', 'waggon', 'wagon']

6.見出し語で反意語を検索する
good = wn.synset('good.a.01')
print(good.lemmas()[0].antonyms())
[Lemma('bad.a.01.bad')]

7.synonyms and antonymsの問合せ
for syn in wordnet.synsets("good"):
   for l in syn.lemmas():
      synonyms.append(l.name())
      if l.antonyms():
         antonyms.append(l.antonyms()[0].name())

print(set(synonyms))
print(set(antonyms))

{'proficient', 'trade_good', 'expert', 'skilful', 'salutary', 'dear', 'commodity', 'goodness', 'respectable', 'right', 'undecomposed', 'just', 'serious', 'skillful', 'ripe', 'honorable', 'effective', 'secure', 'well', 'in_effect', 'soundly', 'dependable', 'in_force', 'estimable', 'unspoilt', 'adept', 'thoroughly', 'honest', 'full', 'beneficial', 'upright', 'practiced', 'safe', 'good', 'unspoiled', 'sound', 'near'}
{'badness', 'evilness', 'evil', 'bad', 'ill'}

二、中国語
1.類義語の照会
for synset in wn.synsets(u'   ', lang='cmn'):
	types_of_computer = synset.hyponyms()
	print(sorted([lemma.name() for synset in types_of_ computer for lemma in synset.lemmas('cmn')]))
['      ', '   ', '   ', '   ', '   ', '     ', '     ', '     ', '  ', '   ', '   ']
['    ', '     ', '     ', '     ', '  ', '    ']
for synset in wn.synsets(u'   ', lang='cmn'):
   for lemma in synset.lemma_names('cmn'):
	print(lemma)
   
   
   
     
     
   
   
   
     
  
   

2.中国語で同義語を検索する英語
print(wn.lemmas(u'  ', lang='cmn'))
[Lemma('choose.v.01.  '), Lemma('elect.v.02.  '), Lemma('pick.v.02.  '), Lemma('option.n.02.  '), Lemma('selection.n.02.  ')]

3.中国語の2つの語の類似度の検索
select = wn.synsets(u'  ', lang='cmn')[0]
selectn3= wn.synsets(u'  ', lang='cmn')[0]
print(select.path_similarity(selectn3))
0.25

参考文献:
1. https://blog.csdn.net/huxuanlai/article/details/62894413
2. https://blog.csdn.net/pearyangyang/article/details/70208863
3. https://blog.csdn.net/King_John/article/details/80252594