NLTK WordNet:从 NLTK WordNet 中查找同义词 Python

什么是 Wordnet?

Wordnet 是一个 NLTK 语料库阅读器,是英语词汇数据库。它可用于查找单词、同义词或反义词的含义。可以将其定义为面向语义的英语词典。使用以下命令导入它:

from nltk.corpus import wordnet as guru

在 NLTK WordNet 中查找同义词 Python

统计数据显示 155287 个单词和 117659 个同义词 包含在 English WordNet 中的集合。

可以通过输入 dir(guru) 找到 WordNet 可用的不同方法

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattr__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__'、'__sizeof__'、'__str__'、'__subclasshook__'、'__unicode__'、'__weakref__'、'_unload'、'subdir'、'unicode_repr']

让我们了解 wordnet 的一些功能:

同义词集:它也被称为同义词集或同义词集合。让我们看一个例子

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} 之间也存在关系。例如,同义词与反义词或上义词相对,而下义词是词汇概念的类型。

让我们使用编写一个程序 蟒蛇 使用 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'} — 同义词

{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} — 反义词

Wordnet 程序代码 输出

代码说明

  1. Wordnet 是一个语料库,因此它是从 ntlk.corpus 导入的
  2. 同义词和反义词列表均视为空,将用于附加
  3. 在模块同义词集中搜索单词 active 的同义词,并将其添加到同义词列表中。对第二个同义词重复相同的过程。
  4. 打印输出

结语

WordNet 是一个词汇数据库,已被许多主要 搜索引擎。从 WordNet 中,可以计算出有关给定单词或短语的信息,例如

  • 同义词(含义相同的词)
  • 上位词(用于指代一类具体事物的通用术语(例如,meal 是早餐),下位词(rice 是一顿饭)
  • 全称(蛋白质、碳水化合物是膳食的一部分)
  • 部分名词(膳食是每日食物摄入的一部分)

WordNet 还提供有关并列词、派生词、意义等的信息。它用于查找任意两个单词之间的相似性。它还保存有关相关单词结果的信息。简而言之,可以将其视为词典或同义词库。深入研究 wordnet,它总共分为四个子网,例如

  1. 名词
  2. 动词
  3. 形容词
  4. 副词

它可用于人工智能领域的文本分析。借助 Wordnet,您可以创建用于拼写检查、语言翻译、垃圾邮件检测等的语料库。

同样,您可以使用这个语料库并塑造它以实现一些动态功能。这就像为您准备好的语料库。您可以按照自己的方式使用它。