分詞的基本原理

本文只是對(duì)NLP知識(shí)進(jìn)行梳理,鞏固及時(shí)查漏補(bǔ)缺。

??在對(duì)文本處理的時(shí)候,首要做的就是分詞。英文可以按空格分詞,但有時(shí)候需要把多個(gè)單詞作為一個(gè)分詞,比如一些名詞如“New York”,需要作為一個(gè)詞看待。而中文沒有空格,分詞就是一個(gè)需要專門去解決的問題了。無論是英文還是中文,分詞的原理都是類似的,本文就對(duì)文本挖掘時(shí)的分詞原理做一個(gè)總結(jié)。

三大主流分詞方法:

  • 基于詞典的方法;
  • 基于規(guī)則的方法;
  • 基于統(tǒng)計(jì)的方法。

1. 分詞的基本原理

??現(xiàn)代分詞幾乎都是基于統(tǒng)計(jì)的分詞,而統(tǒng)計(jì)的樣本內(nèi)容來自于一些標(biāo)準(zhǔn)的語料庫。
??假如有一個(gè)句子:“小明來到荔灣區(qū)”,我們期望語料庫統(tǒng)計(jì)后分詞的結(jié)果是:"小明/來到/荔灣/區(qū)",而不是“小明/來到/荔/灣區(qū)”。那么如何做到這一點(diǎn)呢?
??從統(tǒng)計(jì)的角度,我們期望"小明/來到/荔灣/區(qū)"這個(gè)分詞后句子出現(xiàn)的概率要比“小明/來到/荔/灣區(qū)”大。數(shù)學(xué)表示就是:如果有一個(gè)句子S,它有m種分詞選項(xiàng),
A_{1,1}A_{1,2}...A_{1,n_1} \\ A_{2,1}A_{2,2}...A_{2,n_2} \\ ............... \\ A_{m,1}A_{m,2}...A_{m,n_m} \\其中下標(biāo)n_i代表第i種分詞的詞個(gè)數(shù)。如果我們從中選擇了最優(yōu)的第??種分詞方法,那么這種分詞方法對(duì)應(yīng)的統(tǒng)計(jì)分布概率應(yīng)該最大,即:
r = argmax_{i}P(A_{i,1}A_{i,2}...A_{i,n_1})但是我們的概率分布P(A_{i,1}A_{i,2}...A_{i,n_1})并不好求出來,因?yàn)樗婕暗?img class="math-inline" src="https://math.jianshu.com/math?formula=n_i" alt="n_i" mathimg="1">個(gè)分詞的聯(lián)合分布。在NLP中,為了簡化計(jì)算,我們通常使用馬爾科夫假設(shè),即每一個(gè)分詞出現(xiàn)的概率僅僅和前一個(gè)分詞有關(guān),即:
P(A_{ij}|A_{i1},A_{i2},A_{ij},...,A_{i(j-1)}) = P(A_{ij}|A_{i(j-1)})由馬爾科夫假設(shè),則聯(lián)合分布為:
P(A_{i1}A_{i2}...A_{in_1}) = P(A_{i1})P(A_{i2}|A_{i1})P(A_{i3}|A_{i2})...P(A_{in_i}|A_{in_{i-1}})而通過我們的標(biāo)準(zhǔn)語料庫,我們可以近似的計(jì)算出所有的分詞之間的二元條件概率,比如任意兩個(gè)詞??_1,??_2,它們的條件概率分布可以近似的表示為:
P(w_2|w_1) = \frac{P(w_1,w_2)}{P(w_1)} \approx \frac{freq(w_1,w_2)} {freq(w_1)} \\ P(w_1|w_2) = \frac{P(w_2,w_1)}{P(w_2)} \approx \frac{freq(w_2,w_1)}{freq(w_2)} \\ 其中????????(??1,??2)表示??1,??2在語料庫中相鄰一起出現(xiàn)的次數(shù),而其中????????(??1),????????(??2)分別表示??1,??2在語料庫中出現(xiàn)的統(tǒng)計(jì)次數(shù)。
??利用語料庫建立的統(tǒng)計(jì)概率,對(duì)于一個(gè)新的句子,我們就可以通過計(jì)算各種分詞方法對(duì)應(yīng)的聯(lián)合分布概率,找到最大概率對(duì)應(yīng)的分詞方法,即為最優(yōu)分詞。

