项目中需要将 whitelist中的单词,进行词干的提取工作。
whitelist可能如下:
sissied
loveed
mianmianies hit
Mut had
因为白名单中可能是单词也可能是词组,而且一些单词可能是三单形式、过去式。
研究了一下,下面的方法可行。
#-*- coding:utf-8 -*- import nltk f=open("../test","r") test=f.read() # test='sissied\nloveed\nmianmianies hit\nMut had\n' whitelist = [] word=[] for w in test: #读取的test中的每一个基本字符 if w != '\n': word.extend(w) #在遇到换行符之前,把test中的字母追加到word中,即word用来临时保存whitelist每一行的内容 else : whitelist.append([''.join(word)]) #把word的['s','i','s','s','i','e','d']合并为[‘sissied’] word=[] #然后把word清零,存放下一个单词 def stem( word): if word[0].islower(): #判断world的第一个字或单词是不是小写,因为大写可能是专有名词,不需要提取词根 return stemmer.stem(word) #提取每一个单词的词根 else: return word whitelist_stemmed = [] for w in whitelist: ws = map(lambda w: stemmer.stem(w), w) ##提取每一个单词的单词的词根 whitelist_stemmed.append(' '.join(ws))