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 是一个语料库,因此它从 nltk.corpus 导入
- 同义词和反义词的列表均为空,将用于追加
- 在 synsets 模块中搜索单词 active 的同义词,并将其附加到 synonyms 列表中。对第二个重复相同的过程。
- 输出已打印
结论
WordNet 是一个词汇数据库,已被主要的 搜索引擎 使用。从 WordNet 中,可以计算出给定单词或短语的信息,例如
- 同义词(含义相同的词)
- 上位词(用于指代一类具体事物的通用术语(即,meal 是一种 breakfast),下位词(rice 是一种 meal)
- 整体词(proteins, carbohydrates 是 meal 的一部分)
- 部分词(meal 是日常食物摄入的一部分)
WordNet 还提供关于并列词、派生词、词义等信息。它用于查找任何两个词之间的相似性。它还包含有关相关词结果的信息。简而言之,你可以将其视为字典或同义词词典。深入 WordNet,它分为四种子网,包括
- 名词
- 动词
- 形容词
- 副词
它可以在人工智能领域用于文本分析。借助 Wordnet,您可以创建自己的语料库来进行拼写检查、语言翻译、垃圾邮件检测等。
同样,您可以使用此语料库并对其进行修改以实现一些动态功能。这就像为你准备好的现成语料库。你可以按照自己的方式使用它。