如何使用wordnet

本文介绍了WordNet,一个包含英语词汇语义信息的词典。WordNet将单词按语义分组为同义词集(synsets),每个synset有其独特的定义和语义关系。通过Python的nltk库可以访问和操作WordNet,获取单词的同义词集、定义、例子、lemma以及上下位关系。此外,还展示了如何计算单词间的语义相似度。WordNet是自然语言处理中的重要工具,用于理解和比较词汇意义。
摘要由CSDN通过智能技术生成

介绍

WordNet是包含语义信息的英语词典。

  1. wordnet根据单词的语义分组,相同语义的单词组合在一起称为synset(同义词集),一个一词多义的单词将出现在它的每个语义对应的同义词集中
  2. wordnet为每一个synset提供了简短,概要的定义,并记录不同synset之间的语义关系
  3. 在 wordnet中,名词,动词,形容词和副词各自组织成一个同义词的网络,四种不同词性的网络之间没有连接

python调用wordnet

可通过nltk工具包来导入wordnet
from nltk.corpus import wordnet

如果导入错误,尝试重新下载wordnet

  import nltk
  nltk.download('wordnet')
获得单词对应的同义词集
print(wordnet.sysnets('room'))
[Synset('room.n.01'), Synset('room.n.02'), Synset('room.n.03'), Synset('room.n.04'), Synset('board.v.02')]

每个同义词集都有自己的名称,词性,以及编号。这里room有5个同义词集,其中四个叫room,是名词,最后一个叫board,是动词。

也可以指定词性,获取不同词性对应的同义词集

print(wordnet.synsets("room", pos=wordnet.NOUN))
# NOUN, ADJ and ADV,VERB
[Synset('room.n.01'), Synset('room.n.02'), Synset('room.n.03'), Synset('room.n.04')]
获得同义词集的定义

对于上面获得的5个同义词集,可以通过以下两种方式来获得第一个同义词集Synset('room.n.01')的定义

(1) 通过返回同义词集列表获得

syn_arr = wordnet.synsets('room')
print(syn_arr[0].definition())
an area within a building enclosed by walls and floor and ceiling
# 楼板建筑物内由墙壁、地板和天花板围起来的区域

(2)直接指定同义词集的名字

print(wordnet.synset('room.n.01').definition())
an area within a building enclosed by walls and floor and ceiling
# 楼板建筑物内由墙壁、地板和天花板围起来的区域
获取同义词集对应的例子

对于单词room的五个不同的语义,给出相应的例句或短语

for syn in wordnet.synsets("room"):
    print(syn.name())
    print(syn.examples())
room.n.01
['the rooms were very small but they had a nice view']
room.n.02
['room to pass', 'make way for', 'hardly enough elbow room to turn around']
room.n.03
['room for improvement']
room.n.04
['the whole room was cheering']
board.v.02
['she rooms in an old boarding house']
获得同义词集包含的lemma

同义词集包含的单词一般是词根(lemma)的形式,比如说love这个单词,同义词集中只会包含love而不会包含loves,loved这些变形。

syn_arr = wordnet.synsets("room")
print(syn_arr[1].lemmas())
print(syn_arr[1].lemma_names())
[Lemma('room.n.02.room'), Lemma('room.n.02.way'), Lemma('room.n.02.elbow_room')]
['room', 'way', 'elbow_room']

同样的,也可以反向获取lemma所在的同义词集

print(syn_arr[1].lemmas()[0].synset())
Synset('room.n.02')
获取单词对应的lemma

当使用wordnet查询单词时,需要知道单词的词根形式

print(wordnet.morphy('denied'))
deny

bike对应的同义集合

获取下位同义词集

不同synset之间的语义关系存在上下位关系,例如日历这个单词对应下位词:阳历,阴历

print(wordnet.synset('calendar.n.01').hyponyms())
[Synset('lunar_calendar.n.01'), Synset('lunisolar_calendar.n.01'), Synset('solar_calendar.n.01')]
获取上位同义词集

同样的,可以通过下位同义词集获得上位同义词集

print(wordnet.synset('solar_calendar.n.01').hypernyms())
[Synset('calendar.n.01')]

上述的结果,除了使用python nltk获得以外,还可以直接进入官网,在线输入,查询

在线查询例子

还有一个重点就是如何使用wordnet计算单词之间的语义相似度,更多的方法可见WordNet Interface

参考

wordnet官网

https://pythonprogramming.net/wordnet-nltk-tutorial/

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺旺棒棒冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值