当前位置:   article > 正文

nltk词性标注与词形还原中的词性类型匹配_nltk wordnet 判断是不是动词

nltk wordnet 判断是不是动词

一、两函数词性不匹配问题:

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)

——————————————————————————————————————

三、代码

  1. import nltk
  2. aft_tk=['word','better','had'] #分词后的列表
  3. nltk_pos_tagged = nltk.pos_tag(aft_tk)
  4. wnl = nltk.stem.WordNetLemmatizer()
  5. aft_lem = [] #词形还原后的列表
  6. for pstg in nltk_pos_tagged:
  7. word,tag = pstg
  8. if tag.startswith('NN'):
  9. aft_lem.append(wnl.lemmatize(word,'n'))
  10. elif tag.startswith('JJ'):
  11. aft_lem.append(wnl.lemmatize(word,'a'))
  12. elif tag.startswith('VB'):
  13. aft_lem.append(wnl.lemmatize(word,'v'))
  14. elif tag.startswith('RB'):
  15. aft_lem.append(wnl.lemmatize(word,'r'))
  16. else :
  17. aft_lem.append(word)
  18. print(aft_lem)

out:

['work','well','have']

四、附录

词性标注得到词性类型表:(27条消息) NLTK的词性_一只鸟的天空的博客-CSDN博客_nltk 词性icon-default.png?t=M85Bhttps://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也不知道是什么东西

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/743028
推荐阅读
相关标签
  

闽ICP备14008679号