在線演示:http://118.25.42.251:7777/fenci?type=mine&text=南京市長(zhǎng)蒞臨指導(dǎo),大家熱烈歡迎铜异。公交車(chē)中將禁止吃東西!
一、模型簡(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)門(mén)1(120,128)确镊,其中128為模型中BiLSTM的輸出維度士骤。如果不使用CRF層,則可以在模型最后加上一個(gè)全連接層用于分類(lèi)蕾域。設(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ò)的分詞模型。
????????然鵝会通,雖然依賴(lài)于神經(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用于文本分類(lèi)的模型如下啊奄。
? ? ? ? 設(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ù)