WordNet是一个由普林斯顿大学编撰的以“同义关系”为主体的一部英语词典。本文将对其组织形式、内容、特点、使用方式进行介绍。
组织形式
这里的大部分内容都参考了WordNet简介 - jcsu - 博客园这篇博客。
如上所说,WordNet是以“同义关系”进行组织的。通过查询这部词典,你可以知道和某个词的特定词义相似的其它词汇有哪些。
这里的行代表词义,列代表词形,每一个非空单元格就相当于是某个单词的特定词义。按列看,相当于是一个单词具有多个词义,即多义词;按行看,相当于是同一个词义包含多个单词,即同义词集(Synsets)。
除去同义关系,词典中还包含上下位关系的概念。例如词义“yellow(noun)”包含的下位词义包括:amber、gamboge、orange yellow、pale yellow
等,它们都是在“黄色”的基础上进行一些特化所形成的概念,而其上位词义包括“color”。
事实上,从几个初始概念开始,每个同义词集都可以向下特化,形成下位概念,直到无法特化为止,这样就形成了类似多叉树的结构,其中的每个结点都是一个同义词集,如下图所示:
注意这里存在概念有一个以上直接上位概念的现象,所以并不是严格的树结构。
除此以外,还有反义关系、部分/整体关系等,这里不再详细介绍。
特点
- 其中的词汇只包含四类:名词、动词、形容词、副词,也就是在这个世界上有实际含义的词汇;而不包括虚词(例如代词、冠词等,你无法在其中找到“the”这个单词)
- 词典中的划分最小项是单词的词义,而不是这个单词本身(词形)
- 其中的词汇只有标准型,而不包括各类变体(例如动词的现在、过去分词),但是有特定含义的另说(例如
interesting
和interested
) - 其中可能包括词组,例如词义“机动车”中包含两个词组:
motor vehicle, automotive vehicle (a self-propelled wheeled vehicle that does not run on rails)
- 似乎有多语言的用法,见:【Python&NLP】关于WordNet,我的一些用法和思路(一)
使用方式
安装
可以通过NLTK(python的一个自然语言处理工具)获取到WordNet。
第一次使用时需要下载WordNet词典,运行:
1 | import nltk |
随后会进入交互界面,先输入d
下载,然后它会问你要下载何种语料库,输入wordnet
即可。
调用方法
推荐两篇讲得比较好的博客:WordNet Python API (整理总结) - qq-36771895的博客 - CSDN博客和【Python&NLP】WordNet的应用 - 安立桐的博客 - CSDN博客
这里给出了一些用法的例子,更多用法可以参见nltk.corpus.reader.wordnet的文档。
引入wordnet数据集:
1 | from nltk.corpus import wordnet |
获取一个单词或词组关联的所有同义词集:
1 | wordnet.synsets("struggling") |
获取某个同义词集的名字:
1 | synset = wordnet.synsets("struggling")[0] |
获取某个同义词集的词性:
1 | synset = wordnet.synsets("struggling")[0] |
获取某个同义词集的所有词条:
1 | synset = wordnet.synsets("struggling")[0] |
获取两个同义词集在概念树中的距离:
1 | synset1 = wordnet.synsets("struggle")[0] |