1. 程式人生 > >3h: 中文 前處理4:斷句 前處理8:標點清洗 前處理12:停用詞清洗

3h: 中文 前處理4:斷句 前處理8:標點清洗 前處理12:停用詞清洗

0.讀取檔案的處理辦法
# encoding: UTF-8
import re
fileBefPro=open('E:\\dataMining\\data.txt')
fileAftPro=open('E:\\dataMining\\after.txt','a')
iter_f=iter(fileBefPro)
for line in iter_f:#讀一行就操作一行
    #在這裡進行處理哈
    fileAftPro.write(str(line))
fileAftPro.close()
fileBefPro.close()
-------------------------------------------------------------------------------------------
1.斷句
使用的是re中的split
split中使用中文分隔符:https://segmentfault.com/q/1010000002461248
# encoding: UTF-8
import re

str=u"【紅豆杉】紅豆杉作用與功效_紅豆杉抗癌藥品-健客網"
re.split(u'【|】|-|_', str)

for i in re.split(u'【|】|-|_',  str):
    print i
-------------------------------------------------------------------------------------------
2,清洗中文標點符號程式碼:http://blog.csdn.net/mach_learn/article/details/41744487
# encoding: UTF-8
import re
temp = "想要把一大段中文文字中所有的標點符號刪除掉,然後分詞製作語料庫使用,大神們有沒有辦法呢?或者哪位大神有中文語料庫給個連結好不好?我想做新聞的文字相似度分析,提取關鍵詞的時候需要語料庫。謝謝大神們~~~~~ "
temp = temp.decode("utf8")
string = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、
[email protected]
#¥%……&*()]+".decode("utf8"), "".decode("utf8"),temp) print string
或使用這個網址提供的3個辦法:http://www.itstrike.cn/Question/5860b8a2-6c44-44f4-8726-c5a7603d44cc.html

--------------------------------------------------------------------------------------------
3.停用詞清洗:http://blog.sina.com.cn/s/blog_bccfcaf90101ell5.html
http://blog.csdn.net/sanqima/article/details/50965439   在Python裡安裝Jieba中文分片語件
# encoding: UTF-8
import re
import jieba
#stopword=[line.strip().decode('utf-8') for line in open('E:\\dataMining\\chinese_stopword.txt').readlines()]

stopwords = {}.fromkeys([ line.rstrip() for line in open('E:\\dataMining\\chinese_stopword.txt') ])
segs = jieba.cut('聽說你超級喜歡萬眾掘金小遊戲啊啊啊,或者萬一你不喜歡我咧', cut_all=False)
final=''
for seg in segs:
    seg=seg.encode('utf-8')
    if seg not in stopwords:
         final+=seg
print final
----------------------------------------------------------------------------------------------
上面我們處理的是單個檔案哦
現在的問題:要是我們處理多個檔案咧?

綜上程式碼如下:

# encoding: UTF-8
import sys  
import re  
import codecs  
import os  
import shutil  
import jieba  
import jieba.analyse
  
#匯入自定義詞典  
#jieba  

