分詞
規則分詞
維護詞典 =》用語句中字符串與詞典進行比較,找到則切分,否則不切分。
- 正向最大匹配法(Maximum Match Method,MM法);
- 逆向最大匹配法(Reverse Maximum Match Method,RMM法)=》使用逆序詞典,文檔進行倒排處理;
- 雙向最大匹配法(Bi-direction Matching Method);
統計分詞
相連的字反覆出現,認爲它們可能組成的是一個詞。
- 語言模型:爲長度爲m的字符串確定其概率分佈P(w1,w2,…,wm),其中w1到wm依次表示各個詞語;
- 隱馬爾可夫模型(HMM模型):一個字在詞中佔據確定的構詞位置,即詞首B、詞中M、詞尾E、單獨成詞S,所以可以對字在字串中的位置進行序列標註,所以HMM將分詞作爲字在字串中的序列標註人物來實現;
- 其他統計分詞算法:
條件隨機場(CRF):每個狀態不僅與它前面的狀態有關,還和它後面的狀態有關;
神經網絡分詞算法:CNN,LSTM。
補充:HMM(齊次馬爾科夫假設,發射概率,轉移概率)。
混合分詞(規則+統計)
先基於詞典進行分詞,再使用統計方法輔助(處理未登錄詞和歧義詞)。
分詞標註方案
標籤:B(Begin),I(Intermediate),E(End),S(Single),O(Other)。
方案:
- IOB1: 文本塊中字符用 I 標記,文本塊前爲同類型文本塊,則該文本塊第一個字符用B標記。不屬於目標文本塊的字符用O標記。
比如,“唐 長安城 以 隋 大興城 爲 基礎”,
標記爲 “I-TIME B-LOC I-LOC I-LOC O I-TIME B-LOC I-LOC I-LOC O O O”。 - IOB2: 每個文本塊都以標籤B開始,除此之外,跟IOB1一樣。
比如,“唐 長安城 以 隋 大興城 爲 基礎”,
標記爲 “B-TIME B-LOC I-LOC I-LOC O B-TIME B-LOC I-LOC I-LOC O O O”。 - IOE1: 獨立文本塊用 I 標記,同類文本塊連續時,前一個文本塊的最後一個字符用 E 標記。
比如,“唐 長安城 以 隋 大興城 爲 基礎”,
標記爲 “E-TIME I-LOC I-LOC I-LOC O E-TIME I-LOC I-LOC I-LOC O O O”。 - IOE2: 每個文本塊都以標籤E結尾,除此之外,跟IOE1一樣。
比如,“唐 長安城 以 隋 大興城 爲 基礎”,
標記爲 “E-TIME I-LOC I-LOC E-LOC O E-TIME I-LOC I-LOC E-LOC O O O”。 - START/END (也叫SBEIO、IOBES): 包含了全部的5種標籤,文本塊由單個字符組成的時候,使用S標籤來表示,由一個以上的字符組成時,首字符總是使用B標籤,尾字符總是使用E標籤,中間的字符使用 I 標籤。
比如,“唐 長安城 以 隋 大興城 爲 基礎”,
標記爲 “S-TIME B-LOC I-LOC E-LOC O S-TIME B-LOC I-LOC E-LOC O O O”。 - IO: 只使用I和O標籤,顯然,如果文本中有連續的同種類型實體的文本塊,使用該標籤方案不能夠區分這種情況。
比如,“唐 長安城 以 隋 大興城 爲 基礎”,
標記爲 “I-TIME I-LOC I-LOC I-LOC O I-TIME I-LOC I-LOC I-LOC O O O”。
其中最常用的是IOB2、IOBS、IOBES。具體怎麼標記,完全可以根據自己的經驗,不必拘泥於這類方案。
分詞工具
ref: 自然語言處理相關項目列表(2018/02/05更新)
- FoolNLTK
- CWS_Dict
- multi-criteria-cws
- jieba
- NLPIR-team/NLPIR
常見模型
- BiLstm+CRF
– 論文 Bidirectional LSTM-CRF Models for Sequence Tagging by Huang, Xu and Yu
– 參考代碼實現 tf_ner - BiLstm+BiLstm+CRF
– 論文 Neural Architectures for Named Entity Recognition by Lample et al.
– 參考代碼實現 tf_ner - BiLstm+Cnn+CRF
– 論文 End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF by Ma et Hovy
– 參考代碼實現 tf_ner