You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解释NLTK库WordNet同义词集中的hyponyms等概念并举例

WordNet中hyponyms/hypernyms/holonyms/meronyms概念详解及示例

WordNet是NLTK内置的词汇语义数据库,每个同义词集(synset)对应一个明确的词义,以下术语都是基于synset之间的语义关联定义的:

1. Hypernyms(上位词/超类词)

指当前词汇所属的更宽泛的类别,相当于语义上的“父类”。比如“家犬”属于“犬科动物”,后者就是前者的上位词。

示例代码:

from nltk.corpus import wordnet

# 获取"dog"(家犬)的核心同义词集
dog_syn = wordnet.synset('dog.n.01')
# 提取上位词
hypernyms = dog_syn.hypernyms()
print([syn.name().split('.')[0] for syn in hypernyms])
# 输出: ['canine', 'domestic_animal']

解释:canine代表犬科动物,domestic_animal代表家养动物,都是“家犬”所属的大范畴。

2. Hyponyms(下位词/子类词)

和上位词逻辑相反,是当前类别下更具体的子类,相当于语义上的“子类”。比如“犬科动物”的下位词包含“狼”“狐狸”等具体物种。

示例代码:

# 获取"canine"(犬科动物)的同义词集
canine_syn = wordnet.synset('canine.n.02')
# 提取下位词
hyponyms = canine_syn.hyponyms()
# 取前5个示例展示
print([syn.name().split('.')[0] for syn in hyponyms[:5]])
# 输出: ['dog', 'wolf', 'coyote', 'jackal', 'fox']

解释:这些都是归属于犬科的具体动物,是canine的下位词。

3. Holonyms(整体词)

指包含当前词汇所指事物的“整体”,分为两类:

  • Part Holonyms:当前事物是整体的组成部件,比如轮子是汽车的一部分,汽车就是轮子的part holonym。
  • Member Holonyms:当前事物是整体的组成成员,比如树是森林的一员,森林就是树的member holonym。

示例代码:

# Part Holonyms示例:轮子所属的整体
wheel_syn = wordnet.synset('wheel.n.01')
part_holonyms = wheel_syn.part_holonyms()
print([syn.name().split('.')[0] for syn in part_holonyms[:3]])
# 输出: ['vehicle', 'cart', 'locomotive']

# Member Holonyms示例:树所属的整体
tree_syn = wordnet.synset('tree.n.01')
member_holonyms = tree_syn.member_holonyms()
print([syn.name().split('.')[0] for syn in member_holonyms])
# 输出: ['forest', 'wood']

4. Meronyms(部分词/成员词)

和holonyms是反向语义关系,指构成整体的部件或成员,同样分两类:

  • Part Meronyms:整体的组成部件,比如汽车的引擎、方向盘。
  • Member Meronyms:整体的组成成员,比如森林里的树。

示例代码:

# Part Meronyms示例:汽车的组成部件
car_syn = wordnet.synset('car.n.01')
part_meronyms = car_syn.part_meronyms()
print([syn.name().split('.')[0] for syn in part_meronyms[:5]])
# 输出: ['accelerator', 'air_bag', 'auto_accessory', 'automobile_engine', 'automobile_horn']

# Member Meronyms示例:森林的组成成员
forest_syn = wordnet.synset('forest.n.01')
member_meronyms = forest_syn.member_meronyms()
print([syn.name().split('.')[0] for syn in member_meronyms])
# 输出: ['tree']

内容的提问来源于stack exchange,提问作者AswinBravissimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:10:19