中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

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

現(xiàn)有分詞介紹

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

基于詞典的方法

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

歧義切分

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

未登錄詞識(shí)別

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

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

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

最大匹配方法

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

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

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

全切分路徑選擇方法

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

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

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

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

針對(duì)基于詞典的機(jī)械切分所面對(duì)的問(wèn)題,尤其是未登錄詞識(shí)別,使用基于統(tǒng)計(jì)模型的分詞方式能夠取得更好的效果?;诮y(tǒng)計(jì)模型的分詞方法,簡(jiǎn)單來(lái)講就是一個(gè)序列標(biāo)注問(wèn)題。

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

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

HMM

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

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

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

1HMM模型示意圖

CRF

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

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

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

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

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

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

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

 

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

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

在NLP中的應(yīng)用

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

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

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

詞向量介紹

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

如果考慮到詞和詞之間的聯(lián)系,就要考慮詞的共現(xiàn)問(wèn)題。最簡(jiǎn)單的是使用基于文檔的向量表示方法來(lái)給出詞向量。基本思想也很簡(jiǎn)單,假設(shè)有n篇文檔,如果某些詞經(jīng)常成對(duì)出現(xiàn)在多篇相同的文檔中,我們則認(rèn)為這兩個(gè)詞聯(lián)系非常緊密。對(duì)于文檔集合,可以將文檔按順編號(hào)(i=0…n-1),將文檔編導(dǎo)作為向量索引,這樣就有一個(gè)n維的向量。當(dāng)一個(gè)詞出現(xiàn)在某個(gè)文檔i中時(shí),向量i處值為1,這樣就可以通過(guò)一個(gè)類似[0,1,0,…,1,0]形式的向量表示一個(gè)詞。基于文檔的詞向量能夠很好的表示詞之間的關(guān)系,但是向量的長(zhǎng)度和語(yǔ)料庫(kù)的大小相關(guān),同樣會(huì)存在維度變化問(wèn)題。

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

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

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

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

LSTM模型介紹

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

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

所有的RNN都有一串重復(fù)的神經(jīng)網(wǎng)絡(luò)模塊。對(duì)于標(biāo)準(zhǔn)的RNN,這個(gè)模塊都比較簡(jiǎn)單,比如使用單獨(dú)的tanh層。LSTM擁有類似的結(jié)構(gòu),但是不同的是,LSTM的每個(gè)模塊擁有更復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu): 4層相互影響的神經(jīng)網(wǎng)絡(luò)。在LSTM每個(gè)單元中,因?yàn)殚T結(jié)構(gòu)的存在,對(duì)于每個(gè)單元的轉(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í)庫(kù)keras介紹

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

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

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

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

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

模型設(shè)計(jì)

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

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

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

環(huán)境介紹

測(cè)試硬件是Macbook Pro 2014 Mid高配版,帶Nvidia GT 750M GPU,雖然GPU性能有限,但通過(guò)測(cè)試性能還是強(qiáng)過(guò)mac自帶的i7 CPU。使用GPU進(jìn)行模型運(yùn)算,需要安裝Nvidia的cuda相關(guān)程序及cuDNN庫(kù),會(huì)有較大的性能提升。軟件方面使用python2.7,安裝好了keras,theano及相關(guān)庫(kù)。關(guān)于keras使用GPU訓(xùn)練的環(huán)境搭建問(wè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中的微軟研究院的切分語(yǔ)料,將其中的train部分拿過(guò)來(lái)做訓(xùn)練,將test作為最終的測(cè)試。

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

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

基礎(chǔ)模型建立

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

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

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

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

訓(xùn)練好后,我們使用msr_test的測(cè)試數(shù)據(jù)進(jìn)行分詞,并將最終的分詞結(jié)果使用icwb2自帶的腳本進(jìn)行測(cè)試,結(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ò)中通常是一個(gè)好的選擇,但是在嘗試了其他的優(yōu)化器后,比如Adam,發(fā)現(xiàn)可以取得更好的效果:

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

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

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

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

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

注意,第一層LSTM有個(gè)return_sequences =True可以將最后一個(gè)結(jié)果出入到輸出序列,保證輸出的tensor是3D的,因?yàn)長(zhǎng)STM的輸入要求是3D的tensor。

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

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

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

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

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

總結(jié)和展望

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

作者簡(jiǎn)介

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

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.

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

聯(lián)系客服