干貨滿滿 | 基于統(tǒng)計(jì)的分詞算法

導(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吴裤,一起剝皮案震驚了整個(gè)濱河市旧找,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌麦牺,老刑警劉巖钮蛛,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異剖膳,居然都是意外死亡魏颓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門吱晒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甸饱,“玉大人,你說我怎么就攤上這事仑濒√净埃” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵墩瞳,是天一觀的道長(zhǎng)驼壶。 經(jīng)常有香客問我,道長(zhǎng)矗烛,這世上最難降的妖魔是什么辅柴? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮瞭吃,結(jié)果婚禮上碌嘀,老公的妹妹穿的比我還像新娘。我一直安慰自己歪架,他們只是感情好股冗,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著和蚪,像睡著了一般止状。 火紅的嫁衣襯著肌膚如雪烹棉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天怯疤,我揣著相機(jī)與錄音浆洗,去河邊找鬼。 笑死集峦,一個(gè)胖子當(dāng)著我的面吹牛伏社,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播塔淤,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼摘昌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了高蜂?” 一聲冷哼從身側(cè)響起聪黎,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎备恤,沒想到半個(gè)月后稿饰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡露泊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年湘纵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滤淳。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖砌左,靈堂內(nèi)的尸體忽然破棺而出脖咐,到底是詐尸還是另有隱情,我是刑警寧澤汇歹,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布屁擅,位于F島的核電站,受9級(jí)特大地震影響产弹,放射性物質(zhì)發(fā)生泄漏派歌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一痰哨、第九天 我趴在偏房一處隱蔽的房頂上張望胶果。 院中可真熱鬧,春花似錦斤斧、人聲如沸早抠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蕊连。三九已至悬垃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甘苍,已是汗流浹背尝蠕。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留载庭,地道東北人看彼。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像昧捷,于是被迫代替她去往敵國(guó)和親闲昭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344