中文分詞模型算法調研

1. 原理-分詞算法

1.1. 基於詞典的分詞

1、最大匹配分詞算法:尋找最優組合的方式是將匹配到的最長詞組合在一起。其缺點是嚴重依賴詞典,無法很好地處理分詞歧義和未登錄詞。優點是由於這種方法簡單、速度快、且分詞效果基本可以滿足需求,因此在工業界仍然很受歡迎。

2、最短路徑分詞算法:將一句話中的所有詞匹配出來,之後尋找從起始點到終點的最短路徑作爲最佳組合方式
基於Dijkstra算法求解最短路徑、N-最短路徑分詞算法

3、基於n-gram model的分詞算法:將基於詞的語言模型所統計出的概率分佈應用到詞圖中,求解最大概率的路徑

1.2. 基於字的分詞

把一個字標記成B(Begin), I(Inside), O(Outside), E(End), S(Single)。

1、生成式模型分詞算法:n-gram模型、HMM隱馬爾可夫模型、樸素貝葉斯分類等,基於Python的jieba分詞器和基於Java的HanLP分詞器都使用了HMM
HMM基本思路是將每個字在構造一個特定的詞語時都佔據着一個確定的詞位置,將分詞作爲字在字符串中的序列標註任務來實現的。一般veterbi求解,最大概率的路徑。
https://blog.csdn.net/zhangduan8785/article/details/80443650

2、判別式模型分詞算法:感知機、CRF條件隨機場等
CRF時HMM的延申,每個狀態不僅與前面的狀態有關,也與後面的狀態有關,通常使用深度學習網絡學習特徵,利用CRF\softmax分類

1.3. 神經網絡分詞算法

目前公認效果最好的模型是BiLSTM+CRF

2. 實踐部分

參考中文分詞:中文有7000多個常用字,56000多個常用詞

2.1. 規則、統計分詞普通算法

https://blog.csdn.net/qiang12qiang12/article/details/81589386
https://github.com/liuhuanyong/WordSegment
正向最大匹配法
逆向最大匹配法
雙向最大匹配算法
Ngram
HMM
1、數據集
 3種匹配算法:25006個詞
在這裏插入圖片描述
 Ngram、HMM:人民日報預料29W句子
在這裏插入圖片描述
2、效果
評測語料:微軟評測語料,共3985個句子
性能比較
在這裏插入圖片描述

2.2. CRF普通算法

https://github.com/liuhuanyong/HuanNLP
數據集、效果無詳細介紹

2.3. BiLSTM+CRF

https://github.com/GlassyWing/bi-lstm-crf
1、詞性標註實例
嫌 疑 人 趙 國 軍 。 B-N I-N I-N B-NR I-NR I-NR S-W
其中B表示一個詞語的開頭,I表示非一個詞語的開頭,S表示單字成詞。

2、數據集
選用人民日報2014年的80萬語料作爲訓練語料
詞數:20744
行數:317
在這裏插入圖片描述
已提供代碼將語料轉化爲(1、)詞性標註實例效果

2、效果
Recall: 0.939404
Precision: 0.949798

2.4. BiLSTM+CRF(算法同上)

https://github.com/EricLingRui/NLP-tools
在人民日報上的分詞能達到正確率97%
https://github.com/howl-anderson/PaddleTokenizer
人民日報訓練集,效果未寫
https://github.com/stephen-v/zh-segmentation-keras

2.5. Universal Transformer (Encoder) + CRF

https://github.com/GlassyWing/transformer-word-segmenter

1、詞性標註實例
嫌 疑 人 趙 國 軍 。 B-N I-N I-N B-NR I-NR I-NR S-W

2、數據集
選用人民日報2014年的80萬語料作爲訓練語料
詞數:20744
行數:317
在這裏插入圖片描述
可代碼轉化爲詞性標註實例效果

3、效果
Recall: 0.962784
Precision: 0.960839

2.6. 快速神經網絡分詞包

https://github.com/yaoguangluo/Deta_Parser
版本號:11.1.0支持標點符號分離(因爲標點特別多, 未做病句標點分析, 大家可以自由改 2019-05-14) 契形字符, 目前可混合識別12國語言, 可混合分詞70國語言(契形+中(簡,繁)日,韓,象形, 無標點,歧義,繞口令,帶病句快速混分高質量算法研究同時保證1800萬+/每秒混分速度和99.9%分詞準確率(deta的科研目標是準確率上99.999999% (中文分析錯誤率小於億分之一)) 和商業閉源語料庫版(65000+中文簡體詞彙和35萬12國詞彙). 20190504
在這裏插入圖片描述

2.7. Jieba分詞

https://github.com/fxsjy/jieba
涉及算法:
 基於前綴詞典實現詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG),採用動態規劃查找最大概率路徑,找出基於詞頻的最大切分組合;
 對於未登錄詞,採用了基於漢字成詞能力的 HMM模型,採用Viterbi算法進行計算;
 基於Viterbi算法的詞性標註;
 分別基於tfidf和textrank模型抽取關鍵詞;

用法:覆蓋jieba中dict.txt語料詞典
1、數據集
已分詞彙349046個(後面詞性可不需要)
在這裏插入圖片描述

3. 總結

目前分詞實踐主要有三類情況:
1、規則和統計分詞等普通算法,很大程度依賴於詞典,準確率約爲65%-75%。
2、神經網絡算法,準確率在90%以上,但需調研是否能用於其他語言標註的訓練。
3、已有分詞工具改變其詞典,如jieba分詞,準確率未知,算法原理基於規則和統計分詞等普通算法。

數據集要求:
中文有7000多個常用字,56000多個常用詞,上面實踐中最少也標註了上萬的詞,針對其他的語言可以先標註部分語料進行測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章