本文介紹一種簡潔優雅的多標準中文分詞方案,可聯合多個不同標準的語料庫訓練單個模型,同時輸出多標準的分詞結果。通過不同語料庫之間的遷移學習提升模型的性能,在10個語料庫上的聯合試驗結果優於絕大部分單獨訓練的模型。模型參數和超參數全部共享,複雜度不隨語料庫種類增長。論文:https://arxiv.org/abs/1712.02856;代碼和語料:https://github.com/hankcs/multi-criteria-cws。
自然語言處理,特別是中文處理中,語料庫往往珍稀且珍貴。具體到中文分詞,也是如此。為了做出一個實用的系統,不光需要高效的算法,大規模語料庫也必不可少。然而對於缺乏經費的研究團隊和個人,卻往往只能得到sighan2005等屈指可數的幾個小型語料庫。即便如此,這些語料庫的標註規範還互不兼容,無法混合起來訓練:
比如PKU的最大特點就是姓名拆分為「姓」+「名」,MSR的標誌則是命名實體構成大量長單詞,而港臺地區的語言習慣本來就與大陸不同。這些差異導致無法簡單合併各方語料形成一個更大量級的語料庫,只能在某一個語料庫上訓練,浪費了其他標註數據。
已經有工作開始研究如何利用多方語料庫來聯合學習中文分詞,比如 Chen 20171精心設計的對抗神經網絡,針對每個語料庫提取分詞標準相關或無關的特徵。然而該工作並沒有達到前沿的準確率,甚至聯合訓練的成績還比不上以前單獨訓練的分數,無法體現聯合學習的本意與優勢。
事實上,這些標註風格迥異的分詞語料像極了機器翻譯中的多國語言:表達類似的意思,卻採用了不同的方式。以前的多語種互譯系統也是需要針對每個語種pair設計一對encoder-decoder:
圖片轉自史丹福大學CS224n講義
對n種語言來講,就需要n×(n1)對encoder-decoder。類似地,針對每個分詞語料庫設計網絡層的話,對n種分詞標準,就需要n個層。這樣的系統臃腫不堪,過度複雜,也無法應對Zero-Shot Translation問題(缺乏某兩個語言之間的平行語料)。
谷歌的解決方案說來簡單,卻不失優雅。聰明之處在於不修改網絡架構,而是在輸入數據上做文章。只需在輸入平行語料pair中人工加入目標語種的標識符,就可以把所有語種的平行語料混合在一起訓練了:
圖片轉自史丹福大學CS224n講義
這的確是長期跟工業生產線打交道的人才能想出來的實用方法。
受谷歌的多語種翻譯系統啟發,我們發現只需在句子首尾添加一對標識符,即可平滑無縫地將多標準語料庫混合起來訓練。具體做法是用一對閉合的將每個句子包裹起來:
接下來就可以通過大家熟悉的Bi-LSTM-CRF等序列標註模型聯合訓練了。在具體聯合訓練中,將這兩個人工標識符視作普通字符即可,也不必人工區分句子的來源。這兩個人工標識符會提示RNN這個句子屬於哪種分詞標準,使其為每個字符生成的contexual representation都受到該分詞標準的影響。
在測試的時候,這兩個人工標識符起到指定所需分詞標準的作用。當然,公平起見標識符並不計入準確率的計算。
代碼
連同語料庫一起開源在GitHub上:https://github.com/hankcs/multi-criteria-cws。
調用腳本只需一兩句話,請參考GitHub上的說明。
更多細節,請參考論文。
結果
我們在標準的sighan2005和sighan2008上做了實驗,在沒有針對性調參的情況下依然取得了更高的成績(當時設備條件簡陋,所以在所有數據集上都用了同一套超參數)。所有分值都通過了官方評測腳本的驗算。
sighan2005
下圖的baseline是在各個語料庫上單獨訓練的結果,+multi是聯合訓練的結果。
sighan2008
我們也在標準的sighan2008上做了相同的試驗,結果是:
值得一提的是,我們並沒有針對sighan2005和sighan2008分別調參,而是放棄調參、在所有數據集上沿用了PKU的超參數。這是由於我們簡陋的設備條件限制;歡迎計算力充裕的朋友自行調參,或許能有更好的結果。
10in1
由於sighan2008語料庫是收費的,難以獲取,沒有授權的情況下也無法二次發布。同時我們不希望收費語料庫成為阻礙小團隊與個人研究者的壁壘,所以我們在10個公開的語料庫上做了額外的試驗。
這10個語料庫分別是來自sighan2005的4份語料庫以及
Universal Dependencies Project的UDC (Universal Dependencies Treebank Chinese)
由 Stanford CoreNLP 公開的 CTB6 (Chinese Tree Bank 6)
由山西大學發布的SXU
由國家語委公布的CNC語料庫
由王威廉老師公開的微博樹庫 WTB (Wang et al. 20142)
由張梅山老師公開的誅仙語料庫 ZX (Zhang et al. 20143)。
語料庫的授權信息如下(如有錯誤,歡迎反饋):
雖然部分語料庫不常見於文獻,但它們所屬領域不同(新聞、微博、小說、港臺)、數據規模迥異,恰好可以用來檢驗多標準分詞模型的泛用性。我們的測試結果是:
(備註:此處與 Chen 2017 無法構成直接比較)
由於RNN訓練很慢,為了方便復現結果,我們提供包含隨機數在內的命令行:
./script/train.sh joint-10in1--dynet-seed10364--python-seed840868838938890892
除非依賴類庫版本變遷,否則應該能夠保證復現我們的結果。
我們還考察了這些人工標識符所起的作用,將它們的embedding通過t-SNE可視化出來後,發現幾乎沒有顯著的相似性:
它們似乎起的作用都不相同。
結論
這是一種簡單的多標註中文分詞解決方案,可以在不增加模型複雜度的情況下聯合多個語料庫訓練單個模型。該方案雖然簡單,但的確帶來了顯著的性能提升(特別是對於小數據集如WTB)。同時我們也注意到特別大的數據集受益很小或無法從中受益(MSR),留作未來研究。我們希望該方法成為多標準中文分詞的一個baseline,或生產系統中的一個物美價廉的拓展。
這是我的第一篇NLP論文,肯定有不少錯誤,歡迎指出。任何語法、拼寫、行文上的錯誤和建議,歡迎留言,我會及時更正。謝謝!
鳴謝
感謝在試驗器材不足時伸出援手的朋友們,以及對論文和試驗施以援手的同學!
感謝那些慷慨地公開了標註語料庫的老師與研究者們,這對沒有研究經費的小團隊而言無疑是雪中送炭!
Bi-LSTM-CRF模型的實現參考了rguthrie3的Dynet1.x版本。
References
X. Chen, Z. Shi, X. Qiu, and X. Huang, 「Adversarial Multi-Criteria Learning for Chinese Word Segmentation.,」 vol. 1704, p. arXiv:1704.07556, 2017.↑
William Yang Wang, Lingpeng Kong, Kathryn Mazaitis, and William W Cohen. 2014. Dependency Parsing for Weibo - An Efficient Probabilistic Logic Programming Approach. EMNLP .↑
Meishan Zhang, Yue Zhang, Wanxiang Che, and Ting Liu. 2014. Type-Supervised Domain Adaptation for Joint Segmentation and POS-Tagging. EACL .↑
知識共享署名-非商業性使用-相同方式共享:碼農場簡單有效的多標準中文分詞