如何在WordNet中找到两个同义词之间的语义关系

nis*_*ish 2 python perl similarity wordnet

我正在使用WordNet 3.0.我想知道如何在WordNet层次结构中找到两个同义词之间的语义关系.如同,作为输入两个单词我想找到它们之间的关系,即它们是同义词,hyponym-hypernym等.

是否有python或perl模块来实现这一目标?

Jac*_*far 5

NLTK是Python最常用的NLP库.所描述的操作将类似于:

from nltk.corpus import wordnet

house = wordnet.synset('house.n.01')
station = wordnet.synset('station.n.01')
Run Code Online (Sandbox Code Playgroud)

那么你可以这样使用类Synset的方法:

taxonomy_distance = house.shortest_path_distance(station)
Run Code Online (Sandbox Code Playgroud)

发现它们是否是同义词:

common_lemmas = len(set(house.lemma_names).intersection(set(station.lemma_names)))
Run Code Online (Sandbox Code Playgroud)

这将返回两组中常见引物的数量.

您还可以使用像Neo4j这样的图形数据库来加载wordnet数据集并查找其节点之间的最短路径,这里讨论的问题.