1. 程式人生 > >python WordNet的使用方法(整理版)

python WordNet的使用方法(整理版)

那個,網上的不少相關內容的整理真的是難懂,而且不少錯誤,稍稍整理一下。
注:真是百度5小時,谷歌5分鐘……整理了這麼多中文資料,都缺的厲害,然後谷歌了一下,就發現了一個很不錯的材料,後面也整理一下。

python版本:Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
numpy版本:1.11.2
nltk版本:nltk 3.3
除錯環境:Python 3.6.4 Shell

1、在程式碼中引入wordnet包

>>>from nltk.corpus import wordnet as wn

2、查詢一個詞所在的所有詞集(synsets)

>>>wn.synsets('dog')
[Synset('dog.n.01'), Synset('frump.n.01'), 
Synset('frank.n.02'), Synset('pawl.n.01'), 
Synset('andiron.n.01'), Synset('chase.v.01')]

3、查詢一個同義詞集的定義

>>> wn.synset('apple.n.01').definition()
'fruit with red or yellow or green skin and sweet to tart crisp whitish flesh'

4、查詢詞語一個詞義的例子

>>> wn.synset('dog.n.01').examples()
['the dog barked all night']

5、查詢詞語某種詞性所在的同義詞集合

>>> wn.synsets('dog',pos=wn.NOUN)
[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'
)]

注:pos值可以為——NOUN,VERB,ADJ,ADV…

6、查詢一個同義詞集中的所有詞

>>> wn.synset('dog.n.01').lemma_names( )
['dog', 'domestic_dog', 'Canis_familiaris']

7、輸出詞集和詞的配對——詞條(lemma)

>>> wn.synset('dog.n.01').lemmas( )
[Lemma('dog.n.01.dog'),
 Lemma('dog.n.01.domestic_dog'), 
 Lemma('dog.n.01.Canis_familiaris')]

8、利用詞條查詢反義詞

>>> good = wn.synset('good.a.01')
>>> good.lemmas()[0].antonyms()
[Lemma('bad.a.01.bad')]

9、查詢兩個詞之間的語義相似度

path_similarity函式,值從0-1,越大表示相似度越高

>>> dog = wn.synset('dog.n.01')
>>> cat = wn.synset('cat.n.01')
>>> dog.path_similarity(cat)
0.2

值得注意的是,名詞和動詞被組織成了完整的層次式分類體系,形容詞和副詞沒有被組織成分類體系,所以不能用path_distance。
形容詞和副詞最有用的關係是similar to。

>>> beau.similar_tos()
[Synset('beauteous.s.01'), Synset('bonny.s.01'), Synset('dishy.s.01'), Synset('exquisite.s.04'), Synset('fine-looking.s.01'), Synset('glorious.s.03'), Synset('gorgeous.s.01'), Synset('lovely.s.01'), Synset('picturesque.s.01'), Synset('pretty-pretty.s.01'), Synset('pretty.s.01'), Synset('pulchritudinous.s.01'), Synset('ravishing.s.01'), Synset('scenic.s.01'), Synset('stunning.s.04')]  

附:

安裝NLTK