網(wǎng)絡(luò)有很多的“機(jī)器學(xué)習(xí)入門”和“深度學(xué)習(xí)入門”的課程,初學(xué),利用示例代碼和別人已經(jīng)處理好的clean data來做練習(xí),感覺很順暢,可每當(dāng)要自己單飛之時,卻發(fā)現(xiàn)連最“趁手”的數(shù)據(jù)都沒有時,老夫?qū)嵲谑且荒樏H?。無法,痛定思痛,從最真正的“入門”——數(shù)據(jù)預(yù)處理(或者“清洗”數(shù)據(jù))開始,將之間沒有踩過的坑,一一踩過,彼時,方能自稱“入門”了吧。
當(dāng)前比較流行的神經(jīng)網(wǎng)絡(luò)架構(gòu),就本質(zhì)而言,主要分為:CNN(Convolution Neural Network)卷積神經(jīng)網(wǎng)絡(luò)以及RNN(Recurrent Neural Network)遞歸神經(jīng)網(wǎng)絡(luò)兩類。本文針對的“數(shù)據(jù)”入門,是利用原始訓(xùn)練文本(或者叫訓(xùn)練語料)來生成詞向量(Word Vector)。
本文使用的訓(xùn)練語料,來自《北京折疊》這部短篇小說。
首先導(dǎo)入必要的工具庫。
import jieba
from gensim.models.word2vec import Word2Vec
本文使用jieba中文分詞工具。
讀入原始語料,《北京折疊》文本。
file = open('beijingzhedie', encoding='utf-8')
使用open打開文件時,切記在完成文件的所有操作后,要調(diào)用close函數(shù),關(guān)閉文件。
去除原始文本中的標(biāo)點(diǎn)符號,并替換為空格
cont = file.readline()
cont = cont.replace(',', ' ')
cont = cont.replace('。', ' ')
cont = cont.replace('“', ' ')
cont = cont.replace('”', ' ')
cont = cont.replace('?', ' ')
cont = cont.replace(':', ' ')
cont = cont.replace('‘', ' ')
cont = cont.replace('’', ' ')
cont = cont.replace('!', ' ')
cont = cont.replace('……', ' ')
cont = cont.replace('、', ' ')
使用Jieba分詞工具,對中文語料進(jìn)行分詞。
seg_list = jieba.cut(cont)
sents = ' '.join(seg_list)
sents = sents.split()[1:]
具體的Jieba分詞工具使用方式,請查閱其官網(wǎng),或其Github Repository。需要注意的一點(diǎn)是,sents = sents.split()[1:],此代碼是去除utf-8編碼文件的開頭編碼的。
使用Gensim Word2Vec訓(xùn)練網(wǎng)絡(luò),得到詞向量。
w2v = Word2Vec(sents, iter=10, min_count=5, window=5, workers=2)
至此,即已經(jīng)得到了中文詞向量,后續(xù)將其送入RNN,即可以開始網(wǎng)絡(luò)的訓(xùn)練了。