用python做中文自然語言預處理


這篇博客根據中文自然語言預處理的步驟分成幾個板塊。以做LDA實驗為例,在處理數據之前,會寫一個類似於實驗報告的東西,用來指導做實驗,OK,舉例:

一,實驗數據預處理(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做中文自然語言預處理,我將我所用的預處理全部貼到下面:

1,分詞.詞性標注以及去停用詞。見上一篇博客:http://www.cnblogs.com/nlp-yekai/p/3711360.html

3,做詞性篩選:

#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.標准化處理,去除空行,空白字符等。

#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()

后面的以后再寫吧,處理到這基本上可以導入各種模型跑起來了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM