📅  最后修改于: 2020-10-14 09:11:34             🧑  作者: Mango
Wordnet是由Princeton创建的大型英语词汇数据库。它是NLTK语料库的一部分。名词,动词,形容词和副词都被分组为同义词集,即认知同义词。在这里,每组同义词集都有不同的含义。以下是Wordnet的一些用例-
可以使用以下命令导入Wordnet-
from nltk.corpus import wordnet
对于更紧凑的命令,请使用以下命令-
from nltk.corpus import wordnet as wn
同义词集是表达相同概念的同义词的组合。当您使用Wordnet查找单词时,您将获得一个Synset实例列表。
要获取同义词集列表,我们可以使用wordnet.synsets(word)在Wordnet中查找任何单词。例如,在下一个Python食谱中,我们将为“狗”查找Synset以及Synset的一些属性和方法-
首先,如下导入wordnet-
from nltk.corpus import wordnet as wn
现在,提供您要查找的Synset的单词-
syn = wn.synsets('dog')[0]
在这里,我们使用name()方法来获取同义词集的唯一名称,该名称可用于直接获得同义词集-
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代表更抽象的术语,而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’的别名。
现在,我们可以找到“狗”的下位词,如下所示:
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中查找引理。让我们看看如何。
通过使用lemma()方法,我们可以找到一个同义词集的同义词数量。让我们将此方法应用于“狗”同义词集-
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'
实际上,同义词集代表一组具有相似含义的引理,而引理则代表不同的词形。
在WordNet中,某些词条也有反义词。例如,“好”一词共有27个同义词,其中有5个带有反义词的词缀。让我们找到反义词(当单词“ good”用作名词时,单词“ good”用作形容词时)。
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”。
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”。