NLP学习路径(三):NLP中文分词技术
1、中文分詞簡介
難點:分詞歧義
方法:
1)規則分詞:人工建立詞庫,按一定方式匹配切分。缺點:對新詞很難進行處理。
2)統計分詞:利用機器學習技術。缺點:過于依賴語料的質量。
3)混合分詞:上述兩種方法的結合。(用得較多)
2、規則分詞
主要是通過維護詞典,在切分語句時,將語句的每個字符串與詞表中的詞進行逐一匹配,找到則切分,否則不予切分。
主要方法有:正向最大匹配法;逆向最大匹配法;雙向最大匹配法。
(1)正向最大匹配法
算法描述:
1)從左向右取待切分漢語句的m個字符串作為匹配字段,m為機器詞典中最長詞條的字符數。
2)查找機器詞典并進行匹配。若成功,則將這個匹配字段作為一個詞切分出來。若不成功,則將這個匹配字段的最后一個詞去掉,剩下的字符串作為新的匹配字段,進行再次匹配,重復以上過程,直到切分出所有詞。
例子:
輸出:(效果不好)
(2)逆向最大匹配法(RMM)
算法描述:
從被處理文檔的末端開始匹配掃描,每次取最末端的i個字符(i為詞典中最長詞數)作為匹配字段,若匹配失敗,則去掉匹配字段最前面的一個字,繼續匹配。在實際中,先將文檔進行倒排處理,生成逆序文檔,最后根據逆序詞典,對逆序文檔用RMM算法。
例子
輸出:
(3)雙向最大匹配法
算法描述:將正向最大匹配法得到的分詞結果和逆向最大匹配法得到的結果進行比較,然后按照最大匹配原則,選取詞數切分最少的作為結果。
規則:
1)如果正反向分詞結果詞數不同,則取分詞數量較少的那個
2)如果分詞數量相同
①分詞結果相同,可以返回任意一個
②分詞結果不同,返回其中單個字較少的那個
例子
正向和逆向代碼同上
輸出:
3、統計分詞
(1)主要算法思想:
1)建立統計語言模型
2)對句子進行單詞劃分,然后對劃分結果進行概率計算,獲得概率最大的分詞方式。會涉及到統計學習算法:隱含馬爾可夫,條件隨機場等
(2)語言模型
1)描述:為長度為m的字符串確定其概率分布,其中w1到wm依次表示文本中的各個詞語。一般采用鏈式法則計算其概率值
當文本過長時,每一項計算難度都很大??梢允褂胣元模型降低計算難度。一般使用頻率計數的比例計算n元條件概率。
表示詞語在語料庫中出現的總次數。
當n越大時,模型包含的詞序信息越豐富,計算量隨之變大。同時,長度越長的文本序列出現的次數也會減少,所以會出現分子分母為零的情況,因此在n元模型中需要配合平滑算法解決,比如拉普拉斯平滑算法等。
(3)HMM(隱馬爾可夫)模型
算法思想:
每個字在構造一個特定的詞語時都占據著一個確定的構詞位置(詞位),現規定每個字最多只有四個構詞位置:B(詞首)、M(詞中)、E(詞尾)、S(單獨成詞),就可以形成逐字標注的形式。比如:
①中文/分詞/是/文本處理/不可或缺/的/一步!
②中/B文/E分/B詞/E是/S文/B本/M處/M理/E不/B可/M或/M缺/E的/S一/B步/E!/S
用數學抽象表示如下:用λ=λ1λ2…λn代表輸入的句子,n為句子長度,λi表示字(包括標點等非中文字符),o=o1o2…on代表輸出的標簽,理想的輸出為:max = maxP(o1o2…on|λ1λ2…λn)。但無法進行精確地計算P,需要引入觀測獨立性假設,即每個字的輸出僅僅與當前字有關。但會出現類似BBB、BEM等不合理的輸出。
HMM就是用來解決該問題的一個方法,通過貝葉斯公式可以得到:
P(o|λ)=P(λ|o)P(o)/P(λ)
最大化P(o|λ)等價于最大化P(λ|o)P(o),常用方法是Veterbi算法(動態規劃方法)。算法思想:如果最終的最優路徑經過某個oi,那么從初始節點到oi-1點的路徑必然也是一個最優路徑——因為每一個節點oi只會影響前后兩個P(oi-1|oi)和P(oi|oi+1)。
(4)其他統計分詞方法
條件隨機場方法:區別于隱馬爾可夫算法(每個狀態只與它前面的狀態有關),條件隨機場使得每個狀態不僅與它前面的狀態有關,還與它后面的狀態有關。
神經網絡分詞算法:采用CNN,LSTM等深度學習網絡自動發現一些特征和模式,然后結合CRF和softmax等分類算法進行分詞預測。
對比機械分詞法:能較好處理歧義和未登錄詞。但分詞效果很依賴語料質量,計算量比機械分詞大很多。
HMM算法實現的Github地址
4、混合分詞
先基于詞典的方式進行分詞,然后再用統計分詞的方法進行輔助。能保證詞典分詞準確率的基礎上,對未登錄詞和歧義詞有較好的識別。
5、中文分詞工具——Jieba
Jieba分詞結合了基于規則和基于統計這兩類方法。首先基于前綴詞典進行詞圖掃描,前綴詞典是指詞典中的詞按照前綴包含得到順序排列,從而形成一種層級包含結構?;谇熬Y詞典可以快速構建包含全部可能分詞結果的有向無環圖,這個圖包含多條分詞路徑?;跇俗⒄Z料,使用動態規則的方法可以找出最大概率路徑,并將其作為最終的分詞結果。
使用 pip install Jieba 安裝
(1)三種分詞方式
1)精確模式:將句子最精確地分開,適合文本分析。
2)全模式:把句子中所有可以成詞的詞語都掃描出來,但是不能解決歧義。
3)搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。
例子:
(2)實戰:高頻詞提取
高頻詞提取方法及實現
參考:《python自然語言處理實戰 核心技術與算法》
總結
以上是生活随笔為你收集整理的NLP学习路径(三):NLP中文分词技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: suma++笔记一
- 下一篇: 淘宝同行店铺采集软件可以采集淘宝店铺吗?