国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
達(dá)觀數(shù)據(jù)基于Deep Learning的中文分詞嘗試

現(xiàn)有分詞介紹

自然語言處理(NLP,Natural Language Processing)是一個信息時代最重要的技術(shù)之一,簡單來講,就是讓計算機能夠理解人類語言的一種技術(shù)。在其中,分詞技術(shù)是一種比較基礎(chǔ)的模塊。對于英文等拉丁語系的語言而言,由于詞之間有空格作為詞邊際表示,詞語一般情況下都能簡單且準(zhǔn)確的提取出來。而中文日文等文字,除了標(biāo)點符號之外,字之間緊密相連,沒有明顯的詞邊界,因此很難將詞提取出來。分詞的意義非常大,在中文中,單字作為最基本的語義單位,雖然也有自己的意義,但表意能力較差,意義較分散,而詞的表意能力更強,能更加準(zhǔn)確的描述一個事物,因此在自然語言處理中,通常情況下詞(包括單字成詞)是最基本的處理單位。在具體的應(yīng)用上,比如在常用的搜索引擎中,term如果是詞粒度的話,不僅能夠減少每個term的倒排列表長度,提升系統(tǒng)性能,并且召回的結(jié)果相關(guān)性高更準(zhǔn)確。比如搜索query“的確”,如果是單字切分的話,則有可能召回“你講的確實在理”這樣的doc。分詞方法大致分為兩種:基于詞典的機械切分,基于統(tǒng)計模型的序列標(biāo)注切分兩種方式。

基于詞典的方法

基于詞典的方法本質(zhì)上就是字符串匹配的方法,將一串文本中的文字片段和已有的詞典進(jìn)行匹配,如果匹配到,則此文字片段就作為一個分詞結(jié)果。但是基于詞典的機械切分會遇到多種問題,最為常見的包括歧義切分問題和未登錄詞問題

歧義切分

歧義切分指的是通過詞典匹配給出的切詞結(jié)果和原來語句所要表達(dá)的意思不相符或差別較大,在機械切分中比較常見,比如下面的例子:“結(jié)婚的和尚未結(jié)婚的人”,通過機械切分的方式,會有兩種切分結(jié)果:1,“結(jié)婚/的/和/尚未/結(jié)婚/的/人”;2,“結(jié)婚/的/和尚/未/結(jié)婚/的/人”??梢悦黠@看出,第二種切分是有歧義的,單純的機械切分很難避免這樣的問題。

未登錄詞識別

未登錄詞識別也稱作新詞發(fā)現(xiàn),指的是詞沒有在詞典中出現(xiàn),比如一些新的網(wǎng)絡(luò)詞匯,如“網(wǎng)紅”,“走你”;一些未登錄的人名,地名;一些外語音譯過來的詞等等?;谠~典的方式較難解決未登錄詞的問題,簡單的case可以通過加詞典解決,但是隨著字典的增大,可能會引入新的bad case,并且系統(tǒng)的運算復(fù)雜度也會增加。

基于詞典的機械分詞改進(jìn)方法

為了解決歧義切分的問題,在中文分詞上有很多優(yōu)化的方法,常見的包括正向最大匹配,逆向最大匹配,最少分詞結(jié)果,全切分后選擇路徑等多種算法。

最大匹配方法

正向最大匹配指的是從左到右對一個字符串進(jìn)行匹配,所匹配的詞越長越好,比如“中國科學(xué)院計算研究所”,按照詞典中最長匹配原則的切分結(jié)果是:“中國科學(xué)院/計算研究所”,而不是“中國/科學(xué)院/計算/研究所”。但是正向最大匹配也會存在一些bad case,常見的例子如:“他從東經(jīng)過我家”,使用正向最大匹配會得到錯誤的結(jié)果:“他/從/東經(jīng)/過/我/家”。

逆向最大匹配的順序是從右向左倒著匹配,如果能匹配到更長的詞,則優(yōu)先選擇,上面的例子“他從東經(jīng)過我家”逆向最大匹配能夠得到正確的結(jié)果“他/從/東/經(jīng)過/我/家”。但是逆向最大匹配同樣存在bad case:“他們昨日本應(yīng)該回來”,逆向匹配會得到錯誤的結(jié)果“他們/昨/日本/應(yīng)該/回來”。

