📌  相关文章
📜  在Wordnet中查找单词

📅  最后修改于: 2020-10-14 09:11:34             🧑  作者: Mango


什么是Wordnet?

Wordnet是由Princeton创建的大型英语词汇数据库。它是NLTK语料库的一部分。名词,动词,形容词和副词都被分组为同义词集,即认知同义词。在这里,每组同义词集都有不同的含义。以下是Wordnet的一些用例-

  • 它可以用来查找单词的定义
  • 我们可以找到一个单词的同义词和反义词
  • 可以使用Wordnet探索单词关系和相似性
  • 具有多种用途和定义的单词的词义歧义消除

如何导入Wordnet?

可以使用以下命令导入Wordnet-

from nltk.corpus import wordnet

对于更紧凑的命令,请使用以下命令-

from nltk.corpus import wordnet as wn

同义词集实例

同义词集是表达相同概念的同义词的组合。当您使用Wordnet查找单词时,您将获得一个Synset实例列表。

wordnet.synsets(word)

要获取同义词集列表,我们可以使用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中的引理

在语言学中,单词的规范形式或形态形式称为引理。为了找到单词的同义词和反义词,我们还可以在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”用作形容词时)。

例子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”。