NLTK WordNet:从 NLTK WordNet 中查找同义词 Python
⚡ 智能摘要
WordNet 是一个用于英语的词汇数据库和 NLTK 语料库读取器,它将名词、动词、形容词和副词分组到同义词集中,从而允许…… Python 程序会查找同义词、反义词、上位词和词义,用于自然语言处理。
什么是 Wordnet?
WordNet的 WordNet 是一个 NLTK 语料库读取器,它是一个英语词汇数据库。它可以用来查找单词的含义、同义词或反义词。可以将其定义为一个语义导向的英语词典。WordNet 可以通过以下命令导入:
from nltk.corpus import wordnet as guru
由于 WordNet 是以现成的语料库形式提供的,因此您可以加载一次并立即开始查询词语关系,而无需自己构建任何词典。
在 NLTK WordNet 中查找同义词 Python
统计数据显示 155287 个单词和 117659 个同义词 英语 WordNet 中包含的数据集。WordNet 提供的不同方法可以通过 ty 查找。ping dir(guru) 列出了语料库读取器公开的每个加载器属性和辅助方法。
同义词集: 它也被称为同义词集或同义词集合。让我们来看一个例子。
from nltk.corpus import wordnet syns = wordnet.synsets("dog") print(syns)
输出:
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]
词汇关系: 这些是互惠的语义关系。如果{x1,x2,…xn}和{y1,y2,…yn}之间存在关系,那么{y1,y2,…yn}和{x1,x2,…xn}之间也存在关系。例如,同义词是反义词的反义词,而上位词和下位词则是一种词汇概念。
让我们使用编写一个程序 Python 使用 WordNet 查找单词“active”的同义词和反义词。
from nltk.corpus import wordnet synonyms = [] antonyms = [] for syn in wordnet.synsets("active"): for l in syn.lemmas(): synonyms.append(l.name()) if l.antonyms(): antonyms.append(l.antonyms()[0].name()) print(set(synonyms)) print(set(antonyms))
代码的输出:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
代码说明:
- WordNet 是一个语料库,因此它是从 nltk.corpus 包导入的。
- 同义词和反义词列表均为空,将用于追加内容。
- 使用同义词集方法搜索“active”一词的同义词,并将其添加到同义词列表中。反义词的收集过程相同。
- 输出打印如下 Python 设置自动删除重复条目。
除了同义词和反义词之外,WordNet 还包含上位词(更宽泛的词)、下位词(更具体的词)、整体词和部分词,因此只需一次查询即可将一个词置于整个“is-a”层级结构中。这些关系使得 WordNet 成为拼写检查器、语言翻译、垃圾邮件检测以及人工智能中其他文本分析任务的实用词库。

