- 自然语言工具包教程
- 自然语言工具包 - 首页
- 自然语言工具包 - 简介
- 自然语言工具包 - 入门
- 自然语言工具包 - 文本标记
- 训练标记器和过滤停用词
- 在WordNet中查找单词
- 词干提取和词形还原
- 自然语言工具包 - 单词替换
- 同义词和反义词替换
- 语料库读取器和自定义语料库
- 词性标注基础
- 自然语言工具包 - 单词标注器
- 自然语言工具包 - 组合标注器
- 自然语言工具包 - 更多NLTK标注器
- 自然语言工具包 - 解析
- 分块和信息提取
- 自然语言工具包 - 转换分块
- 自然语言工具包 - 转换树
- 自然语言工具包 - 文本分类
- 自然语言工具包资源
- 自然语言工具包 - 快速指南
- 自然语言工具包 - 有用资源
- 自然语言工具包 - 讨论
在WordNet中查找单词
什么是WordNet?
WordNet是一个大型的英语词汇数据库,由普林斯顿大学创建。它是NLTK语料库的一部分。名词、动词、形容词和副词都被分组到同义词集(synsets)中,即认知同义词。每个同义词集表达一个不同的含义。以下是WordNet的一些用例:
- 它可以用来查找单词的定义
- 我们可以找到一个单词的同义词和反义词
- 可以使用WordNet探索单词关系和相似性
- 对于具有多种用法和定义的单词进行词义消歧
如何导入WordNet?
可以使用以下命令导入WordNet:
from nltk.corpus import wordnet
对于更简洁的命令,请使用以下命令:
from nltk.corpus import wordnet as wn
Synset实例
Synset是表达相同概念的同义词的组合。当您使用WordNet查找单词时,您将获得一个Synset实例列表。
wordnet.synsets(word)
为了获得Synsets列表,我们可以使用wordnet.synsets(word)在WordNet中查找任何单词。例如,在接下来的Python示例中,我们将查找“dog”的Synset,以及Synset的一些属性和方法:
示例
首先,导入wordnet如下:
from nltk.corpus import wordnet as wn
现在,提供您想要查找其Synset的单词:
syn = wn.synsets('dog')[0]
在这里,我们使用name()方法获取synset的唯一名称,该名称可用于直接获取Synset:
syn.name() Output: 'dog.n.01'
接下来,我们使用definition()方法,它将给我们单词的定义:
syn.definition() Output: 'a member of the genus Canis (probably descended from the common wolf) that has been domesticated by man since prehistoric times; occurs in many breeds'
另一个方法是examples(),它将给我们与单词相关的示例:
syn.examples() Output: ['the dog barked all night']
完整的实现示例
from nltk.corpus import wordnet as wn syn = wn.synsets('dog')[0] syn.name() syn.definition() syn.examples()
获取上位词(Hypernyms)
Synsets在一个继承树状结构中组织,其中上位词(Hypernyms)代表更抽象的术语,而下位词(Hyponyms)代表更具体的术语。重要的一点是,这个树可以一直追溯到根上位词。让我们通过以下示例来理解这个概念:
from nltk.corpus import wordnet as wn syn = wn.synsets('dog')[0] syn.hypernyms()
输出
[Synset('canine.n.02'), Synset('domestic_animal.n.01')]
在这里,我们可以看到canine和domestic_animal是“dog”的上位词。
现在,我们可以找到“dog”的下位词,如下所示:
syn.hypernyms()[0].hyponyms()
输出
[ Synset('bitch.n.04'), Synset('dog.n.01'), Synset('fox.n.01'), Synset('hyena.n.01'), Synset('jackal.n.01'), Synset('wild_dog.n.01'), Synset('wolf.n.01') ]
从上面的输出中,我们可以看到“dog”只是“domestic_animals”的众多下位词之一。
为了找到所有这些的根,我们可以使用以下命令:
syn.root_hypernyms()
输出
[Synset('entity.n.01')]
从上面的输出中,我们可以看到它只有一个根。
完整的实现示例
from nltk.corpus import wordnet as wn syn = wn.synsets('dog')[0] syn.hypernyms() syn.hypernyms()[0].hyponyms() syn.root_hypernyms()
输出
[Synset('entity.n.01')]
WordNet中的词元(Lemmas)
在语言学中,单词的规范形式或形态形式称为词元。为了找到单词的同义词和反义词,我们也可以在WordNet中查找词元。让我们看看怎么做。
查找同义词
通过使用lemma()方法,我们可以找到Synset的同义词数量。让我们将此方法应用于“dog” synset:
示例
from nltk.corpus import wordnet as wn syn = wn.synsets('dog')[0] lemmas = syn.lemmas() len(lemmas)
输出
3
上面的输出显示“dog”有三个词元。
获取第一个词元的名称,如下所示:
lemmas[0].name() Output: 'dog'
获取第二个词元的名称,如下所示:
lemmas[1].name() Output: 'domestic_dog'
获取第三个词元的名称,如下所示:
lemmas[2].name() Output: 'Canis_familiaris'
实际上,一个Synset代表一组具有相似含义的词元,而一个词元代表一个不同的词形。
查找反义词
在WordNet中,一些词元也具有反义词。例如,“good”这个词共有27个synsets,其中5个具有带有反义词的词元。让我们找到反义词(当“good”用作名词时,以及当“good”用作形容词时)。
示例1
from nltk.corpus import wordnet as wn syn1 = wn.synset('good.n.02') antonym1 = syn1.lemmas()[0].antonyms()[0] antonym1.name()
输出
'evil'
antonym1.synset().definition()
输出
'the quality of being morally wrong in principle or practice'
上面的示例显示,当“good”用作名词时,第一个反义词是“evil”。
示例2
from nltk.corpus import wordnet as wn syn2 = wn.synset('good.a.01') antonym2 = syn2.lemmas()[0].antonyms()[0] antonym2.name()
输出
'bad'
antonym2.synset().definition()
输出
'having undesirable or negative qualities’
上面的示例显示,当“good”用作形容词时,第一个反义词是“bad”。