#Read file and cut  
def read_file_cut():   
    stopwords = {}.fromkeys([ line.strip() for line in open('E:\\dataMining\\chinese_stopword.txt') ])
    #create path
    #要處理檔案的路徑
    path = "E:\\dataMining\\data\\"
    #處理完成後寫入檔案的路徑
    respath="E:\\dataMining\\result\\"
    #isdir(s)是否是一個目錄
    if os.path.isdir(respath):  #如果respath這個路徑存在
        shutil.rmtree(respath, True)  #則遞迴移除這個路徑,os.removedirs(respath) 不能刪除非空目錄
    os.makedirs(respath)  #重新建立一個respath的多級目錄
        
        
    #讀出原始檔案的個數
    total="%d" % len(os.listdir("E:\\dataMining\\data"))
    #一共有total個txt檔案
    print total  
  
    num = 1
    total=int(total)
    while num<=total:
        name = "%d" % num   
        fileName = path + str(name) + ".txt"  
        resName = respath + str(name) + ".txt"  
        source = open(fileName, 'r')  #r表示只讀檔案
        #if os.path.exists(resName):  
         #   os.remove(resName) #remove(path)表示刪除檔案 --removedirs(path)表示刪除多級目錄
        #使用codecs模組提供的方法建立指定編碼格式檔案
        #open(fname,mode,encoding,errors,buffering)
        result = codecs.open(resName, 'w', 'utf-8')  
        line = source.readline()  #讀取一行
        line = line.rstrip('\n')  #除首尾空格 
        while line!="":
            #line = unicode(line, "utf-8") #將unicode轉換成utf-8,才能寫入到檔案中
            output=''
            strr=''
            #斷句 還可以接著新增.......
            for i in re.split(u'【|】|-|_',line):
                strr=strr+i+'\t'
            #清洗中文標點符號 還可以接著新增.......
            string = re.sub("[\.\!\/_,$%^*(+\"\']+|[+——!,。?、[email protected]#¥%……&*()]+".decode("utf-8"),"",strr)
            #停用詞清洗
            segs = jieba.cut(string,cut_all=False)
            for seg in segs:
                seg=seg.encode('utf-8')
                segs=[seg for seg in segs if seg not in stopwords]
                output = ' '.join(segs)#空格拼接
            print output
            result.write(output + '\r\n')
            line = source.readline()  
        else:  
            print 'End file: ' + str(num)  
            source.close()  
            result.close()  
        num = num + 1
    else:
	    print 'End All'  
  
#Run function  
if __name__ == '__main__':  
    read_file_cut()


相關推薦

3h: 中文 處理4 處理8標點清洗 處理12清洗

0.讀取檔案的處理辦法# encoding: UTF-8 import re fileBefPro=open('E:\\dataMining\\data.txt') fileAftPro=open('E:\\dataMining\\after.txt','a') it

python使用jieba實現中文文檔分和去

分享圖片 lac lena idt center cut inpu span code 分詞工具的選擇:   現在對於中文分詞,分詞工具有很多種,比如說:jieba分詞、thulac、SnowNLP等。在這篇文檔中,筆者使用的jieba分詞,並且基於python3環境,選擇

利用java實現對文字的去除以及分處理

功能: 對txt文件進行分詞處理,並去除停用詞。 工具: IDEA,java,hankcs.hanlp.seg.common.Term等庫。 程式: import java.util.*; import java.io.*; import java.lang.String; imp

Python自然語言處理詞典

一 過濾文字 去除停用詞典和錯詞檢錯都可以用詞典的形式完成,以停用詞為例,我使用的應該是知網提供的中文停用詞典。測試的資料集是小學生數學題。 print(text) # 列印未去除停用詞前版本 with open(r"C:\Users\BF\Desktop\NLTK\stopwords.

php 去除常見中文(過濾敏感)

在用sphinx通過文章標題匹配相關文章時,去除停用詞後調出的文章相關性更好。 <?php header("Content-type:text/html;charset=utf-8"); $str = file_get_contents('stop.txt');//將常見中文停用詞表內容讀入

【Python】中文並過濾

中文分詞並過濾停用詞,python程式碼如下。 #coding=utf-8 import jieba input_path='../data/train_pos_100.txt' output_path='../data/train_pos_100_seg.txt' st

【java HanNLP】HanNLP 利用java實現對文字的去除以及分處理

HanNLP 功能很強大,利用它去停用詞,加入使用者自定義詞庫,中文分詞等,計算分詞後去重的個數、 maven pom.xml 匯入 <dependency> <groupId>com.hankcs</g

第二章基於IK的智慧分、細粒度分、同義詞、

2.  將檔案放入solr.war的WEB-INF/lib下 3.  將IKAnalyzer.cfg.xml、ext.dic、stopword.dic放到WEB-INF/classes目錄下,注意:classes目錄沒有,需要手動建立 4.  配置同義詞與停用詞 <

使用IKAnalyzer實現中文&去除中文

1、簡介:IKAnalyzer是一個開源的,基於java語言開發的輕量級的中文分詞工具包。這裡使用的是IKAnalyzer2012。 2、IK Analyzer 2012特性: (1)採用了特有的“正向迭代最細粒度切分演算法“,支援細粒度和智慧分詞兩種切分模式; (2)在