針對正向逆向匹配的問題,將雙向切分的結(jié)果進(jìn)行比較,選擇切分詞語數(shù)量最少的結(jié)果。但是最少切分結(jié)果同樣有bad case,比如“他將來上海”,正確的切分結(jié)果是“他/將/來/上海”,有4個詞,而最少切分結(jié)果“他/將來/中國”只有3個詞。

全切分路徑選擇方法

全切分方法就是將所有可能的切分組合全部列出來,并從中選擇最佳的一條切分路徑。關(guān)于路徑的選擇方式,一般有n最短路徑方法,基于詞的n元語法模型方法等。

n最短路徑方法的基本思想就是將所有的切分結(jié)果組成有向無環(huán)圖,每個切詞結(jié)果作為一個節(jié)點,詞之間的邊賦予一個權(quán)重,最終找到權(quán)重和最小的一條路徑作為分詞結(jié)果。

基于詞的n元語法模型可以看作是n最短路徑方法的一種優(yōu)化,不同的是,根據(jù)n元語法模型,路徑構(gòu)成時會考慮詞的上下文關(guān)系,根據(jù)語料庫的統(tǒng)計結(jié)果,找出構(gòu)成句子最大模型概率。一般情況下,使用unigram和bigram的n元語法模型的情況較多。

基于序列標(biāo)注的分詞方法

針對基于詞典的機械切分所面對的問題,尤其是未登錄詞識別,使用基于統(tǒng)計模型的分詞方式能夠取得更好的效果。基于統(tǒng)計模型的分詞方法,簡單來講就是一個序列標(biāo)注問題。

在一段文字中,我們可以將每個字按照他們在詞中的位置進(jìn)行標(biāo)注,常用的標(biāo)記有以下四個label:B,Begin,表示這個字是一個詞的首字;M,Middle,表示這是一個詞中間的字;E,End,表示這是一個詞的尾字;S,Single,表示這是單字成詞。分詞的過程就是將一段字符輸入模型,然后得到相應(yīng)的標(biāo)記序列,再根據(jù)標(biāo)記序列進(jìn)行分詞。舉例來說:“達(dá)觀數(shù)據(jù)位是企業(yè)大數(shù)據(jù)服務(wù)商”,經(jīng)過模型后得到的理想標(biāo)注序列是:“BMMESBEBMEBME”,最終還原的分詞結(jié)果是“達(dá)觀數(shù)據(jù)/是/企業(yè)/大數(shù)據(jù)/服務(wù)商”。

在NLP領(lǐng)域中,解決序列標(biāo)注問題的常見模型主要有HMM和CRF。

HMM

HMM(Hidden Markov Model)隱馬爾科夫模型應(yīng)用非常廣泛,基本的思想就是根據(jù)觀測值序列找到真正的隱藏狀態(tài)值序列。在中文分詞中,一段文字的每個字符可以看作是一個觀測值,而這個字符的詞位置label(BEMS)可以看作是隱藏的狀態(tài)。使用HMM的分詞,通過對切分語料庫進(jìn)行統(tǒng)計,可以得到模型中5大要要素:起始概率矩陣,轉(zhuǎn)移概率矩陣,發(fā)射概率矩陣,觀察值集合,狀態(tài)值集合。在概率矩陣中,起始概率矩陣表示序列第一個狀態(tài)值的概率,在中文分詞中,理論上M和E的概率為0。轉(zhuǎn)移概率表示狀態(tài)間的概率,比如B->M的概率,E->S的概率等。而發(fā)射概率是一個條件概率,表示當(dāng)前這個狀態(tài)下,出現(xiàn)某個字的概率,比如p(人|B)表示在狀態(tài)為B的情況下人字的概率。

有了三個矩陣和兩個集合后,HMM問題最終轉(zhuǎn)化成求解隱藏狀態(tài)序列最大值的問題,求解這個問題最長使用的是Viterbi算法,這是一種動態(tài)規(guī)劃算法,具體的算法可以參考維基百科詞條,在此不詳細(xì)展開。

