這篇博客根據中文天然語言預處理的步驟分紅幾個板塊。以作LDA實驗爲例,在處理數據以前,會寫一個相似於實驗報告的東西,用來指導作實驗,OK,舉例:html
一,實驗數據預處理(python,結巴分詞)
1.對於爬取的評論作分詞和詞性標註處理(mac-result.txt)
2.對於結果只用公版的停用詞表去停用詞,不進行人工篩選(mac-result1.txt)
3.保留:名詞,名詞短語(二者爲評論描述主題)
形容詞,動詞,動詞短語(對主題的描述)以及其餘可能有實意的詞
去除:副詞,標點,擬聲詞等無實意詞包括/x /zg /uj /ul /e /d /uz /y
結果爲mac-result2.txt
4.標準化處理,合併空格,去除空白字符,處理後的文檔變爲「詞,空格,詞,空格。。。。」的形式。結果爲:mac-result3.txt
5.複合詞合成.分詞結果不許確,有專有名詞等,因此提取複合詞 mac-result4.txt(提取的複合詞表fuheci.txt)
6.作或者不作複合詞提取,每十行合併(mac-result5.txt)直接作LDA實驗,抽取主題。python
標題是用Python作中文天然語言預處理,我將我所用的預處理所有貼到下面:app
1,分詞.詞性標註以及去停用詞。見上一篇博客:http://www.cnblogs.com/nlp-yekai/p/3711360.htmlspa
3,作詞性篩選:code
#coding utf-8 import os import sys import re f1=open("/home/alber/data_base/jd_content/app-mac/mac-result1.txt",'r') txt=f1.readlines() f1.close() txtlist=[] cixing=["/x","/zg","/uj","/ul","/e","/d","/uz","/y"]#詞列表爲本身定義要過濾掉的詞性 for line in txt: line_list2=re.split('[ ]', line) line_list=line_list2[:] for segs in line_list2: for K in cixing: if K in segs: line_list.remove(segs) break else: pass txtlist.extend(line_list) f2=open("/home/alber/data_base/jd_content/app-mac/mac-result2.txt",'a') resultlist=txtlist[:] for v in txtlist: if "/" in v: slope=v.index("/") letter=v[0:slope]+" " f2.write(letter) else: f2.write(v)
4.標準化處理,去除空行,空白字符等。htm
#coding=utf-8 import os import sys import re import time f1=open("/home/alber/data_base/jd_content/app-mac/mac-result2.txt",'r+') f2=open("/home/alber/data_base/jd_content/app-mac/mac-result3.txt","a") txt=f1.readlines() f1.close() list1=[] for line in txt: if len(line)>=2: line_clean=" ".join(line.split()) lines=line_clean+" "+"\n" f2.write(lines) else: pass f2.close()
後面的之後再寫吧,處理到這基本上能夠導入各類模型跑起來了。blog