项目中需要将 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))