(https://en.wikipedia.org/wiki/Viterbi_algorithm)

1HMM模型示意圖

CRF

CRF(Conditional random field,條件隨機場)是用來標(biāo)注和劃分結(jié)構(gòu)數(shù)據(jù)的概率化結(jié)構(gòu)模型,通常使用在模式識別和機器學(xué)習(xí)中,在自然語言處理和圖像處理等領(lǐng)域中得到廣泛應(yīng)用。和HMM類似,當(dāng)對于給定的輸入觀測序列X和輸出序列Y,CRF通過定義條件概率P(Y|X),而不是聯(lián)合概率分布P(X,Y)來描述模型。CRF算法的具體算法可以參考維基百科詞條。

(https://en.wikipedia.org/wiki/Conditional_random_field)

圖2:不同概率模型之間的關(guān)系及演化圖

在實際應(yīng)用中有很多工具包可以使用,比如CRF++,CRFsuite,SGD,Wapiti 等,其中CRF++的準(zhǔn)確度較高。在分詞中使用CRF++時,主要的工作是特征模板的配置。CRF++支持unigram,bigram兩種特征,分別以U和B開頭。舉例來講U00:%x[-2,0] 表示第一個特征,特征取值是當(dāng)前字的前方第二個字,U01:%x[-1,0] 表示第二個特征,特征取值當(dāng)前字前一個字,U02:%x[0,0] 表示第三個特征,取當(dāng)前字,以此類推。特征模板可以支持多種特征,CRF++會根據(jù)特征模板提取特征函數(shù),用于模型的建立和使用。特征模板的設(shè)計對分詞效果及訓(xùn)練時間影響較大,需要分析嘗試找到適用的特征模板。

深度學(xué)習(xí)介紹

隨著AlphaGo的大顯神威,Deep Learning(深度學(xué)習(xí))的熱度進(jìn)一步提高。深度學(xué)習(xí)來源于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)一般由輸入層,隱藏層,輸出層組成,其中隱藏層的數(shù)目按需確定。深度學(xué)習(xí)可以簡單的理解為多層神經(jīng)網(wǎng)絡(luò),但是深度學(xué)習(xí)的卻不僅僅是神經(jīng)網(wǎng)絡(luò)。深度模型將每一層的輸出作為下一層的輸入特征,通過將底層的簡單特征組合成為高層的更抽象的特征來進(jìn)行學(xué)習(xí)。在訓(xùn)練過程中,通常采用貪婪算法,一層層的訓(xùn)練,比如在訓(xùn)練第k層時,固定訓(xùn)練好的前k-1層的參數(shù)進(jìn)行訓(xùn)練,訓(xùn)練好第k層之后的以此類推進(jìn)行一層層訓(xùn)練。

3AlphaGo神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練過程及架構(gòu)

 

圖4:Google Tensorflow官網(wǎng)的神經(jīng)網(wǎng)絡(luò)演示示意圖

深度學(xué)習(xí)在很多領(lǐng)域都有所應(yīng)用,在圖像和語音識別領(lǐng)域中已經(jīng)取得巨大的成功。從2012年開始,LSVRC(Large Scale Visual Recognition Challenge)比賽中,基于Deep Learningd 計算框架一直處于領(lǐng)先。2015年LSVRC(http://www.image-net.org/challenges/LSVRC/2015/results)的比賽中,微軟亞洲研究院(MSRA)在圖像檢測(Object detection),圖像分類定位(Object Classification+localization)上奪冠,他們使用的神經(jīng)網(wǎng)絡(luò)深達(dá)152層。

在NLP中的應(yīng)用

自然語言處理上,深度學(xué)習(xí)在機器翻譯、自動問答、文本分類、情感分析、信息抽取、序列標(biāo)注、語法解析等領(lǐng)域都有廣泛的應(yīng)用。2013年末google發(fā)布的word2vec工具,可以看做是深度學(xué)習(xí)在NLP領(lǐng)域的一個重要應(yīng)用,雖然word2vec只有三層神經(jīng)網(wǎng)絡(luò),但是已經(jīng)取得非常好的效果。通過word2vec,可以將一個詞表示為詞向量,將文字?jǐn)?shù)字化,更好的讓計算機理解。使word2vec模型,我們可以方便的找到同義詞或聯(lián)系緊密的詞,或者意義相反的詞等。

圖5:基于微信數(shù)據(jù)制作的word2vec模型測試: 編程

圖6:基于微信數(shù)據(jù)制作的word2vec模型測試:韋德

詞向量介紹

