赞
踩
词性还原,又称为Lemmatizetion
主要是把单词的词缀部分除去,从而得到单词的词干部分
词形还原是把单词还原成本身的形式:比如将‘cars’还原成car,把‘ate’还原成‘eat’,把‘handling’还原成‘handle’
词干提取则是提取单词的词干,比如将‘cars’提取出‘car’,将‘handling’提取出来‘handl’(单纯的去掉ing),对于‘ate’使用词干提取则不会有任何的效果。
实现词形还原的最简单的方法是利用NLTK库中提供的类,使用的方法如下:
- #从nltk库中导入需要的类,并且进行实例化
- from nltk.stem import WordNetLemmatizer
- wnl = WordNetLemmatizer()
通过调用实例化对象wnl的lemmatize方法,传入需要进行词性还原的单词以及对应的词性,返回词性还原后的结果
- #分别定义需要进行还原的单词与相对应的词性
- words = ['cars','men','running','ate','saddest','fancier']
- pos_tags = ['n','n','v','v','a','a']
-
- for i in range(len(words)):
- print(words[i]+'--'+pos_tags[i]+'-->'+wnl.lemmatize(words[i],pos_tags[i]))
- cars--n-->car
- men--n-->men
- running--v-->run
- ate--v-->eat
- saddest--a-->sad
- fancier--a-->fancy
注意,在使用词性进行还原的时候,一定要指明单词的词性!不然还原效果不好
- """
- __author__:shuangrui Guo
- __description__:
- """
- from nltk import pos_tag
- from nltk.stem import WordNetLemmatizer
- from nltk.corpus import wordnet
-
- wnl = WordNetLemmatizer()
- # 获取单词的词性
- def get_wordnet_pos(tag):
- if tag.startswith('J'):
- return wordnet.ADJ
- elif tag.startswith('V'):
- return wordnet.VERB
- elif tag.startswith('N'):
- return wordnet.NOUN
- elif tag.startswith('R'):
- return wordnet.ADV
- else:
- return None
-
- #分别定义需要进行还原的单词与相对应的词性
- words = ['cars','men','running','ate','saddest','fancier']
- for i in range(len(words)):
- 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])))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。