簡單有效的多標準中文分詞詳解

adnb34g發表於2018-12-28

簡單有效的多標準中文分詞詳解

本文介紹一種簡潔優雅的多標準中文分詞方案,可聯合多個不同標準的語料庫訓練單個模型,同時輸出多標準的分詞結果。透過不同語料庫之間的遷移學習提升模型的效能,在 10個語料庫上的聯合試驗結果優於絕大部分單獨訓練的模型。模型引數和超引數全部共享,複雜度不隨語料庫種類增長。

(相關內容已經整合到大快的 hanlp中,程式碼和語料可訪問github上的hanlp開源專案主頁查詢)

自然語言處理,特別是中文處理中,語料庫往往珍稀且珍貴。具體到中文分詞,也是如此。為了做出一個實用的系統,不光需要高效的演算法,大規模語料庫也必不可少。然而對於缺乏經費的研究團隊和個人,卻往往只能得到 sighan2005 等屈指可數的幾個小型語料庫。即便如此,這些語料庫的標註規範還互不相容,無法混合起來訓練(我們試驗驗證了這一點):

 

 

比如 PKU的最大特點就是姓名拆分為“姓”+“名”,MSR的標誌則是命名實體構成大量長單詞,而港臺地區的語言習慣本來就與大陸不同。這些差異導致無法簡單合併各方語料形成一個更大量級的語料庫,只能在某一個語料庫上訓練,浪費了其他標註資料。

已經有工作開始研究如何利用多方語料庫來聯合學習中文分詞,比如 Chen 20171精心設計的對抗神經網路,針對每個語料庫提取分詞標準相關或無關的特徵。然而該工作並沒有達到前沿的準確率,甚至聯合訓練的成績還比不上以前單獨訓練的分數,無法體現聯合學習的本意與優勢。

事實上,這些標註風格迥異的分詞語料像極了機器翻譯中的多國語言:表達類似的意思,卻採用了不同的方式。以前的多語種互譯系統也是需要針對每個語種 pair設計一對encoder-decoder:

 

圖片轉自史丹佛大學 CS224n講義

 

這的確是長期跟工業生產線打交道的人才能想出來的實用方法。

受谷歌的多語種翻譯系統啟發,我們發現只需在句子首尾新增一對識別符號,即可平滑無縫地將多標準語料庫混合起來訓練。具體做法是用一對閉合的 <dataset> </dataset>將每個句子包裹起來:

 

 

接下來就可以透過大家熟悉的 Bi-LSTM-CRF等序列標註模型聯合訓練了。在具體聯合訓練中,將這兩個人工識別符號視作普通字元即可,也不必人工區分句子的來源。這兩個人工識別符號會提示RNN這個句子屬於哪種分詞標準,使其為每個字元生成的contexual representation都受到該分詞標準的影響。

在測試的時候,這兩個人工識別符號起到指定所需分詞標準的作用。當然,公平起見識別符號並不計入準確率的計算。

 

程式碼

連同語料庫一起開源在 GitHub上,可訪問 hanlp開源專案檢視

呼叫指令碼只需一兩句話,請參考 GitHub上的說明。

結果

我們在標準的 sighan2005和sighan2008上做了實驗,在沒有針對性調參的情況下依然取得了更高的成績(當時裝置條件簡陋,所以在所有資料集上都用了同一套超引數)。所有分值都透過了官方評測指令碼的驗算。

sighan2005

下圖的 baseline是在各個語料庫上單獨訓練的結果,+naive是合併語料卻不加識別符號的結果,+multi是我們提出的聯合訓練方案的結果。

 

我們使用的特徵是極小的,僅僅是字元和 bigram。如果像最近流行的做法那樣加入12個ngram、詞典特徵(word embedding),可能還會有進一步提升。但我們的論文中心是一個簡單的多標準分詞方案,主打精簡高效,並非追求高分勝過效率,所以沒有采用這些特徵工程的手段。

sighan2008

我們也在標準的 sighan2008上做了相同的試驗,結果是:

 

 

值得一提的是,我們並沒有針對 sighan2005和sighan2008分別調參,而是放棄調參、在所有資料集上沿用了PKU的超引數。這是由於我們簡陋的裝置條件限制;歡迎計算力充裕的朋友自行調參,或許能有更好的結果。

10in1

由於 sighan2008語料庫是收費的,難以獲取,沒有授權的情況下也無法二次釋出。同時我們不希望收費語料庫成為阻礙小團隊與個人研究者的壁壘,所以我們在1010個公開的語料庫上做了額外的試驗。

 

1010個語料庫分別是來自sighan2005的44份語料庫以及

1、 Universal Dependencies Project的UDC (Universal Dependencies Treebank Chinese)

2、 Stanford CoreNLP 公開的 CTB6 (Chinese Tree Bank 6)

3、 由山西大學釋出的 SXU

4、 由國家語委公佈的 CNC 語料庫

5、 由王威廉老師公開的微博樹庫 WTB (Wang et al. 2014 2)

6、 由張梅山老師公開的誅仙語料庫 ZX (Zhang et al. 2014 3)。

 

語料庫的授權資訊如下(如有錯誤,歡迎反饋):

 

 

雖然部分語料庫不常見於文獻,但它們所屬領域不同(新聞、微博、小說、港臺)、資料規模迥異,恰好可以用來檢驗多標準分詞模型的泛用性。我們的測試結果是:

 

(備註:此處與 Chen 2017 無法構成直接比較)

由於 RNN訓練很慢,為了方便復現結果,我們提供包含隨機數在內的命令列:

 

1 . /script/train.sh joint-10in1 --dynet-seed 10364 --python-seed 840868838938890892

 

除非依賴類庫版本變遷,否則應該能夠保證復現我們的結果。

我們還考察了這些人工識別符號所起的作用,將它們的 embedding透過t-SNE視覺化出來後,發現幾乎沒有顯著的相似性:

 

它們似乎起的作用都不相同。

 

結論

這是一種簡單的多標註中文分詞解決方案,可以在不增加模型複雜度的情況下聯合多個語料庫訓練單個模型。該方案雖然簡單,但的確帶來了顯著的效能提升(特別是對於小資料集如 WTB)。同時我們也注意到特別大的資料集受益很小或無法從中受益(MSR),留作未來研究。我們希望該方法成為多標準中文分詞的一個baseline,或生產系統中的一個物美價廉的擴充。

 

作者: hankcs   大快搜尋高階研究員


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2286776/,如需轉載,請註明出處,否則將追究法律責任。

相關文章