NLTK库WordNet的使用方法实例


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')]  

附:

10. 其他词汇关系:蕴含、反义词

蕴含:entailments()

以上的分析多是针对名词,对于动词,也存在关系。这里只有列出了一种蕴含的关系:
entailments()方法,同样由一个词集调用:

>>> wn.synset('walk.v.01').entailments()#走路蕴含着抬脚
[Synset('step.v.01')]

反义词:antonyms()

由一个词条调用:wn.lemma(‘supply.n.02.supply’)

>>> wn.lemma('supply.n.02.supply').antonyms()
[Lemma('demand.n.02.demand')]
>>>

注意所用词语的词性,笔者试着对形容词取反义词:

>>> wn.lemma('hot.a.01.hot').antonyms()#hot对cold,中间的词性标记为a,而不是n或v
[Lemma('cold.a.01.cold')]
>>>
posted @ 2019-04-11 22:40  qq874455953  阅读(1990)  评论(0编辑  收藏  举报