最近想借助WordNet做一部分词义消歧,就想看看nltk集成的WordNet是怎么用的,但是查到的基本都是18、19年的,很多方法,随着版本更新被更替了。。。。所以发一下我的一小部分学习部分,菜鸡一枚,希望大家互相交流。
1.在代码中引入Wordnet包:前提已经按照nltk!! pip install nltk!!
from nltk.corpus import wordnet as wn
我想看一看苹果这个词在wordnet中的词义,苹果算是nlp处理中比较典型的多义词,但结果有些出人意料。。。
2.查询一个词所在的所有词集(synsets)--英文
wn.synsets('apple')
##[Synset('apple.n.01'), Synset('apple.n.02')]
apple有两个意思,都是名词,具体看一下两个词义分别是什么
wn.synset('apple.n.01').definition()
#'fruit with red or yellow or green skin and sweet to tart crisp whitish flesh'
wn.synset('apple.n.02').definition()
#'native Eurasian tree widely cultivated in many varieties for its firm rounded edible fruits'
我发现在wordnet里,苹果这个词,他虽然有两个词义,但都是水果类。。,而我期待出的结果是一类水果,一类科技。。然后我想根据中文苹果查询 直接用上面的语句失败了
3.查询一个词所在的所有词集(synsets)--中文
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('apple.n.01')
fruit with red or yellow or green skin and sweet to tart crisp whitish flesh
Synset('apple.n.02')
native Eurasian tree widely cultivated in many varieties for its firm rounded edible fruits
'''
查询中文,需要加一个参数lang='cmn',但不难发现英文与中文实际上是对应的。。。