天天看点

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']