WordNet是一种面向语义的英语词典,由Princeton大学的心理学家、语言学家和计算机工程师联合设计。它不是光把单词以字母顺序排列,而且按照单词的意义组成一个“单词的网络”。
NLTK库中包含了英语WordNet,里面共有155287个词以及117659个同义词集合。常用操作如下:
1. 加载wordnet
from nltk.corpus import wordnet as wn
2. 得到同义词集
wn.synsets('motorcar')
3. 同义词集的词条
wn.synset('car.n.01').lemmas()
4. 同义词集的词条名
wn.synset('car.n.01').lemma_names()
5. 同义词集的定义
wn.synset('car.n.01').definition()
6. 同义词集的使用例句
wn.synset('car.n.01').examples()
7. 同义词集的上位词
wn.synset('car.n.01').hypernyms()
8. 同义词集的下位词
wn.synset('car.n.01').hyponyms()
9. 同义词集的蕴含关系
wn.synset('walk.v.1').entailments()
10. 同义词集中词条的反义词
wn.lemma('supply.n.02.supply').antonyms()
11. 同义词集的深度
使用synset对象的min_depth方法来量化对象的普遍性概念,原理上其实在查找对象在层次结构所在的层次。
wn.synset('car.n.01').min_depth()
12. 两同义词集的相似度
使用synset对象的path_similarity方法可以测量两个同义词集间的路径长短,值得范围是0到1。路径越长,值越小;路径越短,值越大。两者之间没有路径时返回-1,与自身比较时返回1。
wn.synset('car.n.01').path_similarity(wn.synset('car.n.02'))