中文WordNet的安装与使用

本文介绍了WordNet的概念及其在中文和英文语料上的安装与使用方法。包括词义查询、同义词查询等功能,并提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在中文语料上数据分析,想借用一些外部资源,就想到了WordNet,在这里记录一下,以备后用。

(一)WordNet的介绍

WordNet是由Princeton 大学的心理学家,语言学家和计算机工程师联合设计的一种基于认知语言学的英语词典。它不是光把单词以字母顺序排列,而且按照单词的意义组成一个“单词的网络”。

它是一个覆盖范围宽广的英语词汇语义网。名词,动词,形容词和副词各自被组织成一个同义词的网络,每个同义词集合都代表一个基本的语义概念,并且这些集合之间也由各种关系连接。

WordNet包含描述概念含义,一义多词,一词多义,类别归属,近义,反义等问题,访问以下网页,可使用wordnet的基本功能: http://wordnetweb.princeton.edu/perl/webwn

(二)WordNet的安装

首先要安装nltk.

pip install nltk

然后用nltk的downloader下载“wordnet”,获取相关的数据。

import nltk
nltk.download('wordnet')  # 这是英文的wordnet

如果要使用中文的WordNet,需要再下载一个组件“omw”。

nltk.download('omw') # omw 代表Open Multilingual Wordnet

在这里插入图片描述
在这里插入图片描述
安装好以后,就可以使用啦。

(三)中英文WordNet的使用

(1)词义查询

word.definition()
  • 英文
from nltk.corpus import wordnet as wn

# 获得单个词的定义查询
apple = wn.synset('apple.n.01')
print(apple.definition())

# 获得该词的所有词性及解释下的定义
word = 'apple'
for w in wn.synsets(word):
    print(w.definition())

# 输出:
# fruit with red or yellow or green skin and sweet to tart crisp whitish flesh

# fruit with red or yellow or green skin and sweet to tart crisp whitish flesh
# native Eurasian tree widely cultivated in many varieties for its firm rounded edible fruits
  • 中文

因为中文在查询时,本质上还是映射到英文语义上去,所以不能直接用类似“秘密.n.01”这种形式,只用用synsets来查,synset是没有‘lang’这个参数的。

word = '秘密'
print('origin word:', word)
if len(wn.synsets(word,lang='cmn')) == 0:
    print('No this word')
for w in wn.synsets(word,lang='cmn'):
    print(w)
    print(w.definition())

# 输出:
# origin word:秘密

# Synset('mystery.n.01')
# something that baffles understanding and cannot be explained

# Synset('secret.n.01')
#something that should remain hidden from others (especially information that is not to be passed on)

# Synset('privacy.n.02')
# the condition of being concealed or hidden

一些注释

一个词可能同时具有动词、名词等多种词性,而且每个词性下可能具有多种解释。例如,在查询"privacy"一词时:

  • “privacy.n.01” 代表“the quality of being secluded from the presence or view of others”,
  • "privacy.n.02"代表“the condition of being cncealed or hidden”

n代表名词,v代表动词,数字代表第几个。
`

(2) 同义词查询

word.lemma_names()

具体调用过程与词义查询基本一致。

  • 英文
from nltk.corpus import wordnet as wn

# 方法一:
print(wn.synset('apple.n.01').lemma_names())

# 方法二:
for w in wn.synsets('apple'):
    print(w.lemma_names())
  • 中文
word = '秘密'

for w in wn.synsets(word,lang='cmn'):
    print(w.lemma_names())

# 输出
# ['privacy', 'privateness', 'secrecy', 'concealment']
# ['mystery', 'enigma', 'secret', 'closed_book']
# ['mystery', 'enigma', 'secret', 'closed_book']

这里相当于是,把中文的“秘密”与英文中的词做了一个对应,对应到三个名词,分别是上面提到的’mystery.n.01’,‘secret.n.01’ 和 ‘privacy.n.02’。在找同义词时,分别找到了“秘密”这个中文词对应的三个英文词的同义词。

(3) 其他查询

hypernyms() # 上位(父类)
hyponyms() # 下位(子类)

lemma_names() # 同义
antonyms() # 反义

entailments() # 蕴含关系

part_meronyms() # 部分
substance_meronyms() # 实质
member_holonyms() # 成员

目前只用到了同位词,以后用到什么其他的模块,再来补充吧。

参考:
https://blog.csdn.net/xieyan0811/article/details/82314042
https://blog.csdn.net/MAILLIBIN/article/details/100580676

知网(英文名称为HowNet)是一个以汉语和英语的词语所代表的概念为描述对象,以揭示概念概念之间以及概念所具有的属性之间的关系为基本内容的常识知识库。今天它终于上网面世了。我们期待会有越来越多的人关心它,使用它,甚至参它的完善、扩充和发展。 1. 问题的提出 1988年前后,董振东曾在他的几篇文章中提出以下的观点: (1) 自然语言处理系统最终需要更强大的知识库的支持。 (2) 关于什么是知识,尤其是关于什么是计算机可处理的知识,他提出:知识是一个系统,是一个包含着各种概念概念之间的关系,以及概念的属性属性之间的关系的系统。一个人比另外一个人有更多的知识说到底是他不仅掌握了更多的概念,尤其重要的是他掌握了更多的概念之间的关系以及概念的属性属性之间的关系。 (3) 关于如何建立知识库,他提出应首先建立一种可以被称为知识系统的常识性知识库。它以通用的概念为描述对象,建立并描述这些概念之间的关系。 (4) 关于由谁来建立知识库,他指出知识掌握在千百万人的手中,知识又是那样博大精深,靠三、五个人甚至三、五十个人是不可能建成真正意义上的全面的知识库的。他提出:首先应由知识工程师来设计知识库的框架,并建立常识性知识库的原型。在此基础上再向专业性知识库延伸和发展。专业性知识库或称百科性知识库主要靠专业人员来完成。这里很类似于通用的词典由语言工作者编纂,百科全书则是由各专业的专家编写。 知网的研究和建设是实践上述观点的努力。  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值