寫在前面
- Sequence Labeling主要涉及到了
POS tagging、Named Entity Recognition、chunking等 - 主流的解決方案有兩種,一種是基于
hand-crafted的,比如CRF, Hidden Markov Model;另一種是基于end-to-end的,主要是使用RNN,配合CNN提取char級別的feature,配合LSTM獲取word級別的上下文關(guān)聯(lián)。配合CRF獲取infer級別的前后關(guān)聯(lián),整體來說后者從性能、正確率以及實用程度上都高于前者
中文詞處理
Word Segment
DataSets: pku, msr, cityu, as
Tokenizer: jieba, HanLP, StanfordCoreNLP
結(jié)婚的和尚未結(jié)婚的確實在干擾分詞啊
[結(jié)婚/vi, 的/ude1, 和/cc, 尚未/d, 結(jié)婚/vi, 的/ude1, 確實/ad, 在/p, 干擾/vn, 分詞/n, 啊/y]
買水果然后來世博園最后去世博會
[買/v, 水果/n, 然后/c, 來/vf, 世博園/n, 最后/f, 去/vf, 世博會/n]
中國的首都是北京
[中國/ns, 的/ude1, 首都/n, 是/vshi, 北京/ns]
歡迎新老師生前來就餐
[歡迎/v, 新/a, 老/a, 師生/n, 前來/vi, 就餐/vi]
工信處女干事每月經(jīng)過下屬科室都要親口交代24口交換機等技術(shù)性器件的安裝工作
[工信處/n, 女/b, 干事/nnt, 每月/t, 經(jīng)過/p, 下屬/v, 科室/n, 都/d, 要/v, 親口/d, 交代/v, 24/m, 口/n, 交換機/n, 等/udeng, 技術(shù)性/n, 器件/n, 的/ude1, 安裝/v, 工作/vn]
隨著頁游興起到現(xiàn)在的頁游繁盛,依賴于存檔進行邏輯判斷的設(shè)計減少了,但這塊也不能完全忽略掉。
[隨著/p, 頁游/nz, 興起/v, 到/v, 現(xiàn)在/t, 的/ude1, 頁游/nz, 繁盛/a, ,/w, 依賴于/v, 存檔/vi, 進行/vn, 邏輯/n, 判斷/v, 的/ude1, 設(shè)計/vn, 減少/v, 了/ule, ,/w, 但/c, 這/rzv, 塊/q, 也/d, 不能/v, 完全/ad, 忽略/v, 掉/v, 。/w]
| Tokenizer | ds | Precision | Recall | F1 score |
|---|---|---|---|---|
| jieba | pku | 0.8338489375832363 | 0.7728782904800608 | 0.8022067842526882 |
| jieba(with user dict) | pku | 0.8343200050211338 | 0.7727757815260308 | 0.8023694658651723 |
| HanLP | pku | 0.8863987044475511 | 0.8734416798869414 | 0.8798724933853116 |
| Stanford | pku | 0.883465898038581 | 0.8237619508157312 | 0.8525699626278037 |
| jieba | msr | 0.7798768059172906 | 0.7544719981628073 | 0.766964083416498 |
| jieba(with user dict) | msr | 0.7922662578776877 | 0.7593750028213545 | 0.7754720205623936 |
| HanLP | msr | 0.8167591303780943 | 0.8210837683916675 | 0.8189157398952949 |
| Stanford | msr | 0.7818544940010788 | 0.8010022770029455 | 0.7913125703503816 |
Named Entity Recognition
SLTK
DataSet: CoNLL 2003 NER
Model: CNN + Bi-LSTM(Char + Word) + CRF

| model | Precision | Recall | F1 |
|---|---|---|---|
| Random Initialization | 0.7072862824839918 | 0.6843748979258535 | 0.6956419913024885 |
| Glove | 0.8792050905687264 | 0.9106106561520572 | 0.8946323395375901 |
| Glove.Pos.Chunk | 0.8775935069639225 | 0.9135456410774879 | 0.8952087544973495 |
Hidden Markov Model
- 知識點參見:Part-of-Speech Tagging 以及 Hidden Markov Models
- 項目參見:HMM-Tagger
- 論文參見:Stanford Pos Tagging
End-to-End Sequence Labeling
- 項目參見:SLTK 、NCRF++
- 論文參見: Ma X, and Hovy E. End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF 以及 Lample G, Ballesteros M, et al. Neural Architectures for Named Entity Recognition. NANCL, 2016.
CRF++
對Sequence Labeling鼓搗了兩三天,主要就是懟這個CRF++模型,談一些自己個人的理解
整個模型分為三個大層:
- 第一個大層是char級別的特征提取層,主要用到的是CNN,關(guān)注點是單詞的形態(tài)學(xué)(比如
ly后綴大概率會是adverb) - 第二個大層是word級別的特征提取層,主要用到的有 Word Embedding, LSTM(GRU),提取出句子中word與其context之間的關(guān)系
- 第三個大層是infer級別的輸出訓(xùn)練層,在以往的RNN模型中,輸出時使用
softmax或者sigmoid函數(shù)得到結(jié)果,每個結(jié)果輸出時是獨立的,因此我們加了一層CRF,使得輸出時需要考慮context

crf++.png
Hidden Markov Model
上面HMM知識點中阿衡學(xué)姐已經(jīng)詳細地記錄了筆記,因此在這里只放幾張圖幫助理解
Hidden Markov Model的概覽

hmm.png
Forward時某一時刻t
- 在 forward_algorithm中,t+1時刻hidden狀態(tài)j的概率是 t時刻所有狀態(tài)概率*轉(zhuǎn)換矩陣,再求和
-
而在viterbi_algorithm中,t+1時刻hidden狀態(tài)j的概率是 t時刻所有狀態(tài)概率*轉(zhuǎn)換矩陣,再取最大值,并記錄下t時刻貢獻值最大的狀態(tài) 用于輸出路徑
forward_at_t.png
Forward Algorithm

image.png
