python自然语言处理——2.5 WordNet

微信公众号:数据运营人
本系列为博主的读书学习笔记,如需转载请注明出处。

第二章 获取文本预料和词汇资源

2.5 WordNet意义和同义词WordNet的层次结构更多的词汇关系语义相似度

2.5 WordNet

意义和同义词
from nltk.corpus import wordnet as wn               
print(wn.synsets("motorcar"))                       
print(wn.synset("car.n.01").lemma_names())    
print(wn.synset("car.n.01").definition())     
print(wn.synset("car.n.01").examples())     
print(wn.synset("car.n.01").lemmas())    
print(wn.lemma('car.n.01.automobile'))  
print(wn.lemma('car.n.01.automobile').synset())
print(wn.lemma('car.n.01.automobile').name())  
print(wn.synsets("car"))                            
for synset in wn.synsets("car"):                    
    print(synset.lemma_names())   
print(wn.lemmas('car')) 
WordNet的层次结构

Wordnet是一个由普林斯顿大学认识科学实验室在心理学教授乔治·A·米勒的指导下建立和维护的大型的英语词典,

WordNet的开发有两个目的:
1.它既是一个字典,又是一个辞典,它比单纯的辞典或词典都更加易于使用。
2.支持自动的文本分析以及人工智能应用。
在WordNet中,名词,动词,形容词和副词各自被组织成一个同义词的网络,每个同义词集合都代表一个基本的语义概念,并且这些集合之间也由各种关系连接。

Wordnet是一个词典。每个词语(word)可能有多个不同的语义,对应不同的sense。而每个不同的语义(sense)又可能对应多个词,如topic和subject在某些情况下是同义的,一个sense中的多个消除了多义性的词语叫做lemma。例如,“publish”是一个word,它可能有多个sense。

motorcar = wn.synset('car.n.01')
types_of_motorcar = motorcar.hyponyms()
print(types_of_motorcar[26])
print(sorted([lemma.name() for synset in types_of_motorcar for lemma in synset.lemmas()]))
print(motorcar.hypernyms())
paths = motorcar.hypernym_paths()
print(len(paths))
print([synset.name for synset in paths[0]])
print([synset.name for synset in paths[1]])
print(motorcar.root_hypernyms())
更多的词汇关系

所谓的词汇关系就是指上一个词与下一个词之间的关系。

print(wn.synset('tree.n.01').part_meronyms())
print(wn.synset('tree.n.01').substance_meronyms())
print(wn.synset('tree.n.01').member_holonyms())
for synset in wn.synsets('mint', wn.NOUN):
    print (synset.name , ':', synset.definition)
print(wn.synset('mint.n.04').part_holonyms())
print(wn.synset('mint.n.04').substance_holonyms())
print(wn.synset('walk.v.01').entailments())
print(wn.lemma('supply.n.02.supply').antonyms())
语义相似度
right = wn.synset('right_whale.n.01')
print(right)
print(right.lowest_common_hypernyms(right))
print(wn.synset('baleen_whale.n.01').min_depth())
print(right.path_similarity(right))
posted @ 2019-02-24 15:27  ly803744  阅读(287)  评论(0编辑  收藏  举报