中文分词技术--统计分词
因為大規(guī)模語料的建立,統(tǒng)計機器學(xué)習(xí)方法的研究與發(fā)展,基于統(tǒng)計的中文分詞成為主流
主要思想
將每個詞看做是由詞的最小單位字組成的,如果相連的字在大量的文本中出現(xiàn)的次數(shù)越多,則說明這幾個字組成詞的概率越大。因此可以用字與字相鄰出現(xiàn)的頻率來反映成詞的可靠度,統(tǒng)計語料中相鄰出現(xiàn)的各個字的組合的頻度,當(dāng)組合頻度高于某一個臨界值時,我們便認(rèn)為其構(gòu)成一個詞。
步驟
建立統(tǒng)計語言模型。
對句子進行單詞劃分,然后對劃分結(jié)果進行概率統(tǒng)計,獲得概率最大的分詞方式。這里就用到了統(tǒng)計學(xué)習(xí)方法,如隱含馬爾可夫(HMM)、條件隨機場(CRF)等。
?
語言模型?
- 統(tǒng)計語言模型
? ?統(tǒng)計語言模型是自然語言處理的基礎(chǔ),被廣泛應(yīng)用于機器翻譯、語音識別、印刷體或手寫體識別、拼音糾錯、漢字輸入和文獻查詢等。?
- 模型原型
? ?語言的數(shù)學(xué)本質(zhì)就是說話者將一串信息在頭腦中做了一次編碼,編碼的結(jié)果是一串文字,而如果接受的人懂得這門語言,他就可以用這門語言的解碼方式獲得說話人想表達的信息。那么不免想到將編碼規(guī)則教給計算機,這就是基于規(guī)則的自然語言處理。但是事實證明基于規(guī)則行不通,因為巨大的文法規(guī)則和語言的歧義性難以解決。所以出現(xiàn)了基于統(tǒng)計的自然語言處理(NLP)。基于統(tǒng)計的NLP的核心模型是通信系統(tǒng)加隱含馬爾可夫模型。
看一個句子是否合理,就看它的合理性有多少,就是它出現(xiàn)的概率大小:
? ? ? ?假定句子 ? ? ? ? S(W1,W2,......,Wn) ? ? ? ? ? ?Wi 代表詞
? ? ? ?其概率為 ? ? ? ? P(S) = P(W1,W2,.......,Wn)
? ? ? ?根據(jù)條件概率公式,每個詞出現(xiàn)的概率等于之前每個詞出現(xiàn)的條件概率相乘,于是
? ? ? ?P(W1,W2,......,Wn) = P(W1) · P(W1 | W2) · P(W3 | W1,W2) ··· P(Wn | W1,W2,......Wn-1)
但是這樣計算量太大,句子越長越麻煩,因此Andrey Markov 提出了一種偷懶的方法,即馬爾可夫假設(shè):假設(shè)任意一個詞出現(xiàn)的概率只與它前面的一個詞有關(guān)。
? ? ? ?因此 ?P(S) = P(W1) · P(W1 | W2) · P(W3 | W2) ··· P(Wn | Wn-1) ? ? ? ?
這就是二元模型(Bigram Model), 相應(yīng)的,高階語言模型即任意一個詞 Wi 出現(xiàn)的概率只與它前面的 i-1 個詞有關(guān)。元數(shù)越高越準(zhǔn)確,但相應(yīng)越復(fù)雜,越難實現(xiàn),我們一般使用三元模型就夠了。
那么如何計算這個概率呢,這就是統(tǒng)計語言模型的核心統(tǒng)計了,實際上是做了近似處理,即在統(tǒng)計量足夠大的情況下:
? ? ?因為 P(Wi | Wi-1)? = ?P(Wi-1,Wi) / P(Wi-1) = 聯(lián)合概率 / 邊緣概率
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? =兩個詞一起出現(xiàn)的次數(shù) / 單個詞出現(xiàn)的次數(shù)
- 零概率問題
統(tǒng)計中可能出現(xiàn)沒有統(tǒng)計到某個詞(邊緣概率為0)或者某兩個詞在一起的情況只出現(xiàn)了一次(聯(lián)合概率為1)的情況,就會導(dǎo)致十分絕對的概率出現(xiàn),模型就不可靠。直接的解決方法是增加統(tǒng)計的數(shù)據(jù)量,但是數(shù)據(jù)不夠時。需要使用一個重新計算概率的公式,就是古德-圖靈估計(Good-Turing Estimate)
古德-圖靈估計(Good-Turing Estimate)
? ?其原理是:對于沒有出現(xiàn)的概率,我們從概率總量中分配一小部分給它們,看見的事件的概率總量就小于1,這樣就不會出現(xiàn)概率為1和0的情況了。對應(yīng)的語言模型也要做一些調(diào)整,最早由卡茲(S.M.Kate)提出,稱為卡茲退避法(Kate backoff)。
HMM模型
隱含馬爾可夫模型(HMM)是將分詞作為字在字串中的序列標(biāo)注任務(wù)來實現(xiàn)的。其基本思路:每個字在構(gòu)造一個特定的詞語是都占據(jù)一個確定的構(gòu)詞位置(詞位),規(guī)定每個字最多有四個構(gòu)詞位置,B(詞首)、M(詞中)、E(詞尾)、S(單獨成詞),用數(shù)學(xué)抽象表示如下:用 λ =?λ?λ?···λn代表輸入的句子,n為句子長度,λ表示字,ο =?ο?ο?···ο···表示輸出的標(biāo)簽,理想的輸出即為P(ο?ο?···∣λ?λ?···)概率最大。在分詞任務(wù)上ο即為B、M、E、S這四種標(biāo)記符號,λ為句子中的每個字。
但是如此計算的計算量太大,因此引入獨立觀察假設(shè),即假設(shè)每個字的輸出僅與當(dāng)前字有關(guān),于是得到:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? P(ο?ο?···∣λ?λ?···) = P(ο?∣λ?)·P(ο?∣λ?)·······
改方法極大的簡化了計算量,但是完全沒有考慮上下文,出錯的可能性較大,所以HMM模型改進了它,由貝葉斯公式:? ? ? ? ? ? ? ? ? ? ?P(ο∣λ) = P(ο,λ)/P(λ) = P(λ∣ο)·P(ο)/P(λ)
其中λ為輸入,所以P(λ)為已知,所以等價于最大化P(λ∣ο)·P(ο),對其做馬爾可夫假設(shè),得到:P(λ∣ο) = P(λ?∣ο?)·P(λ?∣ο?)·······? ?
對于? P(ο)= P(ο?)·P(ο?∣ο?)·P(ο?∣ο?ο?)······
這里做其次馬爾可夫假設(shè),每個輸出僅與上一個輸出有關(guān),即:P(ο)= P(ο?)·P(ο?∣ο?)·P(ο?∣ο?)······
所以P(λ∣ο)·P(ο) ∽?P(λ?∣ο?)·P(ο?∣ο?)·P(λ?∣ο?)·P(ο?∣ο?)······P(On∣On-1)P(λn∣On)
實際求解maxP(λ∣ο)·P(ο)的常用方法是Veterbi算法,它是一種動態(tài)規(guī)劃的方法,其思想是:如果最短路徑經(jīng)過某一個節(jié)點,那么從初始節(jié)點到當(dāng)前節(jié)點的路徑也是最短的,因為每一個節(jié)點只會影響它前一個和后一個節(jié)點。所以可以用遞推的方法,選擇節(jié)點時只用考慮上一個節(jié)點的所有最優(yōu)路徑,然后與當(dāng)前節(jié)點路徑結(jié)合即可,這樣逐步找出最優(yōu)路徑。
總結(jié)
以上是生活随笔為你收集整理的中文分词技术--统计分词的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS 保留两位小数,不足用0补齐;js
- 下一篇: oracle utl file gran