2. 基于規(guī)則或詞典的方法

定義:按照一定策略將待分析的漢字串與一個(gè)“大機(jī)器詞典”中的詞條進(jìn)行匹配,若在詞典中找到某個(gè)字符串,則匹配成功。

  1. 按照掃描方向的不同:正向匹配和逆向匹配;
  2. 按照長度的不同:最大匹配和最小匹配;

2.1 正向最大匹配思想MM

  1. 從左向右取待切分漢語句的m個(gè)字符作為匹配字段,m為大機(jī)器詞典中最長詞條個(gè)數(shù)。
  2. 查找大機(jī)器詞典并進(jìn)行匹配:
    ??1. 若匹配成功,則將這個(gè)匹配字段作為一個(gè)詞切分出來。
    ??2. 若匹配不成功,則將這個(gè)匹配字段的最后一個(gè)字去掉,剩下的字符串作為新的匹配字段,進(jìn)行再次匹配,重復(fù)以上過程,直到切分出所有詞為止。

例: 我們要對(duì)南京市長江大橋這個(gè)句子進(jìn)行分詞,根據(jù)正向最大匹配的原則:

  1. 先從句子中拿出前5個(gè)字符“南京市長江”,把這5個(gè)字符到詞典中匹配,發(fā)現(xiàn)沒有這個(gè)詞,那就縮短取字個(gè)數(shù),取前四個(gè)“南京市長”,發(fā)現(xiàn)詞庫有這個(gè)詞,就把該詞切下來;
  2. 對(duì)剩余三個(gè)字“江大橋”再次進(jìn)行正向最大匹配,會(huì)切成“江”、“大橋”;
  3. 整個(gè)句子切分完成為:南京市長、江、大橋;

2.2 逆向最大匹配算法RMM
??該算法是正向最大匹配的逆向思維,匹配不成功,將匹配字段的最前一個(gè)字去掉,實(shí)驗(yàn)表明,逆向最大匹配算法要優(yōu)于正向最大匹配算法。

例:取出南京市長江大橋的后四個(gè)字“長江大橋”,發(fā)現(xiàn)詞典中有匹配,切割下來;對(duì)剩余的“南京市”進(jìn)行分詞,整體結(jié)果為:南京市、長江大橋。

2.3 雙向最大匹配法BM
??雙向最大匹配法是將正向最大匹配法得到的分詞結(jié)果和逆向最大匹配法的到的結(jié)果進(jìn)行比較,從而決定正確的分詞方法。

例:雙向的最大匹配,即把所有可能的最大詞都分出來,上面的句子可以分為:南京市、南京市長、長江大橋、江、大橋。

2.4 設(shè)立切分標(biāo)志法
? 收集切分標(biāo)志,在自動(dòng)分詞前處理切分標(biāo)志,再用MM、RMM進(jìn)行細(xì)加工。

3. 基于統(tǒng)計(jì)的分詞

??隨著大規(guī)模語料庫的建立,統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法的研究和發(fā)展,基于統(tǒng)計(jì)的中文分詞方法漸漸成為了主流方法。
主要思想:把每個(gè)詞看做是由詞的最小單位各個(gè)字組成的,如果相連的字在不同的文本中出現(xiàn)的次數(shù)越多,就證明這相連的字很可能就是一個(gè)詞。因此我們就可以利用字與字相鄰出現(xiàn)的頻率來反應(yīng)成詞的可靠度,統(tǒng)計(jì)語料中相鄰共現(xiàn)的各個(gè)字的組合的頻度,當(dāng)組合頻度高于某一個(gè)臨界值時(shí),我們便可認(rèn)為此字組可能會(huì)構(gòu)成一個(gè)詞語。
主要統(tǒng)計(jì)模型:

  • N元文法模型(N-gram)
  • 隱馬爾可夫模型(Hidden Markov Model ,HMM)
  • 最大熵模型(ME),
  • 條件隨機(jī)場模型(Conditional Random Fields,CRF)等。