詞向量的意思就是通過一個數(shù)字組成的向量來表示一個詞,這個向量的構(gòu)成可以有很多種。最簡單的方式就是所謂的one-hot向量。假設(shè)在一個語料集合中,一共有n個不同的詞,則可以使用一個長度為n的向量,對于第i個詞(i=0…n-1),向量index=i處值為1外,向量其他位置的值都為0,這樣就可以唯一的通過一個[0,0,1,…,0,0]形式的向量表示一個詞。one-hot向量比較簡單也容易理解,但是有很多問題,比如當(dāng)加入新詞時,整個向量的長度會改變,并且存在維數(shù)過高難以計算的問題,以及向量的表示方法很難體現(xiàn)兩個詞之間的關(guān)系,因此一般情況下one-hot向量較少的使用。

如果考慮到詞和詞之間的聯(lián)系,就要考慮詞的共現(xiàn)問題。最簡單的是使用基于文檔的向量表示方法來給出詞向量?;舅枷胍埠芎唵危僭O(shè)有n篇文檔,如果某些詞經(jīng)常成對出現(xiàn)在多篇相同的文檔中,我們則認(rèn)為這兩個詞聯(lián)系非常緊密。對于文檔集合,可以將文檔按順編號(i=0…n-1),將文檔編導(dǎo)作為向量索引,這樣就有一個n維的向量。當(dāng)一個詞出現(xiàn)在某個文檔i中時,向量i處值為1,這樣就可以通過一個類似[0,1,0,…,1,0]形式的向量表示一個詞?;谖臋n的詞向量能夠很好的表示詞之間的關(guān)系,但是向量的長度和語料庫的大小相關(guān),同樣會存在維度變化問題。

考慮一個固定窗口大小的文本片段來解決維度變化問題,如果在這樣的片段中,兩個詞出現(xiàn)了,就認(rèn)為這兩個詞有關(guān)。舉例來講,有以下三句話: “我\喜歡\你”,“我\愛\運動”,“我\愛\攝影”,如果考慮窗口的大小為1,也就是認(rèn)為一個詞只和它前面和后面的詞有關(guān),通過統(tǒng)計共現(xiàn)次數(shù),我們能夠得到下面的矩陣:

圖7:基于文本窗口共現(xiàn)統(tǒng)計出來的矩陣

可以看到這是一個n*n的對稱矩陣X,這個矩陣的維數(shù)會隨著詞典數(shù)量的增加而增大,通過SVD(Singular Value Decomposition,奇異值分解),我們可以將矩陣維度降低,但仍存在一些問題: 矩陣X維度經(jīng)常改變,并且由于大部分詞并不是共現(xiàn)而導(dǎo)致的稀疏性,矩陣維度過高計算復(fù)雜度高等問題。

Word2vec是一個多層的神經(jīng)網(wǎng)絡(luò),同樣可以將詞向量化。在Word2vec中最重要的兩個模型是CBOW(Continuous Bag-of-Word)模型和Skip-gram(Continuous Skip-gram)模型,兩個模型都包含三層: 輸入層,投影層,輸出層。CBOW模型的作用是已知當(dāng)前詞Wt的上下文環(huán)境(Wt-2,Wt-1,Wt+1,Wt+2)來預(yù)測當(dāng)前詞,Skip-gram模型的作用是根據(jù)當(dāng)前詞Wt來預(yù)測上下文(Wt-2,Wt-1,Wt+1,Wt+2)。在模型求解中,和一般的機器學(xué)習(xí)方法類似,也是定義不同的損失函數(shù),使用梯度下降法尋找最優(yōu)值。Word2vec模型求解中,使用了Hierarchical Softmax方法和Negative Sampling兩種方法。通過使用Word2vec,我們可以方便的將詞轉(zhuǎn)化成向量表示,讓計算機和理解圖像中的每個點一樣,數(shù)字化詞的表現(xiàn)。

LSTM模型介紹

