Mmseg中文分词算法解析
Mmseg中文分詞算法解析
@author?linjiexing
開發(fā)中文搜索和中文詞庫語義自己主動識別的時候,我採用都是基于mmseg中文分詞算法開發(fā)的Jcseg開源project。使用場景涉及搜索索引創(chuàng)建時的中文分詞、新詞發(fā)現(xiàn)的中文分詞、語義詞向量空間構(gòu)建過程的中文分詞和文章特征向量提取前的中文分詞等,整體使用下來,感覺jcseg是一個非常優(yōu)秀的開源中文分詞工具,并且可配置和開源的情況下,能夠滿足非常多場景的中文分詞邏輯。本文先把jcseg使用到最主要的mmseg算法解析一下。
?
1.?中文分詞算法之爭
在分析mmseg算法前,先講述一段中文分詞的基本歷史,在吳軍著的《數(shù)學(xué)之美》中有詳述。我主要聊聊我的想法。算法開發(fā)的思維流程事實(shí)上和這段歷史基本上是吻合的。我們的直觀思維非常easy受限于我們的知識儲備和經(jīng)驗(yàn),比方我們在設(shè)計(jì)出飛機(jī)之前,想到是仿生的方式去模擬鳥兒的扇動翅膀姿勢,直到后來空氣動力學(xué)發(fā)現(xiàn)飛翔的本質(zhì)是扇動翅膀能夠產(chǎn)生空氣渦流而給以上升驅(qū)動力,由螺旋槳推升比空氣質(zhì)量高的物體。飛機(jī)由此發(fā)明。
在中文分詞的道路上,也曾走過這樣一段類似的探索之路。
一開始。為了實(shí)現(xiàn)合理的中文分詞。我們能想到的是使用語言學(xué)家已經(jīng)歸納的語法規(guī)則,依據(jù)傳統(tǒng)的“句讀”切割,給語句分詞。可是。我們知道,非常多出名的詩句或文學(xué)語句都不是來自于正常的語法,甚至有些口語化的語句也不滿足語法規(guī)則,可是并不影響人的識別,并且可能還是流傳千古的創(chuàng)新之作。
所以。直覺的有限定義并不能滿足千變?nèi)f化的語言環(huán)境。
在IBM花費(fèi)非常多時間和人力之后。發(fā)現(xiàn)走傳統(tǒng)思維是行不通的。轉(zhuǎn)而走向如今流行的統(tǒng)計(jì)學(xué)語言模型。我個人是這么理解統(tǒng)計(jì)學(xué)模型的。本質(zhì)上語言學(xué)家的語法規(guī)則也是來自于大量語料的統(tǒng)計(jì)和歸納。并加以個人或?qū)<覉F(tuán)隊(duì)的約束,組織成有限的語法規(guī)則,可是這個語法規(guī)則被約束成有限的,從而不滿足人類的無線創(chuàng)作的可能性——用概率學(xué)的角度看,語法規(guī)則可能能夠覆蓋到一個標(biāo)準(zhǔn)差內(nèi)的可能發(fā)生的事件(其實(shí)。并沒有到這個覆蓋率)。可是其他小概率事件并沒有覆蓋,甚至隨著時間的演變,語料庫的迅速添加,長尾效應(yīng)和創(chuàng)新效應(yīng)的存在,覆蓋率更快的減少。使用有限非完備的方式,是非常難應(yīng)對無限擴(kuò)展的方式。這個時候,就是基于統(tǒng)計(jì)學(xué)的機(jī)器學(xué)習(xí)占了實(shí)踐的上風(fēng)。
發(fā)展到如今。有非常多基于統(tǒng)計(jì)理論的中文分詞算法,也有非常多成熟的產(chǎn)品。他們在實(shí)踐中盡管并不是達(dá)到百分百正確率,可是在非常多應(yīng)用場景已經(jīng)能夠滿足要求,適定性比基于語法的方式要優(yōu)越非常多。
當(dāng)然,但凡基于統(tǒng)計(jì)學(xué)的模型,其探索之路就意味著永無止境。
不同的算法模型也有不同的適定場景。各位能夠自己嘗試。我所使用到的場景使用mmseg算法就能夠有非常好的效果,所以沒有深入查閱其他算法的原理。臨時無法給出比較客觀的比較。
?
2.?Mmseg算法原理
如上所述,mmseg算法是基于統(tǒng)計(jì)模型的,所以算法的規(guī)則也是來自于對語料庫的分析和歸納,作者依據(jù)語料庫總結(jié)出分詞的規(guī)則,分為四個步驟。算法原文為?http://technology.chtsai.org/mmseg/?。
詳細(xì)規(guī)則例如以下:
①?規(guī)則1,最大匹配:假設(shè)詞語能夠找到一個簡單的詞匹配,則覺得該詞即為該詞語的分詞
類似。詞語“國際化”,通過詞典分詞。能夠有例如以下分詞結(jié)果
1. 國_際_化 2. 國際_化 3. 國際化 1. C1_C2_C3 2. C1C2_C3 3. C1_C2C3 4. C1C2C3可見“國際化”有全然相應(yīng)的詞,則覺得這個詞語即是一個詞。
規(guī)則總結(jié)例如以下:
選取C1C2C3模式
?
②?規(guī)則2,最大平均詞匯長度。假設(shè)詞語分詞不滿足規(guī)則1,則使用規(guī)則2:
類似。詞語“南京市長江大橋”,分詞結(jié)果可能例如以下
1. 南京市_長江大橋 —— 平均詞長度為7/2=3.5 2. 南京_市長_江大橋 —— 平均詞長度為7/3=2.3歸納該規(guī)則為則選取第一種分詞方式,可見這個規(guī)則是兼容第一個規(guī)則的
1. C1C2_C3C4C5C6 2. C1C2_C3C4_C5C6③?規(guī)則3,最小詞長方差。假設(shè)規(guī)則②不成立,則進(jìn)行規(guī)則三。這個規(guī)則和我們平時用語有關(guān),一般我們在組織語句時,為了朗朗上口,往往使用的詞匯組成長度比較一致。
比方,“幸福_快樂”,“人之初_性本善”,“君子一言,駟馬難追”。?
類似,詞語“研究生命科學(xué)”
1. 研究生_命_科學(xué) ——詞長方差0.82 2. 研究_生命_科學(xué) ——詞長方差0上述平均詞長都是2,可是詞長方差不一致。依據(jù)規(guī)則③。選擇另外一種分詞方式,這樣的規(guī)則能夠歸納為
1. _C1C2_C3C4_C5C6_ 2. _C1C2C3_C4_C5C6_④?規(guī)則4。最大單字自由度。
所謂單字自由度,能夠簡單的理解為這個字作為單獨(dú)出現(xiàn)的語境次數(shù)。比方“的”常常作為定語修飾字,常常出如今各種語境。可是“的”偶爾也會和其它字詞組成成語。比方“目的”等,這樣的組合會影響改字的自由度。
有關(guān)自由度和凝固度。回頭在《新詞發(fā)現(xiàn)》中討論。這樣的推斷主要是使用在單字存在的場景。
在規(guī)則③不成立的情況下,進(jìn)行規(guī)則④的推斷。
1. 化妝_和(10)_服裝 2. 化妝_和服_裝(3)總結(jié)該規(guī)則為(備注,上面自由度屬于個人瞎編)平均詞長和詞長方差是一致的,可是單字的自由度不同。選擇第一種分詞方式
| 1.?_C1C2_C3_C4C5_ 2.?_C1C2_C3C4_C5_ Compare?the?freedom(C3)?to?freedom(C5) |
?
3.?該算法的錯誤情況
????該算法的錯誤案例能夠詳見原論文的Example?of?errors小節(jié)。個別錯誤是能夠避免的,尤其是單字自由度,主要是語料庫的訓(xùn)練問題。有些問題能夠通過新詞發(fā)現(xiàn)解決。查看該約束,能夠推斷是否滿足自己的應(yīng)用場景。
?
4.?小結(jié)
? ? 能感覺這篇算法闡述還是非常精煉美麗的,在非常多場景適定性也非常強(qiáng)。興許將對基于mmseg算法開源的jcseg做個分析。
?
轉(zhuǎn)載于:https://www.cnblogs.com/lytwajue/p/6859946.html
總結(jié)
以上是生活随笔為你收集整理的Mmseg中文分词算法解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STL源码分析-bitset
- 下一篇: 窗体的消息处理