赞
踩
nltk中词性标注函数nltk.pos_tag([])得到的结果:NN,NNP,VB等
nltk中词形还原函数nltk.stem.WordNetLemmatizer().lemmatize('word')要求的参数是:a,n,v等
两种词性类型的对照表如下:
——————————————————————————————————————
a(形容词)——JJ,JJR,JJS(形容词,比较级,最高级)
r(副词)——RB,RBR,RBS(副词,比较级,最高级)
v(动词)——VB,VBD,VBG,VBN,VBP,VBZ(动词,过去式,动名词,过去分词,非三单,三单)
n(名词)——NN,NNS,NNP,NNPS(NN表示常用名词,NNP表示专有名词,S表示单复数)
——————左边是词形还原要用到的类型,右边是词性标注得到的类型——————
代码实现上可以检查词性标注结果前面的部分:可以从上面观察到形容词都是JJ开头的,同时不存在其他J开头的词性,因此可以检查是否是J开头来判断词性。注意:R开头的还有一个RP(Particle 小品词)。
a——JJ(或者J)
r——RB
v——VB(或者V)
n——NN(或者N)
——————————————————————————————————————
- import nltk
- aft_tk=['word','better','had'] #分词后的列表
- nltk_pos_tagged = nltk.pos_tag(aft_tk)
- wnl = nltk.stem.WordNetLemmatizer()
- aft_lem = [] #词形还原后的列表
- for pstg in nltk_pos_tagged:
- word,tag = pstg
- if tag.startswith('NN'):
- aft_lem.append(wnl.lemmatize(word,'n'))
- elif tag.startswith('JJ'):
- aft_lem.append(wnl.lemmatize(word,'a'))
- elif tag.startswith('VB'):
- aft_lem.append(wnl.lemmatize(word,'v'))
- elif tag.startswith('RB'):
- aft_lem.append(wnl.lemmatize(word,'r'))
- else :
- aft_lem.append(word)
- print(aft_lem)

['work','well','have']
词性标注得到词性类型表:(27条消息) NLTK的词性_一只鸟的天空的博客-CSDN博客_nltk 词性https://blog.csdn.net/heyongluoyao8/article/details/43731743
词形还原需要词性类型表:利用如下指令查看:
help(nltk.stem.WordNetLemmatizer())
得到结果如下:
The Part Of Speech tag. Valid options are `"n"` for nouns, | `"v"` for verbs, `"a"` for adjectives, `"r"` for adverbs and `"s"` | for satellite adjectives.
Δ:这个satellite adjectives也不知道是什么东西
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。