深度學(xué)習(xí)有很多種不同類型的網(wǎng)絡(luò),在圖像識別領(lǐng)域,CNN(Convolutional Neural Network,卷積神經(jīng)網(wǎng)絡(luò))使用的較多,而在NLP領(lǐng)域,考慮到上下文的RNN(Recurrent Neural Networks,循環(huán)神經(jīng)網(wǎng)絡(luò))取得了巨大的成功。在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)中,從輸入層到隱藏層到輸出層,層之間是全連接的,但是每層內(nèi)部的節(jié)點之間是無連接的。因為這樣的原因,傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)不能利用上下文關(guān)系, 而在自然語言處理中,上下文關(guān)系非常重要,一個句子中前后詞并不獨立,不同的組合會有不同的意義,比如”優(yōu)秀”這個詞,如果前面是”不”字,則意義完全相反。RNN則考慮到網(wǎng)絡(luò)前一時刻的輸出對當(dāng)前輸出的影響,將隱藏層內(nèi)部的節(jié)點也連接起來,即當(dāng)前時刻一個節(jié)點的輸入除了上一層的輸出外,還包括上一時刻隱藏層的輸出。RNN在理論上可以儲存任意長度的轉(zhuǎn)態(tài)序列,但是在不同的場景中這個長度可能不同。比如在詞的預(yù)測例子中: 1,“他是億萬富翁,他很?”; 2,“他的房子每平米物業(yè)費40元,并且像這樣的房子他有十幾套,他很?”。從這兩個句子中我們已經(jīng)能猜到?代表“有錢”或其他類似的詞匯,但是明顯,第一句話預(yù)測最后一個詞時的上線文序列很短,而第二段話較長。如果預(yù)測一個詞匯需要較長的上下文,隨著這個距離的增長,RNN將很難學(xué)到這些長距離的信息依賴,雖然這對我們?nèi)祟愊鄬θ菀?。在實踐中,已被證明使用最廣泛的模型是LSTM(Long Short-Term Memory,長短時記憶)很好的解決了這個問題。

LSTM最早由Hochreiter 及 Schmidhuber在1997年的論文中提出。首先LSTM也是一種RNN,不同的是LSTM能夠?qū)W會遠(yuǎn)距離的上下文依賴,能夠存儲較遠(yuǎn)距離上下文對當(dāng)前時間節(jié)點的影響。

所有的RNN都有一串重復(fù)的神經(jīng)網(wǎng)絡(luò)模塊。對于標(biāo)準(zhǔn)的RNN,這個模塊都比較簡單,比如使用單獨的tanh層。LSTM擁有類似的結(jié)構(gòu),但是不同的是,LSTM的每個模塊擁有更復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu): 4層相互影響的神經(jīng)網(wǎng)絡(luò)。在LSTM每個單元中,因為門結(jié)構(gòu)的存在,對于每個單元的轉(zhuǎn)態(tài),使得LSTM擁有增加或減少信息的能力。

圖8:標(biāo)準(zhǔn)RNN模型中的重復(fù)模塊包括1層結(jié)構(gòu)

 

圖9:LSTM模型中的重復(fù)模塊包括4層結(jié)構(gòu)

深度學(xué)習(xí)庫keras介紹

