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

Wordnet是什么?

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

from nltk.corpus import wordnet as guru

在 Python 中从 NLTK WordNet 查找同义词

统计数据显示,英文 WordNet 包含 155287 个单词和 117659 个同义词集

可以通过输入 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 的一些可用功能

同义词集 (Synset):也称为同义词集或同义词集合。让我们看一个例子

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')]

词汇关系 (Lexical Relations):这些是相互的语义关系。如果 {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’} — 同义词

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

Wordnet Program code Output

代码解释

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

结论

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

  • 同义词(含义相同的词)
  • 上位词(用于指代一类具体事物的通用术语(即,meal 是一种 breakfast),下位词(rice 是一种 meal)
  • 整体词(proteins, carbohydrates 是 meal 的一部分)
  • 部分词(meal 是日常食物摄入的一部分)

WordNet 还提供关于并列词、派生词、词义等信息。它用于查找任何两个词之间的相似性。它还包含有关相关词结果的信息。简而言之,你可以将其视为字典或同义词词典。深入 WordNet,它分为四种子网,包括

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

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

同样,您可以使用此语料库并对其进行修改以实现一些动态功能。这就像为你准备好的现成语料库。你可以按照自己的方式使用它。