導(dǎo)語
本篇主要對(duì)分詞技術(shù)中基于統(tǒng)計(jì)的分詞方法進(jìn)行深入的探究滞乙,先是介紹了統(tǒng)計(jì)方法分詞是什么以及一般步驟奏纪,隨后介紹了語言模型,最后介紹了常見的統(tǒng)計(jì)算法(維特比算法)斩启,并實(shí)現(xiàn)了統(tǒng)計(jì)算法的分詞序调。
以下為文章結(jié)構(gòu),本篇內(nèi)容干貨滿滿:(閱讀全文大概需要20分鐘)
統(tǒng)計(jì)分詞
01統(tǒng)計(jì)的分詞方法
基于統(tǒng)計(jì)的分詞算法的主要核心是詞是穩(wěn)定的組合兔簇,因此在上下文中发绢,相鄰的字同時(shí)出現(xiàn)的次數(shù)越多硬耍,就越有可能構(gòu)成一個(gè)詞。因此字與字相鄰出現(xiàn)的概率或頻率能較好地反映成詞的可信度边酒【瘢可以對(duì)訓(xùn)練文本中相鄰出現(xiàn)的各個(gè)字的組合的頻度進(jìn)行統(tǒng)計(jì),計(jì)算它們之間的互現(xiàn)信息甚纲】诙В互現(xiàn)信息體現(xiàn)了漢字之間結(jié)合關(guān)系的緊密程度。當(dāng)緊密程度高于某一個(gè)閾值時(shí)介杆,便可以認(rèn)為此字組可能構(gòu)成了一個(gè)詞。該方法又稱為無字典分詞韭寸。
02步驟
1.需要構(gòu)建語言模型
2.對(duì)句子進(jìn)行單詞劃分春哨,劃分結(jié)果運(yùn)用統(tǒng)計(jì)方法計(jì)算概率,獲取概率最大的分詞方式恩伺。(統(tǒng)計(jì)方法如隱馬爾可夫模型HMM,條件隨機(jī)場(chǎng)CRF)
統(tǒng)計(jì)語言模型
01概念
自然語言處理的專家弗萊德里克·賈里尼克教授說過:一個(gè)句子是否合理赴背,就看它的可能性大小如何。統(tǒng)計(jì)語言模型(Statistical Language Model)即是用來描述詞晶渠、語句乃至于整個(gè)文檔這些不同的語法單元的概率分布的模型凰荚,能夠用于衡量某句話或者詞序列是否符合所處語言環(huán)境下人們?nèi)粘5男形恼f話方式。
好的統(tǒng)計(jì)語言模型需要依賴大量的訓(xùn)練數(shù)據(jù)褒脯,在上世紀(jì)七八十年代便瑟,基本上模型的表現(xiàn)優(yōu)劣往往會(huì)取決于該領(lǐng)域數(shù)據(jù)的豐富程度。IBM 曾進(jìn)行過一次信息檢索評(píng)測(cè)番川,發(fā)現(xiàn)二元語法模型(Bi-gram)需要數(shù)以億計(jì)的詞匯才能達(dá)到最優(yōu)表現(xiàn)到涂,而三元語法模型(TriGram)則需要數(shù)十億級(jí)別的詞匯才能達(dá)成飽和。
本世紀(jì)初颁督,最流行的統(tǒng)計(jì)語言模型當(dāng)屬?N-gram践啄,其屬于典型的基于稀疏表示(Sparse Representation)的語言模型;近年來隨著深度學(xué)習(xí)的爆發(fā)與崛起沉御,以詞向量(Word Embedding)為代表的分布式表示(Distributed Representation)的語言模型取得了更好的效果屿讽,并且深刻地影響了自然語言處理領(lǐng)域的其他模型與應(yīng)用的變革。
除此之外吠裆,Ronald Rosenfeld[7] 還提到了基于決策樹的語言模型(Decision Tree Models)伐谈、最大熵模型以及自適應(yīng)語言模型(Adaptive Models)等。
02N-gram語言模型
假設(shè)S表示某一個(gè)有意義的句子硫痰,由一連串特定順序排列的w1衩婚、w2...wn組成,n為句子長(zhǎng)度效斑。我們想知道S在文本中出現(xiàn)的可能性非春,也就是S的概率P(S)。如果有可能的話,可以把人類有史以來說過的話都統(tǒng)計(jì)一下奇昙,就知道這句話出現(xiàn)的可能性概率了护侮。但是這個(gè)辦法不可行,因此就需要一個(gè)模型來估算储耐。
展開P(S)得到:
P(S)=P(w1,w2...wn)
根據(jù)條件概率公式:
P(w1,w2...wn)=P(w1)·P(w2|w1)·P(w3|w1,w2)···P(wn|w1,w1...wn-1)
其中P(w1)表示第一個(gè)詞w1出現(xiàn)的概率,P(w2|w1)是在已知第一個(gè)詞的前提下羊初,第二個(gè)詞出現(xiàn)的概率。詞wn出現(xiàn)的概率取決于它前面的所有詞什湘。
計(jì)算上长赞,第一個(gè)詞的概率P(w1)容易計(jì)算,逐漸往后最后一個(gè)P(wn|w1,w1...wn-1)的估算難度太大闽撤。這里就要引出一個(gè)俄國(guó)數(shù)學(xué)家馬爾可夫(Andrey Markov)得哆,他提出假設(shè)任意一個(gè)詞wi出現(xiàn)的概率只同它前面的詞wi-1有關(guān),這種假設(shè)稱為馬爾可夫假設(shè)哟旗。
P(S)=P(w1)·P(w2|w1)·P(w3|w2)·P(wi|w-1)·P(wn|wn-1)
這種統(tǒng)計(jì)語言模型就是二元模型(Bigram Model)贩据。
下面具體分析一下如何得到P(S):
P(wi|wi-1)=P(wi-1,wi)/P(wi-1)
其中估計(jì)聯(lián)合概率P(wi-1,wi)和邊緣概率P(wi-1,wi),
而有了語料庫(kù)闸餐,只要統(tǒng)計(jì)得到wi-1和wi在文本中前后相鄰出現(xiàn)了多少次c(wi-1,wi),
統(tǒng)計(jì)wi-1在同樣的文本中出現(xiàn)的次數(shù)c(wi-1),分別除以語料庫(kù)大小c,從而計(jì)算相對(duì)頻度:
f(wi-1,wi)=c(wi-1,wi)/c
f(wi-1)=c(wi-1)/c
根據(jù)大數(shù)定理饱亮,只要數(shù)據(jù)量足夠大,相對(duì)頻度就等于概率舍沙,因此:
P(wi-1,wi)≈c(wi-1,wi)/c
P(wi-1)≈c(wi-1)/c
得到:
P(wi|wi-1)=c(wi-1,wi)/c(wi-1)
之前提到的某個(gè)詞只與前一個(gè)詞有關(guān)近上,形成了二元模型;但是實(shí)際生活中场勤,某個(gè)詞語的出現(xiàn)可能與之前若干個(gè)詞有關(guān)戈锻。因此,假設(shè)文本中的每個(gè)詞wi和前面N-1個(gè)詞有關(guān):
P(wi|w1,w2...wi-1)=P(wi|wi-N+1,wi-N+2...wi-1)
這種假設(shè)叫做N-1階馬爾可夫假設(shè)和媳,語言模型稱為N元語言模型(N-Gram Model),實(shí)際中應(yīng)用最多的是N=3的三元模型格遭;一般N的取值都比較小,因?yàn)镹的數(shù)值越大留瞳,需要的算力要求就越大拒迅。
03python代碼實(shí)現(xiàn)
以下是基于詞典的分詞方法實(shí)現(xiàn),運(yùn)用unigram語言模型她倘,在P(S)的計(jì)算過程P(w1)·P(w2)·P(w3)···P(wi)·P(wn)中璧微,如果存在某個(gè)P(wi)=0,那么P(S)=0硬梁,計(jì)算的結(jié)果就跟實(shí)際存在偏差前硫。因此,在計(jì)算P(w1)·P(w2)·P(w3)···P(wi)·P(wn)變形為
-(logP(w1)+logP(w2)+logP(w3)···logP(wi)+logP(wn)),那么某個(gè)概率很小的字不會(huì)導(dǎo)致P(S)為0
04其他語言模型
其他語言模型還有:神經(jīng)網(wǎng)絡(luò)語言模型(如word2vec)荧止、循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型屹电、基于決策樹的語言模型阶剑、最大熵模型以及自適應(yīng)語言模型等。
HMM與維特比算法
01HMM
隱馬爾可夫模型(Hidden Markov Model, HMM)是一種統(tǒng)計(jì)模型危号,是關(guān)于時(shí)序的概率模型牧愁,它描述了含有未知參數(shù)的馬爾可夫鏈所產(chǎn)生不可觀測(cè)的狀態(tài)隨機(jī)序列,生成可觀測(cè)隨機(jī)序列的過程外莲。(這里不展開HMM的講解猪半,會(huì)在另外一篇文章中詳細(xì)講解馬爾可夫鏈等)不清楚HMM的可以先行學(xué)習(xí)這篇文章:一文掌握馬爾科夫鏈與隱馬爾可夫模型。
02維特比算法
維特比算法(Viterbi?Algorithm)是一種動(dòng)態(tài)規(guī)劃算法偷线。維特比算法由安德魯·維特比(Andrew Viterbi)于1967年提出磨确,用于在數(shù)字通信鏈路中解卷積以消除噪音。此算法被廣泛應(yīng)用于CDMA和GSM數(shù)字蜂窩網(wǎng)絡(luò)声邦、撥號(hào)調(diào)制解調(diào)器俐填、衛(wèi)星稽揭、深空通信和802.11無線網(wǎng)絡(luò)中解卷積碼÷找剑現(xiàn)今也被常常用于語音識(shí)別卓研、關(guān)鍵字識(shí)別、計(jì)算語言學(xué)和生物信息學(xué)中歇式。例如在語音(語音識(shí)別)中,聲音信號(hào)作為觀察到的事件序列胡野,而文本字符串材失,被看作是隱含的產(chǎn)生聲音信號(hào)的原因,因此可對(duì)聲音信號(hào)應(yīng)用維特比算法尋找最有可能的文本字符串硫豆。
03維特比算法求解HMM問題
用維特比算法針對(duì)HMM三大問題中的解碼問題(給定模型和觀測(cè)序列龙巨,如何找到與此觀測(cè)序列最匹配的狀態(tài)序列的問題)進(jìn)行求解。
問題描述如下:
首先熊响,我們已經(jīng)知道狀態(tài)序列X會(huì)產(chǎn)生觀測(cè)序列O:
但是狀態(tài)序列X產(chǎn)生的觀測(cè)序列有很多種可能旨别,每種都有概率,如下所示汗茄,比如wo可能有三種可能:喔秸弛、我、沃
那么其實(shí)問題就變成了最大概率問題洪碳,把概率最大的理解為路徑最短递览,轉(zhuǎn)換為了求解最短路徑問題:(為了方便標(biāo)記,標(biāo)記為了下圖中的字母)
算法解決:
接下來就用到了維特比算法求解最短路徑瞳腌,實(shí)質(zhì)上是一種動(dòng)態(tài)規(guī)劃绞铃,把大問題化解為小問題:
步驟1、A->B:
步驟2嫂侍、A->B->C:
動(dòng)圖:
圖片拆解:
步驟3儿捧、A->B->C->D:
動(dòng)圖:(可以確定A->C的3條最短路徑)
圖片拆解:
步驟4荚坞、A->B->C->D->E:
動(dòng)圖:(可以確定A->D的2條最短路徑)
圖片拆解:
最終就得到了A->E的最短路徑A->B1->C2->D2->E1,至此纯命,找到了wo ai zhong guo對(duì)應(yīng)的概率最大的中文漢字組合為:我愛中國(guó)西剥。
04維特比算法與分詞
利用維特比算法進(jìn)行分詞,和使用最短路徑Dijkstra算法進(jìn)行分詞類似亿汞,也是最短路徑法的分詞:
如下瞭空,假設(shè)各點(diǎn)之間權(quán)重為1:
維特比算法過程為:
因此得到最短路徑為1->6->8->9->11,分詞結(jié)果為[計(jì)算語言學(xué)、課程疗我、有咆畏、意思]
05python代碼實(shí)現(xiàn)
以下是根據(jù)unigram語言模型和維特比算法進(jìn)行分詞的python代碼實(shí)現(xiàn):
作者原創(chuàng),未經(jīng)授權(quán)請(qǐng)勿轉(zhuǎn)載
了解更多算法或者NLP相關(guān)知識(shí)可以關(guān)注公眾號(hào):白話NLP