謝海華,陳志優(yōu),程 靜,呂肖慶,2,湯 幟,2
(1. 北大方正信息產(chǎn)業(yè)集團(tuán)有限公司 數(shù)字出版技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100871;2. 北京大學(xué) 王選計(jì)算機(jī)研究所,北京 100871; 3. 北京雁棲湖應(yīng)用數(shù)學(xué)研究院,北京 101408)
中文語(yǔ)法錯(cuò)誤檢測(cè)(Chinese Grammatical Error Diagnosis,CGED)的目標(biāo)是自動(dòng)檢測(cè)出中文自然語(yǔ)句中的語(yǔ)法錯(cuò)誤,如成分缺失或多余,語(yǔ)序不當(dāng)?shù)取GED的檢測(cè)任務(wù)一般包含: 是否存在錯(cuò)誤、錯(cuò)誤類型及錯(cuò)誤發(fā)生位置。雖然CGED不能給出糾正錯(cuò)誤的建議,但對(duì)于輔助寫作和文檔審校等場(chǎng)景依然十分有意義。在輔助寫作中,CGED給出語(yǔ)法錯(cuò)誤類型和位置,讓作者有針對(duì)性地修改文章,可以提升寫作的質(zhì)量和效率。另外,在出版行業(yè)的審校環(huán)節(jié),由于正式出版物的格式要求十分嚴(yán)格,CGED可自動(dòng)檢測(cè)出一些基礎(chǔ)的語(yǔ)法錯(cuò)誤,可以為審校人員節(jié)省大量的時(shí)間,而直接糾正語(yǔ)法錯(cuò)誤則可能造成文章的內(nèi)容和邏輯發(fā)生變化。
目前,有關(guān)語(yǔ)法錯(cuò)誤檢測(cè)的研究大多數(shù)是針對(duì)英文的。與英文相比,中文的語(yǔ)法更加復(fù)雜和靈活。中文不存在詞語(yǔ)的單復(fù)數(shù)和時(shí)態(tài)等明確的語(yǔ)法規(guī)則,其語(yǔ)法錯(cuò)誤經(jīng)常涉及隱晦的語(yǔ)義解析,不能基于字詞形態(tài)來判斷。[1]因此,現(xiàn)有的英文語(yǔ)法錯(cuò)誤檢測(cè)方法不能很好地適用于CGED。另外,目前研究者傾向于運(yùn)用生成式的方法直接進(jìn)行語(yǔ)法改錯(cuò),跳過了語(yǔ)法錯(cuò)誤檢測(cè)的步驟[2-4],只有少量的研究采用序列標(biāo)注方法進(jìn)行中文語(yǔ)法錯(cuò)誤檢測(cè)。然而,由于缺乏大規(guī)模高質(zhì)量的標(biāo)注語(yǔ)料作為訓(xùn)練集,CGED的準(zhǔn)確率往往不高,達(dá)不到實(shí)用水平。如何在訓(xùn)練數(shù)據(jù)有限的情況下提高語(yǔ)法錯(cuò)誤檢測(cè)的效果是該類研究的一個(gè)難點(diǎn)。
針對(duì)上述問題,本文提出一種基于數(shù)據(jù)增強(qiáng)和語(yǔ)言學(xué)特征多任務(wù)訓(xùn)練方法來提升中文語(yǔ)法錯(cuò)誤檢測(cè)的效果。針對(duì)訓(xùn)練語(yǔ)料不充足的問題,本研究使用大量無(wú)標(biāo)簽的正確中文語(yǔ)料,通過詞性規(guī)則、句法規(guī)則以及語(yǔ)言模型概率統(tǒng)計(jì)等方法來生成接近真實(shí)語(yǔ)法錯(cuò)誤用例的樣本,以擴(kuò)充訓(xùn)練語(yǔ)料。此外,本研究采用預(yù)訓(xùn)練語(yǔ)言模型對(duì)字詞進(jìn)行表征,以利用大規(guī)模語(yǔ)料蘊(yùn)含的語(yǔ)義信息,并將詞法學(xué)習(xí)、句法學(xué)習(xí)、語(yǔ)法錯(cuò)誤檢測(cè)等任務(wù)結(jié)合起來進(jìn)行多任務(wù)學(xué)習(xí),進(jìn)一步獲取中文語(yǔ)義和語(yǔ)法信息。本文提出的方法在NLPTEA CGED評(píng)測(cè)任務(wù)數(shù)據(jù)集上進(jìn)行測(cè)試,準(zhǔn)確率和召回率分別為85.16%和72.53%(F1值為0.783),性能優(yōu)于其他對(duì)比檢測(cè)模型。
中文語(yǔ)法錯(cuò)誤自動(dòng)檢測(cè)模型采取的方法從最初的統(tǒng)計(jì)學(xué)習(xí)方法[5]和基于規(guī)則的分析[6],到現(xiàn)在主流的深度學(xué)習(xí)算法[1,7],以及多種模型混合的方法[8]。大多數(shù)研究采用序列標(biāo)注模型來進(jìn)行語(yǔ)法錯(cuò)誤檢測(cè),并使用LSTM和CRF來實(shí)現(xiàn)[1,7,9]。使用LSTM模型進(jìn)行語(yǔ)法錯(cuò)誤檢測(cè)時(shí),特征的選擇十分重要,除了通常使用的字向量特征、詞向量特征、詞性POS特征,很多研究提出了許多新的特征[1,8-9]。例如,高斯互信息(ePMI)、向量詞的共現(xiàn)(AWC)、依賴關(guān)系詞語(yǔ)的共現(xiàn)(DWC)、基于語(yǔ)境的詞表達(dá)等。也有一些研究針對(duì)LSTM模型結(jié)構(gòu)進(jìn)行改進(jìn),比如在LSTM模型中加入策略梯度[10]。這些研究的重點(diǎn)在于學(xué)習(xí)中文語(yǔ)法規(guī)律,基于無(wú)標(biāo)注語(yǔ)料統(tǒng)計(jì)詞語(yǔ)規(guī)律和詞語(yǔ)用法,并提出相應(yīng)的特征來提高檢測(cè)效果。然而,統(tǒng)計(jì)特征不能捕獲深層的語(yǔ)法和語(yǔ)義信息,因此無(wú)法發(fā)現(xiàn)一些隱晦的語(yǔ)法錯(cuò)誤。
針對(duì)訓(xùn)練語(yǔ)料不足的問題,一些研究者使用未標(biāo)注的中文語(yǔ)料來構(gòu)造錯(cuò)誤用例。例如,通過隨機(jī)增加、刪除、替換字詞和打亂字詞順序來生成錯(cuò)誤樣本[11];統(tǒng)計(jì)已有訓(xùn)練語(yǔ)料中語(yǔ)法錯(cuò)誤分布,并構(gòu)造相應(yīng)的錯(cuò)誤樣本[12]。前者采用隨機(jī)方式構(gòu)造的語(yǔ)法錯(cuò)誤樣本,往往顯得不夠真實(shí),其語(yǔ)法錯(cuò)誤分布與正常寫作者所犯錯(cuò)誤的分布相差較大。而后者構(gòu)造的錯(cuò)誤數(shù)據(jù)過于擬合已有的訓(xùn)練樣本,不利于模型的泛化。
近年來,一些學(xué)者利用基于大規(guī)模語(yǔ)料預(yù)訓(xùn)練的語(yǔ)言模型來獲取文本的語(yǔ)言學(xué)特征,以彌補(bǔ)訓(xùn)練語(yǔ)料的不足?;陬A(yù)訓(xùn)練語(yǔ)言模型的語(yǔ)法錯(cuò)誤檢測(cè)模型,其效果優(yōu)于通過融合多種特征構(gòu)建的模型[13-14]。不過這些方法都以英文為研究對(duì)象,它們尚未在中文數(shù)據(jù)集上進(jìn)行試驗(yàn)或者測(cè)試性能。
大多數(shù)情況下,語(yǔ)法錯(cuò)誤檢測(cè)的目的是對(duì)語(yǔ)法錯(cuò)誤進(jìn)行糾正。在檢測(cè)出語(yǔ)法錯(cuò)誤的類型和發(fā)生位置之后,可以根據(jù)錯(cuò)誤類型,采用相應(yīng)的方法來修改語(yǔ)法錯(cuò)誤。例如,錯(cuò)誤提示為“成分冗余”,則直接刪除該成分;錯(cuò)誤提示為“用詞不當(dāng)”,則基于詞語(yǔ)統(tǒng)計(jì)信息(如PMI)推薦候選詞語(yǔ)以替換錯(cuò)誤詞語(yǔ)[1,12]。不過目前中文語(yǔ)法錯(cuò)誤糾正的研究大多采用端到端的生成式方法,使用統(tǒng)計(jì)翻譯模型[2]、深度學(xué)習(xí)模型[3]、融合規(guī)則和統(tǒng)計(jì)的算法[4]等,由錯(cuò)誤句子直接生成正確的句子。但是生成的句子有時(shí)會(huì)改變?cè)牡谋磉_(dá)方式甚至語(yǔ)義和邏輯,在很多情況下不能產(chǎn)生令人滿意的結(jié)果。
這一節(jié)將詳細(xì)介紹本文提出的語(yǔ)法錯(cuò)誤檢測(cè)模型APM-CGED(APM代表data Augnentation,Pre-trained language model and Multi-tasklearning),其系統(tǒng)框架如圖1所示。為了解決訓(xùn)練語(yǔ)料缺乏的問題,本文采用數(shù)據(jù)增強(qiáng)方法來擴(kuò)充訓(xùn)練數(shù)據(jù)集,使用預(yù)訓(xùn)練語(yǔ)言模型BERT[15]作為基礎(chǔ)的文本表征提取工具,并運(yùn)用多任務(wù)訓(xùn)練數(shù)據(jù)來調(diào)整BERT參數(shù)以使它學(xué)習(xí)到更多的語(yǔ)言學(xué)特征。
圖1 APM-CGED系統(tǒng)框架
本文主要貢獻(xiàn)是提出了基于句法分析與預(yù)訓(xùn)練語(yǔ)言模型采樣的數(shù)據(jù)增強(qiáng)方法和基于語(yǔ)言學(xué)特征多任務(wù)學(xué)習(xí)的模型優(yōu)化方法。以下將對(duì)圖1所示流程和上述兩項(xiàng)貢獻(xiàn)進(jìn)行詳細(xì)闡述。
中文語(yǔ)法錯(cuò)誤檢測(cè)研究的主要問題之一是訓(xùn)練語(yǔ)料的缺乏。我們使用大量未經(jīng)標(biāo)注的正確語(yǔ)句構(gòu)造含有語(yǔ)法錯(cuò)誤的訓(xùn)練樣例,以彌補(bǔ)訓(xùn)練數(shù)據(jù)不足的問題。中文維基百科覆蓋面廣且表達(dá)方式豐富,人民日?qǐng)?bào)表達(dá)方式規(guī)整規(guī)范,所以我們以維基百科和人民日?qǐng)?bào)中文數(shù)據(jù)集為基礎(chǔ),抽取其中正確的語(yǔ)句,并對(duì)數(shù)據(jù)進(jìn)行處理后構(gòu)造訓(xùn)練樣本。主要步驟的介紹如下。
2.1.1 數(shù)據(jù)集預(yù)處理
主要的處理手段如下:
(1) 增加數(shù)據(jù)的一致性和減少噪聲,例如,將中文維基百科的繁體中文轉(zhuǎn)化成簡(jiǎn)體中文,把全角字符轉(zhuǎn)化為半角字符。
(2) 運(yùn)用中文處理工具對(duì)文本進(jìn)行分詞、詞性標(biāo)注、命名實(shí)體識(shí)別和依存句法分析。
(3) 選擇質(zhì)量較高的句子,例如,去除過長(zhǎng)(詞數(shù)超過100個(gè))和過短(詞數(shù)小于3個(gè))的句子。
2.1.2 錯(cuò)誤樣例構(gòu)造
本步驟將一些正確的語(yǔ)句改造為含有語(yǔ)法錯(cuò)誤的語(yǔ)句。在語(yǔ)句經(jīng)過分詞、詞性標(biāo)注和依存句法分析之后,我們采用以下措施,構(gòu)建不同類型的語(yǔ)法錯(cuò)誤的訓(xùn)練樣本。
(1) 成分冗余構(gòu)造: 在語(yǔ)句的詞語(yǔ)之間隨機(jī)插入沒有實(shí)際意義的詞語(yǔ)。候選的插入詞語(yǔ)選自停用詞表。
(2) 成分缺失構(gòu)造: 從主謂結(jié)構(gòu)片段中刪除主語(yǔ)或者謂語(yǔ),從動(dòng)賓結(jié)構(gòu)片段中刪除謂語(yǔ)或者賓語(yǔ),從狀中結(jié)構(gòu)或者定中結(jié)構(gòu)片段中刪除被修飾成分。
(3) 語(yǔ)序不當(dāng)構(gòu)造: 修改動(dòng)賓結(jié)構(gòu)、狀中結(jié)構(gòu)、定中結(jié)構(gòu)等結(jié)構(gòu)片段中成分的順序。
(4) 用詞不當(dāng)構(gòu)造: 隨機(jī)選取一個(gè)詞語(yǔ)并將其遮蓋(用MASK將其替換),然后用BERT的Masked LM預(yù)測(cè)出的候選字替換原來的字符。
2.1.3 錯(cuò)誤樣例構(gòu)造規(guī)則
為了保證改造后的句子在含有語(yǔ)法錯(cuò)誤的同時(shí),保持語(yǔ)句的基本語(yǔ)義和結(jié)構(gòu),以免發(fā)生意思改變,我們?cè)O(shè)計(jì)了以下規(guī)則。
(1) 不對(duì)命名實(shí)體進(jìn)行修改。命名實(shí)體在句子中往往是主體成分,修改命名實(shí)體會(huì)改變句子的意思。例如,句子“協(xié)和醫(yī)院是中國(guó)最好的醫(yī)院之一,專治各種疑難雜癥”,如果對(duì)“協(xié)和醫(yī)院”進(jìn)行修改,語(yǔ)句的意思就會(huì)發(fā)生變化。
(2) 對(duì)于短句子,我們構(gòu)造的樣例中只含有一個(gè)錯(cuò)誤。對(duì)于15個(gè)詞語(yǔ)以上的句子,我們會(huì)隨機(jī)增加錯(cuò)誤。
(3) 在成分缺失和語(yǔ)序不當(dāng)構(gòu)造時(shí),避免修改依賴距離很遠(yuǎn)的結(jié)構(gòu)成分,防止破壞語(yǔ)句結(jié)構(gòu)。
(4) 關(guān)于用詞不當(dāng)構(gòu)造,除了構(gòu)造“的、地、得”之間的誤用情況,不對(duì)虛詞、語(yǔ)氣詞之類無(wú)意義的詞語(yǔ)進(jìn)行修改以構(gòu)造該類錯(cuò)誤。實(shí)際樣例中,虛詞的使用錯(cuò)誤主要是成分缺失和冗余。
以下是兩個(gè)構(gòu)造的錯(cuò)誤樣例示例。
樣例一: 語(yǔ)序不當(dāng)構(gòu)造
原句:加速推廣菌草技術(shù),將其列入國(guó)家開發(fā)計(jì)劃。
構(gòu)造句:推廣加速菌草技術(shù),將其列入國(guó)家開發(fā)計(jì)劃。
樣例二: 用詞不當(dāng)構(gòu)造
原句: 我跟朋友們經(jīng)常用手機(jī)打電話聊天。
構(gòu)造句: 我跟朋友們經(jīng)常用手機(jī)找電話聊天。
在以往的CGED研究中,研究者使用的主流模型是BiLSTM-CRF結(jié)構(gòu)。由于中文語(yǔ)法錯(cuò)誤的復(fù)雜性和多樣性,語(yǔ)法的正確使用與語(yǔ)言學(xué)特征高度相關(guān),因此使用少量的訓(xùn)練數(shù)據(jù)很難訓(xùn)練出一個(gè)魯棒性好的CGED模型,人們會(huì)在模型中加入詞性、N-gram、PMI等語(yǔ)言學(xué)特征。但是,大量特征的使用使得模型結(jié)構(gòu)煩瑣,而且提取這些特征信息也大大降低了模型的運(yùn)行速度。
本文采用基于BERT的預(yù)訓(xùn)練語(yǔ)言模型作為基礎(chǔ)來構(gòu)建CGED模型,利用它們?cè)陬A(yù)訓(xùn)練階段學(xué)習(xí)到的深層語(yǔ)義信息。然后,我們采取多任務(wù)學(xué)習(xí)方式對(duì)BERT的參數(shù)進(jìn)行調(diào)整,使模型學(xué)習(xí)到各種語(yǔ)言學(xué)知識(shí),并在預(yù)測(cè)階段不必進(jìn)行語(yǔ)言學(xué)特征提取,以提高模型的性能和效率。
多任務(wù)學(xué)習(xí)是指為模型設(shè)置多個(gè)訓(xùn)練目標(biāo),這些任務(wù)之間具有一定關(guān)聯(lián),并在訓(xùn)練階段可以互相促進(jìn)以達(dá)到更好的訓(xùn)練效果。多任務(wù)學(xué)習(xí)通過在模型上設(shè)置一些共享參數(shù)來實(shí)現(xiàn)。本文提出的方法使用BERT作為模型的共享部分,并使用不同結(jié)構(gòu)來實(shí)現(xiàn)詞性標(biāo)注、依存句法分析和語(yǔ)法錯(cuò)誤檢測(cè)三個(gè)具體任務(wù)。基于語(yǔ)言學(xué)特征的多任務(wù)學(xué)習(xí)進(jìn)行BERT模型優(yōu)化的結(jié)構(gòu)如圖2所示。
圖2 基于語(yǔ)言學(xué)特征的多任務(wù)學(xué)習(xí)模型
在圖2所示的模型的輸出目標(biāo)中,主要包括: 詞性標(biāo)注,依存句法分析和語(yǔ)法錯(cuò)誤檢測(cè)。基于這三項(xiàng)任務(wù)的訓(xùn)練,可以對(duì)BERT的參數(shù)進(jìn)行優(yōu)化,以使BERT能學(xué)到更多的語(yǔ)言學(xué)知識(shí)。我們認(rèn)為,這三個(gè)任務(wù)之間有互相促進(jìn)的作用,詞性和句法分析的結(jié)果能輔助判斷語(yǔ)句是否有語(yǔ)法錯(cuò)誤。例如圖2中的例句“愛我北京天安門”是一個(gè)語(yǔ)法錯(cuò)誤句,它的詞性標(biāo)注結(jié)果是: 動(dòng)詞-代詞-名詞,這個(gè)詞性序列在中文語(yǔ)句中不常見,因此該句很可能含有語(yǔ)法錯(cuò)誤。同樣地,判斷出語(yǔ)句含有語(yǔ)法錯(cuò)誤,也有益于更準(zhǔn)確地分析語(yǔ)句的詞性和句法。這三個(gè)任務(wù)的詳細(xì)描述如下。
2.2.1 詞性標(biāo)注
我們采用序列標(biāo)注方法來實(shí)現(xiàn)詞性標(biāo)注任務(wù),在BERT之后增加一個(gè)全連接層直接輸出詞性結(jié)果。由于BERT采用字符嵌入方式,對(duì)于多字符詞語(yǔ),我們采用“BI”的標(biāo)注方式(‘B’表示詞語(yǔ)開始位置,‘I’表示詞語(yǔ)中間或結(jié)束位置)進(jìn)行詞性標(biāo)注。在準(zhǔn)備訓(xùn)練數(shù)據(jù)時(shí),詞性標(biāo)注的標(biāo)簽可以由中文處理工具(例如pyltp[16])直接生成,標(biāo)注示例如表1所示。
表1 詞性標(biāo)注示例
2.2.2 依存句法分析
依存句法分析的目的是確定語(yǔ)句的句法結(jié)構(gòu),通常以句法樹的形式,用有向弧表示詞語(yǔ)之間的修飾及指向關(guān)系(即依存關(guān)系)。在本文中,我們將句法結(jié)構(gòu)(或詞語(yǔ)之間的依存關(guān)系)用矩陣形式來表示。對(duì)于一個(gè)含有n個(gè)字的句子,用一個(gè)n×n的矩陣表達(dá)詞語(yǔ)之間的依存關(guān)系。為了避免關(guān)系矩陣(記為M)過于稀疏,我們將依存關(guān)系進(jìn)行簡(jiǎn)化,取消修飾詞和被修飾詞之間的指向關(guān)系,所以M是一個(gè)對(duì)稱矩陣。假設(shè)語(yǔ)句的第i個(gè)詞(含有一個(gè)字符,在句子中的序號(hào)設(shè)為wi)與第j個(gè)詞(含有三個(gè)字符,在句子中的序號(hào)分別為wj1,wj2,wj3)之間的關(guān)系為動(dòng)賓關(guān)系(VOB),則有Mwiwj1=Mwiwj2=Mwiwj3=VOB,而且Mwj1wi=Mwj2wi=Mwj3wi=VOB。我們將語(yǔ)句的主干詞對(duì)應(yīng)的對(duì)角線位置的值設(shè)置為Head,而對(duì)角線上其他位置的值設(shè)為0。以矩陣表示的句法結(jié)構(gòu)示例如圖3所示。
圖3 依存句法結(jié)構(gòu)矩陣示例
在準(zhǔn)備訓(xùn)練數(shù)據(jù)時(shí),語(yǔ)句的句法結(jié)構(gòu)矩陣可以由中文處理工具生成的句法樹修改而成。在參數(shù)優(yōu)化階段,假設(shè)輸入語(yǔ)句為S,其文本序列長(zhǎng)度為t,經(jīng)過BERT之后的語(yǔ)義表征為SBERT,它的維度為t×768。然后采用式(1)產(chǎn)生兩個(gè)中間變量H1和H2。
f表示對(duì)矩陣進(jìn)行形變操作的函數(shù),Wi和bi是隨機(jī)初始化并在訓(xùn)練中更新的參數(shù)。產(chǎn)生的H1和H2的維度都是64 ×t×12。然后基于式(2)產(chǎn)生句法結(jié)構(gòu)分析結(jié)果。
M的維度64 ×t×t,對(duì)應(yīng)t×t矩陣的每個(gè)元素的數(shù)值(維度是1 ×64),即句法結(jié)構(gòu)矩陣的結(jié)果。
2.2.3 語(yǔ)法錯(cuò)誤檢測(cè)
我們采用多標(biāo)簽分類的方法完成語(yǔ)法錯(cuò)誤檢測(cè)任務(wù),在BERT之后增加一個(gè)全連接層直接輸出分類結(jié)果。分類的結(jié)果是句子含有的語(yǔ)法錯(cuò)誤的類型。如果語(yǔ)句不含語(yǔ)法錯(cuò)誤則輸出“沒有錯(cuò)誤”,如果它含有多個(gè)語(yǔ)法錯(cuò)誤則輸出多個(gè)語(yǔ)法錯(cuò)誤標(biāo)簽。語(yǔ)法錯(cuò)誤檢測(cè)的訓(xùn)練數(shù)據(jù)是由前文所述方法構(gòu)造出來的或者是在實(shí)際寫作中產(chǎn)生的。
上述三個(gè)任務(wù)模型的損失函數(shù)都用交叉熵來計(jì)算。多任務(wù)學(xué)習(xí)模型的損失函數(shù)是這三個(gè)模型的損失函數(shù)之和,模型訓(xùn)練的目標(biāo)是最小化該損失函數(shù)。
圖4 中文語(yǔ)法錯(cuò)誤檢測(cè)模型
我們把CGED視為序列標(biāo)注問題,并選用BERT-CRF結(jié)構(gòu)作為模型的基本架構(gòu),其中BERT的參數(shù)經(jīng)過2.2節(jié)所述方法進(jìn)行調(diào)整,見圖4。由于我們處理的對(duì)象是中文數(shù)據(jù),我們使用中文BERT模型,它是基于大量中文維基百科語(yǔ)料預(yù)訓(xùn)練而成。在BERT之后使用CRF模型[17],一種經(jīng)典的序列標(biāo)注方法,直接生成語(yǔ)法錯(cuò)誤檢測(cè)的結(jié)果。語(yǔ)法錯(cuò)誤標(biāo)簽使用“BIO”方式編碼,“B”代表錯(cuò)誤的開始位置,“I”表示中間或者結(jié)束位置,“O”表示當(dāng)前字符沒有語(yǔ)法問題。例如對(duì)于錯(cuò)誤X,“B-X”代表“X”錯(cuò)誤的第一個(gè)位置,“I-X”表示其他位置。
在訓(xùn)練階段,訓(xùn)練數(shù)據(jù)集的部分?jǐn)?shù)據(jù)來自人們?cè)趯?shí)際寫作中出現(xiàn)的語(yǔ)法錯(cuò)誤,而另一部分則來自前文所述方法構(gòu)造出的數(shù)據(jù)。訓(xùn)練模型和預(yù)測(cè)模型的結(jié)構(gòu)是一樣的,輸出的結(jié)果包含是否存在錯(cuò)誤、錯(cuò)誤類型以及錯(cuò)誤發(fā)生的位置。
我們采用NLPTEA中文語(yǔ)法錯(cuò)誤檢測(cè)評(píng)測(cè)數(shù)據(jù)集[18]試驗(yàn)了我們的方法。NLPTEA提供一份標(biāo)注過的語(yǔ)法錯(cuò)誤數(shù)據(jù)集,語(yǔ)料來源是漢語(yǔ)非母語(yǔ)的漢語(yǔ)學(xué)習(xí)者在中文寫作中產(chǎn)生的錯(cuò)誤樣例。該數(shù)據(jù)集將語(yǔ)法錯(cuò)誤分為四種類型: redundant errors(記為‘R’,即成分冗余),missing words(記為‘M’,即成分缺失), word selection errors(記為‘S’,即用詞不當(dāng))和word ordering errors(記為‘W’,即詞序不當(dāng))。數(shù)據(jù)集里的語(yǔ)句可能沒有語(yǔ)法錯(cuò)誤,也可能含有一個(gè)或多個(gè)語(yǔ)法錯(cuò)誤。語(yǔ)法錯(cuò)誤檢測(cè)系統(tǒng)需要從以下三個(gè)方面對(duì)語(yǔ)句進(jìn)行檢測(cè):
(1) Detection-level: 檢測(cè)語(yǔ)句是否含有語(yǔ)法錯(cuò)誤。
(2) Identification-level: 語(yǔ)句含有的語(yǔ)法錯(cuò)誤的類型。
(3) Position-level: 語(yǔ)句含有的語(yǔ)法錯(cuò)誤的位置。
我們使用pyltp中文處理工具對(duì)語(yǔ)句進(jìn)行分詞、詞性標(biāo)注和依存句法分析,同時(shí)采用pyltp的標(biāo)注體系。在多任務(wù)學(xué)習(xí)優(yōu)化BERT時(shí),我們使用了一些公開數(shù)據(jù)集來提升分詞的準(zhǔn)確性,以提高詞性標(biāo)注和依存句法分析的準(zhǔn)確度。
我們收集了NLPTEA 2016,IJCNLP 2017和NLPTEA 2018的CGED任務(wù)的評(píng)測(cè)數(shù)據(jù)集,有語(yǔ)句數(shù)量為20 451,按照句號(hào)、問號(hào)和感嘆號(hào)拆分之后的語(yǔ)句數(shù)量為104 141。選擇其中80%的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),其余數(shù)據(jù)為校驗(yàn)數(shù)據(jù)。同時(shí),我們收集和整理了中文維基百科數(shù)據(jù)集和人民日?qǐng)?bào)數(shù)據(jù)集,使用2.1節(jié)介紹的數(shù)據(jù)構(gòu)造方法生成訓(xùn)練數(shù)據(jù)(語(yǔ)句總數(shù)為138 825)并加入到訓(xùn)練集。為了維持正確語(yǔ)句和錯(cuò)誤語(yǔ)句的比例,我們?cè)跀?shù)據(jù)集中加入了同等數(shù)量的不含語(yǔ)法錯(cuò)誤的語(yǔ)句。
我們按照2.2節(jié)介紹的方法,運(yùn)用訓(xùn)練數(shù)據(jù)對(duì)BERT的參數(shù)進(jìn)行調(diào)整。然后使用訓(xùn)練數(shù)據(jù)對(duì)語(yǔ)法錯(cuò)誤檢測(cè)的BERT+CRF模型進(jìn)行訓(xùn)練,使用校驗(yàn)數(shù)據(jù)進(jìn)行測(cè)試。我們同時(shí)使用不同的模型進(jìn)行了對(duì)比實(shí)驗(yàn),表2顯示了對(duì)比實(shí)驗(yàn)的結(jié)果。其中,B0表示未經(jīng)過優(yōu)化的BERT模型,MTL表示多任務(wù)學(xué)習(xí)方法,DA表示數(shù)據(jù)增強(qiáng),B0+MTL+DA則表示文本采用的方法。不同的模型分別在NLPTEA 2018 CGED任務(wù)的HSK測(cè)試集(NLPTEA-18-HSK)、NLPTEA 2016 CGED任務(wù)的HSK測(cè)試集(NLPTEA-16-HSK)和TOCFL(NLPTEA-16-TOCFL)測(cè)試集上進(jìn)行了實(shí)驗(yàn)。
對(duì)比實(shí)驗(yàn)結(jié)果表明,使用語(yǔ)言學(xué)特征對(duì)BERT進(jìn)行優(yōu)化之后,語(yǔ)法錯(cuò)誤檢測(cè)的效果在各方面都有明顯的提升,特別是檢測(cè)的召回率得到很大提高。但是隨著召回率的上升,檢測(cè)精確率有一定程度的下降,不過數(shù)據(jù)增強(qiáng)的使用很好地彌補(bǔ)了這個(gè)問題,使得模型能夠同時(shí)提高檢測(cè)的召回率和精確率,并使F1指標(biāo)提升。
表2 中文語(yǔ)法錯(cuò)誤檢測(cè)模型的對(duì)比實(shí)驗(yàn)結(jié)果
我們與NLPTEA 2018 CGED評(píng)測(cè)結(jié)果進(jìn)行了橫向?qū)Ρ?。我們沒有采用模型融合以進(jìn)一步提高檢測(cè)效果,只用單一模型來與NLPTEA 2018評(píng)測(cè)效果較好的模型進(jìn)行對(duì)比,結(jié)果見表3。HFL、CMMC-BDRC和NCYU是NLPTEA 2018評(píng)測(cè)結(jié)果里面準(zhǔn)確率、召回率或者F1值較高的模型。在Detection Level和Identification Level這兩個(gè)測(cè)試指標(biāo)上,我們的單模型都取得了最優(yōu)的F1值。但是在Position Level指標(biāo)上,我們方法的效果不如HFL。經(jīng)過分析,我們認(rèn)為這可能是因?yàn)闃?gòu)造的錯(cuò)誤案例與實(shí)際測(cè)試的錯(cuò)誤案例錯(cuò)誤分布不一致而造成的。
表3 BERT+MTL+DA與NLPTEA 2018 CGED評(píng)測(cè)模型的對(duì)比
續(xù)表
本文針對(duì)中文語(yǔ)法錯(cuò)誤檢測(cè)研究存在的主要問題之一是訓(xùn)練語(yǔ)料的缺乏,采用數(shù)據(jù)增強(qiáng)、預(yù)訓(xùn)練語(yǔ)言模型和語(yǔ)言學(xué)特征多任務(wù)學(xué)習(xí)的方式,有效地提高了語(yǔ)法錯(cuò)誤檢測(cè)的效果。使用語(yǔ)言學(xué)特征對(duì)語(yǔ)言模型進(jìn)行優(yōu)化能夠使它學(xué)習(xí)到顯式的語(yǔ)言學(xué)特征以及隱藏的語(yǔ)義信息,而語(yǔ)言學(xué)特征和語(yǔ)法使用是十分相關(guān)的,所以它對(duì)語(yǔ)法錯(cuò)誤檢測(cè)效果有明顯的改善作用。
由于中文語(yǔ)法的復(fù)雜性,我們目前的工作依然存在很多不足,錯(cuò)誤類型和位置的檢測(cè)效果不好。在下一步的工作中,我們將進(jìn)一步提高數(shù)據(jù)構(gòu)造的合理性,使構(gòu)造的錯(cuò)誤樣本更符合人們實(shí)際所犯的語(yǔ)法錯(cuò)誤。另外,我們會(huì)對(duì)語(yǔ)言學(xué)特征的多任務(wù)學(xué)習(xí)的結(jié)構(gòu)進(jìn)行改善,以進(jìn)一步提高CGED任務(wù)的檢測(cè)效果。