WordNet是面向语义的英语词典,类似于传统词典,但具有更丰富的结构。NLTK中包括英语WordNet,有很多词和同义词的集合。
意义与同义词
具有相同含义的词是同义词。
#在wordnet中怎样探索这些同义词 from nltk.corpus import wordnet as wn Wn.synsets(‘motorcar’) [Synset(‘car.n.01’)]
通过对这段程度的分析可以知道:
Motorcar只有一个可能的含义;
这个含义被定义为car.n.01,car的第一个名词的意义。
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)