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

2021-01-10 小眾fashion圈

本文介紹一種簡潔優雅的多標準中文分詞方案,可聯合多個不同標準的語料庫訓練單個模型,同時輸出多標準的分詞結果。通過不同語料庫之間的遷移學習提升模型的性能,在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 .↑

知識共享署名-非商業性使用-相同方式共享:碼農場簡單有效的多標準中文分詞

相關焦點

  • 中文分詞最佳紀錄刷新,兩大模型分別解決中文分詞及詞性標註問題
    中文分詞的SOTA中文分詞目的是在中文的字序列中插入分隔符,將其切分為詞。例如,「我喜歡音樂」將被切分為「我/喜歡/音樂」(「/」表示分隔符)。中文語言因其特殊性,在分詞時面臨著兩個主要難點。一是歧義問題,由於中文存在大量歧義,一般的分詞工具在切分句子時可能會出錯。
  • 科學網—幫機器學會中文分詞和詞性標註
    新模型旨在提升科研效率和工業場景應用   ■
  • 中文分詞和詞性標註:為拓展工業場景應用夯基—新聞—科學網
    「部分居民生活水平」這樣簡單的中文短語,人類理解起來沒有絲毫困難。
  • 中文分詞新模型幫它進步
    據研究人員介紹,分詞及詞性標註是中文自然語言處理的基本任務,但當前沒有比較好的一體化解決方案,而且中文分詞普遍存在歧義和未登錄詞的難題。基於此,兩篇論文各自提出了鍵-值記憶神經網絡的中文分詞模型和基於雙通道注意力機制的分詞及詞性標註模型,將外部知識(信息)融入分詞及詞性標註模型,剔除了分詞「噪音」誤導,提升了分詞及詞性標註效果。
  • 創新工場兩篇論文入選ACL 2020,將中文分詞數據刷至新高
    ,尤其在工業場景對分詞有非常直接的訴求,但當前沒有比較好的一體化解決方案,而且中文分詞普遍存在歧義和未登錄詞的難題。基於此,兩篇論文各自提出了「鍵-值記憶神經網絡的中文分詞模型」和「基於雙通道注意力機制的分詞及詞性標註模型」,將外部知識(信息)創造性融入分詞及詞性標註模型,有效剔除了分詞「噪音」誤導,大幅度提升了分詞及詞性標註效果。
  • 海量新聞信息處理中的中文分詞算法研究
    然而這些算法能用於中文文本挖掘的先決條件就是有一個良好中文的分詞模塊,所以中文分詞作為風險評估,網絡輿情的基礎工具,角色十分重要。 眾所周知,中文與英文書寫方面的最大不同在於,英文以詞為單位,而且每個詞之間有空格隔開,所以英文分詞非常簡單。但是中文是以字為單位,詞與詞之間無空格,所以中文分詞要有自己獨立的一套方法。
  • 創新工場兩篇論文入選ACL2020 中文分詞和詞性標註新模型性能創新高
    這兩篇論文各自提出了「鍵-值記憶神經網絡的中文分詞模型」和「基於雙通道注意力機制的分詞及詞性標註模型」,將外部知識(信息)創造性融入分詞及詞性標註模型,有效剔除了分詞「噪音」誤導,大幅度提升了分詞及詞性標註效果,將該領域近年來廣泛使用的數據集上的分數全部刷至新高。今天,創新工場大灣區人工智慧研究院執行院長宋彥向媒體分享了這兩篇入選論文的研究內容。
  • 創新工場提出中文分詞和詞性標註模型,性能分別刷新五大數據集
    基於此,創新工場近日公布的兩篇論文各自提出了「鍵-值記憶神經網絡的中文分詞模型」和「基於雙通道注意力機制的分詞及詞性標註模型」,將外部知識(信息)創造性融入分詞及詞性標註模型,有效剔除了分詞「噪音」誤導,大幅度提升了分詞及詞性標註效果。
  • 創新工場兩篇論文入選頂會ACL2020,將中文分詞性能刷出新高度
    宋彥在分享中表示,分詞及詞性標註是中文自然語言處理的兩個基本任務,是任何其它後續處理工作的一個最重要的基礎。近年來,大家在中文分詞領域會有一些不同的見解。尤其是隨著預訓練模型的提出,有一些人提出質疑是否還有必要進行中文分詞的處理,對此宋彥提出了不同的意見,尤其考慮到詞彙級別的信息依然是中文信息處理最重要的基礎。
  • 每天調用達80億次的小米MiNLP平臺,近期又開源了中文分詞功能
    機器之心報導作者:陳萍近日,小米開源了其自然語言處理平臺 MiNLP 的中文分詞功能,具備分詞效果好、輕量級、詞典可定製、多粒度切分以及調用更便捷等特點。在自然語言處理任務中,除了模型之外,底層的數據處理也是非常重要的。
  • 創新工場提出中文分詞和詞性標註新模型 可提升工業應用效率
    DoNews7月13日消息(記者 翟繼茹)13日,記者從創新工場獲悉,其最新提出了中文分詞和詞性標註模型,可將外部知識(信息)融入分詞及詞性標註模型,剔除了分詞「噪音」誤導,提升了分詞及詞性標註效果。
  • 一篇文章教你用隱馬爾科夫模型實現中文分詞
    我們從如何進行中文分詞的角度來理解HMM根據可觀察狀態的序列找到一個最可能的隱藏狀態序列中文分詞,就是給一個漢語句子作為輸入,以「BEMS」組成的序列串作為輸出,然後再進行切詞,進而得到輸入句子的劃分。其中,B代表該字是詞語中的起始字,M代表是詞語中的中間字,E代表是詞語中的結束字,S則代表是單字成詞。
  • 聯合漢語分詞和依存句法分析的統一模型:當前效果最佳
    要分析一個中文句子,基本過程過程大致是:分詞、詞性標註和依存句法分析。但是,這種 pipeline 方式總是存在以下局限:誤差傳播。在這種方式中,一旦某些詞語被錯誤地分割,隨後的詞性標註和分析也會出錯。因此,pipeline 模型只能達到約 75%~80%的 dependency 分數 [1]。知識共享。
  • 「八鬥之才」HMM模型在地址分詞中的應用
    這裡的{B,M,E,S}的集合就對應於我們前面講過的天氣狀況集合{晴天,雨天},既我們中文分詞的隱含狀態集合。可見狀態集合就是所有漢字(東南西北你我他…),甚至包括標點符號所組成的集合,對應於我們前面的{火鍋,烤串,水餃}集合。
  • 現在分詞和過去分詞的用法
    :現在分詞表示「主動和進行」,過去分詞表示「被動和完成」(不及物動詞的過去分詞不表示被動,只表示完成)。分詞可以有自己的狀語、賓語或邏輯主語等。  1)分詞作狀語分詞在句子中作狀語,可以表示時間、條件、原因、結果、讓步、伴隨等。分詞做狀語時,它的邏輯主語與句子的主語一致。作狀語的分詞相當於一個狀語從句。  【例如】  Hearing the news, they all jumped with joy.
  • 從分詞、詞性到機器翻譯、對話系統
    通過深度學習和其他機器學習技術的模型組合,竹間智能也已初步實現了自然語言對話中的意圖識別、上下文理解和多輪對話。本文將基於竹間智能的一些經驗和探索,從分詞、詞性等基礎模塊,到機器翻譯、知識問答等領域,列舉並分析一些深度學習在 NLP 領域的具體運用,希望對大家研究深度學習和 NLP 有所幫助。
  • 0730 知識點分享:現在分詞和過去分詞的用法
    現在分詞和過去分詞主要差別在於:現在分詞表示「主動和進行」,過去分詞表示「被動和完成」(不及物動詞的過去分詞不表示被動,只表示完成)。分詞可以有自己的狀語、賓語或邏輯主語等。1)分詞作狀語分詞在句子中作狀語,可以表示時間、條件、原因、結果、讓步、伴隨等。分詞做狀語時,它的邏輯主語與句子的主語一致。作狀語的分詞相當於一個狀語從句。
  • 現在分詞和過去分詞作狀語的用法
    現在分詞(doing)和過去分詞(done)都有副詞性質,可以在句中充當狀語,表示時間、條件、原因、讓步、結果、方式或伴隨狀況等。一、分詞充當狀語時,分詞的邏輯主語一般要和句子主語保持一致。分詞充當狀語可視為狀語從句的簡化版,前提是狀語從句主語和主句主語一致。
  • Hanlp分詞之CRF中文詞法分析詳解
    中文分詞訓練CRFSegmenter segmenter = new CRFSegmenter(null);segmenter.train("data/test/pku98/199801.txt詞性標註CRF詞性標註器的訓練與加載與中文分詞類似,對應CRFPOSTagger。命名實體識別CRF命名實體識別也是類似的用法,對應CRFNERecognizer。
  • 高考英語核心突破(分詞)
    考點解讀1、分詞知識點綜述2、分詞重難點講解重難點1:分詞作定語(1)分詞短語作定語時,放在被修飾的名詞之後;單個分詞作定語時,放在背被修飾的名詞之前。例如:例:The man standing at the window is our teacher.