当前位置:   article > 正文

NLTK库——词形还原(Lemmatization)_nltk词形还原(lemmatization)

nltk词形还原(lemmatization)

词形还原(Lemmatization)

词性还原,又称为Lemmatizetion

主要是把单词的词缀部分除去,从而得到单词的词干部分

词形还原(Lemmatization)与词干提取(stemming)的区别

词形还原是把单词还原成本身的形式:比如将‘cars’还原成car,把‘ate’还原成‘eat’,把‘handling’还原成‘handle’

词干提取则是提取单词的词干,比如将‘cars’提取出‘car’,将‘handling’提取出来‘handl’(单纯的去掉ing),对于‘ate’使用词干提取则不会有任何的效果。

使用NLTK库实现词形还原

实现词形还原的最简单的方法是利用NLTK库中提供的类,使用的方法如下:

  1. #从nltk库中导入需要的类,并且进行实例化
  2. from nltk.stem import WordNetLemmatizer
  3. wnl = WordNetLemmatizer()

 通过调用实例化对象wnl的lemmatize方法,传入需要进行词性还原的单词以及对应的词性,返回词性还原后的结果

  1. #分别定义需要进行还原的单词与相对应的词性
  2. words = ['cars','men','running','ate','saddest','fancier']
  3. pos_tags = ['n','n','v','v','a','a']
  4. for i in range(len(words)):
  5. print(words[i]+'--'+pos_tags[i]+'-->'+wnl.lemmatize(words[i],pos_tags[i]))
  1. cars--n-->car
  2. men--n-->men
  3. running--v-->run
  4. ate--v-->eat
  5. saddest--a-->sad
  6. fancier--a-->fancy

 注意,在使用词性进行还原的时候,一定要指明单词的词性!不然还原效果不好

使用NLTK库获取单词的词性,结合词形还原 来直接还原单词

  1. """
  2. __author__:shuangrui Guo
  3. __description__:
  4. """
  5. from nltk import pos_tag
  6. from nltk.stem import WordNetLemmatizer
  7. from nltk.corpus import wordnet
  8. wnl = WordNetLemmatizer()
  9. # 获取单词的词性
  10. def get_wordnet_pos(tag):
  11. if tag.startswith('J'):
  12. return wordnet.ADJ
  13. elif tag.startswith('V'):
  14. return wordnet.VERB
  15. elif tag.startswith('N'):
  16. return wordnet.NOUN
  17. elif tag.startswith('R'):
  18. return wordnet.ADV
  19. else:
  20. return None
  21. #分别定义需要进行还原的单词与相对应的词性
  22. words = ['cars','men','running','ate','saddest','fancier']
  23. for i in range(len(words)):
  24. print(words[i]+'--'+get_wordnet_pos(pos_tag([words[i]])[0][1])+'-->'+wnl.lemmatize(words[i],get_wordnet_pos(pos_tag([words[i]])[0][1])))

 

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

闽ICP备14008679号