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