項目中需要将 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))
輸出結果
>>> whitelist_stemmed
['sissi', 'love', 'mianmianies hit', 'Mut had']