【语言处理与Python】2.5WordNet

WordNet是面向语义的英语词典,类似于传统词典,但具有更丰富的结构。NLTK中包括英语WordNet,有很多词和同义词的集合。

意义与同义词

具有相同含义的词是同义词。

#在wordnet中怎样探索这些同义词

from nltk.corpus import wordnet as wn

Wn.synsets(‘motorcar’)

[Synset(‘car.n.01’)]

通过对这段程度的分析可以知道:

Motorcar只有一个可能的含义;

这个含义被定义为car.n.01car的第一个名词的意义。

Car.n.01被称为synset或者同义词集

#意思相同的词或者词条的集合

wn.synset(‘car.n.01’).lemma_names

['car','auto', 'automobile', 'machine', 'motorcar']

wn.synset(‘car.n.01’).definition

amotorvehiclewithfourwheels;usuallypropelledbyaninternal combustionengine'

wn.synset(‘car.n.01’).examples()

['heneedsacartogettowork']

#得到指定同义词集的所有词条

wn.synset(‘car.n.01’).lemmas

#查找特定的词条

wn.lemma(‘car.n.01.automobile’)

#得到一个词条对应的同义词集

wn.lemma(‘car.n.01.automobile’).synset

#得到一个词条的名字

wn.lemma(‘car.n.01.automobile’).name

#访问所有包含词car的词条

wn.lemmas(’car’)

WordNet的层次结构

WordNet概念层次片段,每个节点对应一个同义词集。边表示上位词/下位词关系。

下位词:

例如:一个如摩托车这样的概念,我们可以看到他的更加具体的概念,下位词

motocar=wn.synset(‘car.n.01’)

types_of_motocar=motorcar.hyponyms()

上位词:

motocar.hypernyms()

paths=motorcar.hypernym_paths()

得到最一般的上位词(指的是根上位)

motorcar.root_hypernyms()

更多的词汇关系

同义集之间的关系:上位词和下位词

部分:从物品到它们的部件(一棵树的部分是他的树干、树冠等)

整体:到它们被包含其中的东西(一棵树的实质是包括心材和边材组成的)

wn.synset(‘tree.n.01)’).part_meronyms()

wn.synset(‘tree.n.01’).substance_meronyms()

sn.synset(‘tree.n.01’).member_holonyms()

反义词:wn.lemma(‘supply.n.02.supply’).antonyms()

动词之间的关系:走路的动作包括抬脚(蕴含关系)

wn.synset(‘walk.v.01’).entailments()

语义相似度

#我们可以通过查找每个同义词集深度来量化这个概念。

wn.synset(‘baleen_whale.n.01’).min_depth()

#基于上位词层次结构中相互连接的概念之间的最短路径在0-1之间打分(两者之间没有路径返回-1,与自身比较返回1)

Right.path_similarity(minke)
原文地址:https://www.cnblogs.com/createMoMo/p/3096280.html