Python進行文字預處理(文字分,過濾,詞頻統計,特徵選擇,文字表示)

系統:win7 32位 分詞軟體:PyNLPIR 整合開發環境(IDE):Pycharm 功能:實現多級文字預處理全過程,包括文字分詞,過濾停用詞,詞頻統計,特徵選擇,文字表示,並將結果匯出為WEKA能夠處理的.arff格式。 直接上程式碼: #!/usr/bin/

中文的作用

首先什麼是中文分詞stop word? 英文是以詞為單位的,詞和詞之間是靠空格隔開,而中文是以字為單位,句子中所有的字連起來才能描述一個意思。例如,英文句子I am a student,用中文則為:“我是一個學生”。計算機可以很簡單通過空格知道studen

多版本中文詞表 + 多版本英文詞表 + python詞表合併程式

文章簡介與更新記錄 如果你只想獲取中文停用詞此表,請直接到文章結尾下載專案檔案,其中包括三個中文停用詞詞表,一個英文停用詞詞表和一個合併詞表的.py檔案 2017/07/04 建立文章,上傳檔案 2017/07/04 更新了合併程式碼,添加了新的中文停用詞

如何在java中去除中文文字的

1.  整體思路 第一步:先將中文文字進行分詞,這裡使用的HanLP-漢語言處理包進行中文文字分詞。 第二步:使用停

《思考快與慢》傳,兩位天才猶太心理學家的傳奇人生與學術故事4星|《思維的發現》

圖片 基本上 哲學 utf8 發出 思考 成功 整體 思想 思維的發現:關於決策與判斷的科學 全書主題是《思考快與慢》作者丹尼爾·卡尼曼和他的親密搭檔阿莫斯的傳奇人生與學術故事。 兩位都是心理學界的天才,都是以色列人。丹尼爾童年在巴黎生活,經歷過德軍占

《資料演算法Hadoop_Spark大資料處理技巧》艾提拉筆記.docx 第1章二次排序簡介 19 第2章二次排序詳細示例 42 第3章 Top 10 列表 54 第4章左外連線 96 第5

《資料演算法:Hadoop_Spark大資料處理技巧》艾提拉筆記.docx       第1章二次排序:簡介 19 第2章二次排序:詳細示例 42 第3章 Top 10 列表 54 第4章左外連線 96 第5章反轉排序 127 第6章

ASP.NET Core應用的錯誤處理[4]StatusCodePagesMiddleware中介軟體如何針對響應碼呈現錯誤頁面

StatusCodePagesMiddleware中介軟體與ExceptionHandlerMiddleware中介軟體比較類似,它們都是在後續請求處理過程中“出錯”的情況下利用一個錯誤處理器來完成最終的請求處理與響應的任務。它們之間的差異在於對“錯誤”的界定上,對於ExceptionHandlerMiddl

精通Python自然語言處理 4 詞性標註--單詞識別

   詞性標註被用於資訊檢索、機器翻譯、NER、語言分析等1、詞性標註簡介   一個對句中的每個識別符號分配詞類(如名詞、動詞、形容詞等)標記的過程。在nltk.tag包中並被TaggerIbase類所繼承。>>> text1 = nltk.word_tok

python練習六十二文件處理,往文件中所有添加指定的

文件處理 pytho += txt mat write 執行 nbsp 格式 往文件中所有添加指定的前綴方法一:open方法f_r = open(‘text.txt‘) f_w = open(‘text_new.txt‘,‘w+‘) i = 0 while True:

dpkg: 處理軟體包linux-image-4.8.0-36-generic (--remove)時出錯子程序已安裝post-removal指令碼返回錯誤狀態 1

sudo apt-get install geany 時報錯:“dpkg: 處理軟體包 linux-image-extra-4.8.0-36-generic (--remove)時出錯: 子程序 已安裝 post-removal 指令碼 返回錯誤狀態 1正在解除安裝 linu

4.非關系型數據庫(Nosql)之mongodb普通索引,唯一索引

log 索引 xpl sys watermark lang mon style gravity  一:普通索引 1創建一個新的數據庫 > use toto; switched to db toto