N元模型
??只依賴于前一個(gè)詞太武斷了,我們能不能依賴于前兩個(gè)詞呢?
??這樣也是可以的,只不過這樣聯(lián)合分布的計(jì)算量就大大增加了。我們一般稱只依賴于前一個(gè)詞的模型為二元模型(Bi-Gram model),而依賴于前兩個(gè)詞的模型為三元模型。以此類推,我們可以建立四元模型,五元模型,...一直到通用的N元模型。越往后,概率分布的計(jì)算復(fù)雜度越高。當(dāng)然算法的原理是類似的。
? ?在實(shí)際應(yīng)用中,N一般都較小,一般都小于4,主要原因是N元模型概率分布的空間復(fù)雜度為O(|V|^N),其中|V|為語料庫大小,而N為模型的元數(shù),當(dāng)N增大時(shí),復(fù)雜度呈指數(shù)級(jí)的增長。
??N元模型的分詞方法雖然很好,但是要在實(shí)際中應(yīng)用也有很多問題,

  1. 某些生僻詞,或者相鄰分詞聯(lián)合分布在語料庫中沒有,概率為0。這種情況我們一般會(huì)使用拉普拉斯平滑,即給它一個(gè)較小的概率值,
  2. 如果句子長,分詞有很多情況,計(jì)算量也非常大,這時(shí)我們可以用下一節(jié)維特比算法來優(yōu)化算法時(shí)間復(fù)雜度。

維特比算法與分詞
??為了簡化原理描述,我們的討論都是以二元模型為基礎(chǔ)。
??對(duì)于一個(gè)有很多分詞可能的長句子,我們當(dāng)然可以用暴力方法去計(jì)算出所有的分詞可能的概率,再找出最優(yōu)分詞方法。但是用維特比算法可以大大簡化求出最優(yōu)分詞的時(shí)間。
??大家一般知道維特比算法是用于隱式馬爾科夫模型HMM解碼算法的,但是它是一個(gè)通用的求序列最短路徑的方法,不光可以用于HMM,也可以用于其他的序列最短路徑算法,比如最優(yōu)分詞。
??維特比算法采用的是動(dòng)態(tài)規(guī)劃來解決這個(gè)最優(yōu)分詞問題的,動(dòng)態(tài)規(guī)劃要求局部路徑也是最優(yōu)路徑的一部分,很顯然我們的問題是成立的。首先我們看一個(gè)簡單的分詞例子:"人生如夢境"。它的可能分詞可以用下面的概率圖表示:

??圖中的箭頭為通過統(tǒng)計(jì)語料庫而得到的對(duì)應(yīng)的各分詞位置BEMS(開始位置,結(jié)束位置,中間位置,單詞)的條件概率。比如P(生|人)=0.17。有了這個(gè)圖,維特比算法需要找到從Start到End之間的一條最短路徑。對(duì)于在End之前的任意一個(gè)當(dāng)前局部節(jié)點(diǎn),我們需要得到到達(dá)該節(jié)點(diǎn)的最大概率δ,和記錄到達(dá)當(dāng)前節(jié)點(diǎn)滿足最大概率的前一節(jié)點(diǎn)位置Ψ。

參考:https://www.cnblogs.com/pinard/p/6677078.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 分詞算法在搜索引擎中的作用是很重要的,特別是中文分詞,在百度搜素展現(xiàn)中很重要。 分詞技術(shù)用在整個(gè)搜索流程的哪一步呢...
    老朱seo閱讀 1,946評(píng)論 0 0
  • 常用概念: 自然語言處理(NLP) 數(shù)據(jù)挖掘 推薦算法 用戶畫像 知識(shí)圖譜 信息檢索 文本分類 常用技術(shù): 詞級(jí)別...
    御風(fēng)之星閱讀 9,999評(píng)論 1 25
  • 更好的閱讀體驗(yàn)請(qǐng)?zhí)D(zhuǎn)至分詞算法綜述[https://xv44586.github.io/2019/10/22/cu...
    小蛋子閱讀 1,960評(píng)論 1 9
  • 轉(zhuǎn)載請(qǐng)注明:終小南 ? 中文分詞算法總結(jié) 什么是中文分詞眾所周知,英文是以 詞為單位的,詞和詞之間是靠空格隔開,而...
    kirai閱讀 10,105評(píng)論 3 24
  • 1、第19頁 助人練習(xí)。想一件別人沒預(yù)料到的好事,明天就去做,觀察一下你的情緒變化。 這幾天在準(zhǔn)備一個(gè)朋友的生日驚...
    末小閑閱讀 493評(píng)論 0 1

友情鏈接更多精彩內(nèi)容