天天看點

Python 白名單的處理

項目中需要将 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']