用語
用語 | 意味 | 例 |
---|---|---|
Synset | 同義語集合 | |
lemmas | 見出し語。synsetがもつ特定の意味を表す語の集合 | |
synonyms | 類義語 | |
hypernym | 上位語 | 「犬」の上位語は「動物」 |
hyponym | 下位語 | 「動物」の下位語は「犬」 |
meronyms | 全体-部分の関係 | 「木」のメロニムは「枝」 |
holonyms | 部分-全体の関係 | 「木」のホロニムは「森」 |
インポート
from nltk.corpus import wordnet as wn
単語の意味をSynsetをブジェクトで取得
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')] # 品詞(pos)を限定させることも可能 wn.synsets('dog', pos=wn.VERB) # => [Synset('chase.v.01')] # その他の品詞:ADJ, ADJ_SAT, ADV, NOUN, VERB = 'a', 's', 'r', 'n', 'v'
「word.pos.nn」形式でSynsetを取得
wn.synset('dog.n.01') #=> Synset('dog.n.01')
Sysnsetから詳細情報を取得
# 定義 print(wn.synset('dog.n.01').definition()) #=> 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 # 用例 print(wn.synset('dog.n.01').examples()[0]) #=>the dog barked all night # lemmas wn.synset('dog.n.01').lemmas() #=> [Lemma('dog.n.01.dog'), Lemma('dog.n.01.domestic_dog'), Lemma('dog.n.01.Canis_familiaris')] # lemmasの中から名前だけ [str(lemma.name()) for lemma in wn.synset('dog.n.01').lemmas()] #=> ['dog', 'domestic_dog', 'Canis_familiaris'] # lemmaをSynsetに変換 wn.lemma('dog.n.01.dog').synset() #=> Synset('dog.n.01')
上位・下位語を取得
dog = wn.synset('dog.n.01') # 最上位語 dog.root_hypernyms() #=> [Synset('entity.n.01')] # 上位語(一つ上の階層) dog.hypernyms() #=> [Synset('canine.n.02'), Synset('domestic_animal.n.01')] # 下位語 dog.hyponyms() #=> [Synset('basenji.n.01'), Synset('corgi.n.01'), Synset('cur.n.01'), Synset('dalmatian.n.02'), ...] # 全体語 dog.member_holonyms() #=> [Synset('canis.n.01'), Synset('pack.n.06')] # 「犬」は「狩猟動物」と「群れ」の構成要素 # 2語に共通するもっとも階層の低い上位語 wn.synset('dog.n.01').lowest_common_hypernyms(wn.synset('cat.n.01')) #=> [Synset('carnivore.n.01')] #「猫」と「犬」の共通上位語は「肉食動物」