在線演示:http://118.25.42.251:7777/fenci?type=mine&text=南京市長(zhǎng)蒞臨指導(dǎo),大家熱烈歡迎。公交車中將禁止吃東西!
一、模型簡(jiǎn)介
????????在序列標(biāo)注任務(wù)(中文分詞CWS,詞性標(biāo)注POS,命名實(shí)體識(shí)別NER等)中,目前主流的深度學(xué)習(xí)框架是BiLSTM+CRF。其中BiLSTM融合兩組學(xué)習(xí)方向相反(一個(gè)按句子順序,一個(gè)按句子逆序)的LSTM層,能夠在理論上實(shí)現(xiàn)當(dāng)前詞即包含歷史信息、又包含未來(lái)信息,更有利于對(duì)當(dāng)前詞進(jìn)行標(biāo)注。BiLSTM在時(shí)間上的展開(kāi)圖如下所示。

????????若輸入句子由120個(gè)詞組成,每個(gè)詞由100維的詞向量表示,則模型對(duì)應(yīng)的輸入是(120,100),經(jīng)過(guò)BiLSTM后隱層向量變?yōu)門1(120,128),其中128為模型中BiLSTM的輸出維度。如果不使用CRF層,則可以在模型最后加上一個(gè)全連接層用于分類。設(shè)分詞任務(wù)的目標(biāo)標(biāo)簽為B(Begin)、M(Middle)、E(End)、S(Single),則模型最終輸出維度為(120,4)的向量。對(duì)于每個(gè)詞對(duì)應(yīng)的4個(gè)浮點(diǎn)值,分別表示對(duì)應(yīng)BMES的概率,最后取概率大的標(biāo)簽作為預(yù)測(cè)label。通過(guò)大量的已標(biāo)注數(shù)據(jù)和模型不斷迭代優(yōu)化,這種方式能夠?qū)W習(xí)出不錯(cuò)的分詞模型。
????????然鵝,雖然依賴于神經(jīng)網(wǎng)絡(luò)強(qiáng)大的非線性擬合能力,理論上我們已經(jīng)能夠?qū)W習(xí)出不錯(cuò)的模型。但是,上述模型只考慮了標(biāo)簽上的上下文信息。對(duì)于序列標(biāo)注任務(wù)來(lái)說(shuō),當(dāng)前位置的標(biāo)簽L_t與前一個(gè)位置L_t-1、后一個(gè)位置L_t+1都有潛在的關(guān)系。
? ? ? ? 例如,“我/S 喜/B 歡/E 你/S”被標(biāo)注為“我/S 喜/B 歡/B 你/S”,由分詞的標(biāo)注規(guī)則可知,B標(biāo)簽后只能接M和E,因此上述模型利用這種標(biāo)簽之間的上下文信息。因此,自然語(yǔ)言處理領(lǐng)域的學(xué)者們提出了在模型后接一層CRF層,用于在整個(gè)序列上學(xué)習(xí)最優(yōu)的標(biāo)簽序列。添加CRF層的模型如下圖所示。

上述圖片出自http://www.aclweb.org/anthology/N16-1030。
模型通過(guò)下述公式計(jì)算最優(yōu)標(biāo)注序列,A矩陣是標(biāo)簽轉(zhuǎn)移概率,P矩陣是BiLSTM的預(yù)測(cè)結(jié)果。

模型訓(xùn)練的時(shí)候,對(duì)于每個(gè)序列 y 優(yōu)化對(duì)數(shù)損失函數(shù),調(diào)整矩陣A的值。


當(dāng)模型訓(xùn)練完成,模型預(yù)測(cè)的時(shí)候,按如下公式尋找最優(yōu)路徑:

Y_x表示所有可能的序列集合,y*表示集合中使得Score函數(shù)最大的序列。
(以上為論文的核心部分,其它細(xì)節(jié)請(qǐng)參閱原文)
? ? ? ? 至此,我們已經(jīng)大致了解BiLSTM-CRF的原理。對(duì)于分詞任務(wù),當(dāng)前詞的標(biāo)簽基本上只與前幾個(gè)和和幾個(gè)詞有關(guān)聯(lián)。BiLSTM在學(xué)習(xí)較長(zhǎng)句子時(shí),可能因?yàn)槟P腿萘繂?wèn)題丟棄一些重要信息,因此我在模型中加了一個(gè)CNN層,用于提取當(dāng)前詞的局部特征。CNN用于文本分類的模型如下。

? ? ? ? 設(shè)句子輸入維度為(120,100),經(jīng)過(guò)等長(zhǎng)卷積后得到T2(120,50),其中50為卷積核個(gè)數(shù)。對(duì)于當(dāng)前詞對(duì)應(yīng)的50維向量中,包含了其局部上下文信息。我們將T1與T2拼接,得到T3(120,178),T3通過(guò)全連接層得到T4(120,4),T4輸入至CRF層,計(jì)算最終最優(yōu)序列。最終模型BiLSTM-CNN-CRF如下。

本文模型并不復(fù)雜,下文將講述一下我實(shí)現(xiàn)時(shí)的一些細(xì)節(jié)。主要包括:
1. 模型輸入需要固定長(zhǎng)度,如何解決
2. 如何做好模型的實(shí)時(shí)訓(xùn)練
3. 與結(jié)巴分詞的性能比較
4. 如何做成微信分詞工具、分詞接口服務(wù)