Keras(http://keras.io)是一個非常易用的深度學(xué)習(xí)框架,使用python語言編寫,是一個高度模塊化的神經(jīng)網(wǎng)絡(luò)庫,后端同時支持Theano和TensorFlow,而Theano和TensorFlow支持GPU,因此使用keras可以使用GPU加速模型訓(xùn)練。Keras中包括了構(gòu)建模型常用的模塊,如Optimizers優(yōu)化方法模塊,Activations激活函數(shù)模塊,Initializations初始化模塊,Layers多種網(wǎng)絡(luò)層模塊等,可以非常方便快速的搭建一個網(wǎng)絡(luò)模型,使得開發(fā)人員可以快速上手,并將精力放在模型設(shè)計而不是具體實現(xiàn)上。常見的神經(jīng)網(wǎng)絡(luò)模型如CNN,RNN等,使用keras都可以很快搭建出來,開發(fā)人員只需要將數(shù)據(jù)準(zhǔn)備成keras需要的格式丟進(jìn)網(wǎng)絡(luò)訓(xùn)練即可。如果對keras中自帶的layer有更多的需求,keras還可以自己定制所需的layer。

Keras在NLP中的應(yīng)用

Keras項目中的example自帶了多個示例,包括經(jīng)典的mnist手寫識別測試等,其中和NLP相關(guān)的示例有很多,比如基于imdb數(shù)據(jù)的情感分析、文本分類、序列標(biāo)注等。其中l(wèi)stm_text_generation.py示例可以用來參考設(shè)計序列標(biāo)注問題,這個示例試圖通過LSTM學(xué)習(xí)尼采的作品,通過序列標(biāo)注的思想來訓(xùn)練一個文本生成器模型。下面著重看一下兩個關(guān)鍵點:模型數(shù)據(jù)格式及模型設(shè)計。

訓(xùn)練數(shù)據(jù)準(zhǔn)備

這段代碼是數(shù)據(jù)準(zhǔn)備的情況。將尼采全文進(jìn)行數(shù)據(jù)切割,每40個字符為一個片段,將緊接這個片段的字符作為預(yù)測值,來進(jìn)行訓(xùn)練。字符片段的間隔為3。

模型設(shè)計

在模型設(shè)計上,主要是使用了兩層LSTM,每層的輸出維度為512,并在每層LSTM后面加入了Dropout層,來防止過擬合。整個模型的輸入維度是字符類別的個數(shù),輸入字符串長度是40,模型的輸出維度也是字符類別長度。整個模型表達(dá)的意思是每輸入40個字符,就會從模型中輸出一個預(yù)測的字符。因為LSTM的對長依賴term的記憶性,因此在上下文很長(40個字符)的情況下也可以表現(xiàn)的很好。

基于深度學(xué)習(xí)方式的分詞嘗試

基于上面的知識,可以考慮使用深度學(xué)習(xí)的方法進(jìn)行中文分詞。分詞的基礎(chǔ)思想還是使用序列標(biāo)注問題,將一個句子中的每個字標(biāo)記成BEMS四種label。模型整的輸入是字符序列,輸出是一個標(biāo)注序列,因此這是一個標(biāo)準(zhǔn)的sequence to sequence問題。因為一個句子中每個字的上下文對這個字的label類型影響很大,因此考慮使用RNN模型來解決。

環(huán)境介紹

測試硬件是Macbook Pro 2014 Mid高配版,帶Nvidia GT 750M GPU,雖然GPU性能有限,但通過測試性能還是強過mac自帶的i7 CPU。使用GPU進(jìn)行模型運算,需要安裝Nvidia的cuda相關(guān)程序及cuDNN庫,會有較大的性能提升。軟件方面使用python2.7,安裝好了keras,theano及相關(guān)庫。關(guān)于keras使用GPU訓(xùn)練的環(huán)境搭建問題,可以參考這篇文章(Run Keras on Mac OS with GPU,http://blog.wenhaolee.com/run-keras-on-mac-os-with-gpu/)

模型訓(xùn)練

模型訓(xùn)練使用的是經(jīng)典的bakeoff2005中的微軟研究院的切分語料,將其中的train部分拿過來做訓(xùn)練,將test作為最終的測試。

訓(xùn)練數(shù)據(jù)準(zhǔn)備

首先,將訓(xùn)練樣本中出現(xiàn)的所有字符全部映射成對應(yīng)的數(shù)字,將文本數(shù)字化,形成一個字符到數(shù)據(jù)的映射。在分詞中,一個詞的label受上下文影響很大,因此參考之前提到的lstm_text_generation.py示例,我們將一個長度為n個字符的輸入文本處理成n個長度為k的向量,k為奇數(shù)。舉例來說,當(dāng)k=7時,表示考慮了一個字前3個字和后三個字的上下文,將這個七個字作為一個輸入,輸出就是這個字的label類型(BEMS)。

基礎(chǔ)模型建立

參考lstm_text_generation.py 中的模型搭建方式,我們采用一層的LSTM構(gòu)建網(wǎng)絡(luò),代碼如下

其中,輸入的維度input_dim 是字符類別總數(shù),hidden_node 是隱藏層的結(jié)點個數(shù)。在上面的模型中,第一層輸入層Embedding的作用是將輸入的整數(shù)向量化。在現(xiàn)在這個模型中,輸入是一個一維向量,里面每個值是字符對應(yīng)的整數(shù),Embedding層就可以將這些整數(shù)向量化,簡單來講就是生成了每個字的字向量。接下來緊跟著一層是LSTM,它輸出維度也是隱藏層的結(jié)點個數(shù)。Dropout層的作用是讓一些神經(jīng)節(jié)點隨機不工作,來防止過擬合現(xiàn)象。Dense層是最后的輸出,這里nb_classes的數(shù)目是4,代表一個字符的label。

模型建立好后開始訓(xùn)練,重復(fù)20次,訓(xùn)練的結(jié)果如下:

圖10:基礎(chǔ)模型(1層LSTM優(yōu)化器RMSprop訓(xùn)練20次

訓(xùn)練好后,我們使用msr_test的測試數(shù)據(jù)進(jìn)行分詞,并將最終的分詞結(jié)果使用icwb2自帶的腳本進(jìn)行測試,結(jié)果如下:

圖11:基礎(chǔ)模型F Score: 0.845

可以看到基礎(chǔ)模型的F值一般,比傳統(tǒng)的CRF效果差的較多,因此考慮優(yōu)化模型。

效果改進(jìn)

模型參數(shù)調(diào)整

首先想到的是模型參數(shù)的調(diào)整。Keras官方文檔中提到,RMSprop優(yōu)化方法在RNN網(wǎng)絡(luò)中通常是一個好的選擇,但是在嘗試了其他的優(yōu)化器后,比如Adam,發(fā)現(xiàn)可以取得更好的效果:

圖12:1層LSTM優(yōu)化器Adam訓(xùn)練20次

可以看到,Adam在訓(xùn)練過程中的精度就已經(jīng)高于RMSprop,使用icwb2的測試結(jié)果為:

圖13:修改優(yōu)化器Adam后的模型F Score:0.889

模型結(jié)構(gòu)改變

現(xiàn)在網(wǎng)絡(luò)結(jié)構(gòu)較簡單,只有一層LSTM,參考文檔示例中的模型設(shè)計,考慮使用兩層的LSTM來進(jìn)行測試,修改后的代碼如下:

注意,第一層LSTM有個return_sequences =True可以將最后一個結(jié)果出入到輸出序列,保證輸出的tensor是3D的,因為LSTM的輸入要求是3D的tensor。

兩層LSTM模型訓(xùn)練過程如下:

圖14:2層LSTM優(yōu)化器Adam訓(xùn)練20次的模型

可以看到,兩層LSTM使得模型更加復(fù)雜,訓(xùn)練時常也增加不少。模型訓(xùn)練后,使用icwb2的測試結(jié)果為:

圖15:兩層LSTM的模型F Score:0.889

可以看到,隨著模型的復(fù)雜,雖然F Score無提升,但是其他的指標(biāo)有一定的提升。一般來說,神經(jīng)網(wǎng)絡(luò)在大量訓(xùn)練數(shù)據(jù)下也會有更好的效果,后續(xù)會繼續(xù)嘗試更大數(shù)據(jù)集更復(fù)雜模型的效果。

總結(jié)和展望

使用深度學(xué)習(xí)技術(shù),給NLP技術(shù)給中文分詞技術(shù)帶來了新鮮血液,改變了傳統(tǒng)的思路。深度神經(jīng)網(wǎng)絡(luò)的優(yōu)點是可以自動發(fā)現(xiàn)特征,大大減少了特征工程的工作量,隨著深度學(xué)習(xí)技術(shù)的進(jìn)一步發(fā)展,在NLP領(lǐng)域?qū)l(fā)揮更大的作用。達(dá)觀數(shù)據(jù)將在已有成熟的NLP算法及模型基礎(chǔ)上,逐漸融合基于深度神經(jīng)網(wǎng)絡(luò)的NLP模型,在文本分類、序列標(biāo)注、情感分析、語義分析等功能上進(jìn)一步優(yōu)化提升效果,來更好為客戶服務(wù)。

作者簡介

高翔,達(dá)觀數(shù)據(jù)聯(lián)合創(chuàng)始人,上海交通大學(xué)通信碩士,負(fù)責(zé)達(dá)觀數(shù)據(jù)產(chǎn)品技術(shù)相關(guān)開發(fā)管理工作,曾任職于盛大文學(xué)、盛大創(chuàng)新院,在搜索引擎、自然語言處理、機器學(xué)習(xí)及前端技術(shù)有著豐富的經(jīng)驗。

Determine the place they look like pet dander dust installing proper treatment. Much rest as full report and full fledged mania and talk with hay www.viagrapricebest.com/ fever and sensation radiates up straight.

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
深度學(xué)習(xí)必備手冊(上)
NLP+詞法系列(一)︱中文分詞技術(shù)小結(jié)、幾大分詞引擎的介紹與比較
干貨|百分點首席算法科學(xué)家蘇海波:深度學(xué)習(xí)在文本分析中的應(yīng)用
直觀比較四種NLP模型 - 神經(jīng)網(wǎng)絡(luò),RNN,CNN,LSTM
一文讀懂深度學(xué)習(xí):從神經(jīng)元到BERT
【技術(shù)綜述】深度學(xué)習(xí)在自然語言處理中的應(yīng)用發(fā)展史
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服