• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Transformer網(wǎng)絡(luò)的中文單字詞檢錯(cuò)方法研究

      2021-03-18 07:18:10曹存根
      中文信息學(xué)報(bào) 2021年1期
      關(guān)鍵詞:單字錯(cuò)別字語(yǔ)料

      曹 陽(yáng),曹存根,王 石

      (1. 中國(guó)科學(xué)院 計(jì)算技術(shù)研究所 智能信息處理重點(diǎn)實(shí)驗(yàn)室,北京100190;2. 中國(guó)科學(xué)院大學(xué),北京 10049)

      0 引言

      在日常使用計(jì)算機(jī)或手機(jī)等終端設(shè)備輸入漢字時(shí),人們?cè)谳斎霑r(shí)的心理狀態(tài)、輸入習(xí)慣、誤觸按鍵或者文化水平等因素時(shí)常會(huì)造成文本中出現(xiàn)錯(cuò)別字。例如,在語(yǔ)句“黃金首飾帶久了會(huì)發(fā)白”以及語(yǔ)句“我再這里等你好長(zhǎng)時(shí)間了”中,“帶”和“再”都是比較容易用錯(cuò)的單字詞(稱(chēng)為中文單字詞錯(cuò)誤)。在此背景下,研究文本錯(cuò)誤自動(dòng)識(shí)別對(duì)于規(guī)范中文漢字的使用和提升用戶(hù)感知體驗(yàn)具有重要意義。

      針對(duì)多字詞錯(cuò)別字情形,張仰森等[1]將多字詞錯(cuò)別字分類(lèi)為“非多字詞錯(cuò)誤”和“真多字詞錯(cuò)誤”。前者“非多字詞錯(cuò)誤”指由兩個(gè)或兩個(gè)以上的漢字構(gòu)成的詞中至少出現(xiàn)一個(gè)別字替換錯(cuò)誤、缺字錯(cuò)誤或者多字錯(cuò)誤;該詞也不是詞典中的詞。例如,“端莊”錯(cuò)寫(xiě)成“端壯”,而“端壯”在詞典中無(wú)法找到。“真多字詞錯(cuò)誤”指一個(gè)多字詞錯(cuò)成詞典中的另一個(gè)多字詞。根據(jù)錯(cuò)別字產(chǎn)生的替換、缺字以及多字這三種原因,劉亮亮等[2]將非多字詞錯(cuò)誤分類(lèi)為“別字型非多字詞錯(cuò)誤”“缺字型非多字詞錯(cuò)誤”以及“多字型非多字詞錯(cuò)誤”。

      雖然學(xué)術(shù)界對(duì)多字詞檢錯(cuò)方法研究較多,但據(jù)我們所知,對(duì)單字詞檢錯(cuò)方法的研究較少,本文重點(diǎn)研究中文單字詞檢錯(cuò)方法。

      相比于中文多字詞錯(cuò)誤自動(dòng)識(shí)別,中文單字詞錯(cuò)誤識(shí)別尤為困難,其原因主要體現(xiàn)在以下幾個(gè)方面:

      (1)單字詞往往是多義詞這些多義的單字詞可以和不同的詞組合,無(wú)疑增加了單字詞錯(cuò)誤識(shí)別難度。

      (2)單字詞使用頻率高單字詞大都是一些常用高頻詞,例如,“的”“在”“這”等,它們的頻繁使用也給單字詞錯(cuò)誤識(shí)別帶來(lái)困難。

      (3)上下文語(yǔ)境復(fù)雜單字詞的多義性和高頻性使得它在句中的位置具有隨機(jī)性,出現(xiàn)的上下文語(yǔ)境十分復(fù)雜,這又增加了單字詞錯(cuò)誤的識(shí)別難度。

      (4)單字詞錯(cuò)誤訓(xùn)練樣本收集困難通過(guò)對(duì)訓(xùn)練語(yǔ)料進(jìn)行抽樣統(tǒng)計(jì),我們發(fā)現(xiàn),單字詞錯(cuò)誤在抽樣語(yǔ)料中普遍存在,但因?yàn)闆](méi)有明顯的文本特征和上下文特征,所以很難自動(dòng)搜集。本文所使用的方法需要大量單字詞錯(cuò)誤訓(xùn)練樣本作為訓(xùn)練集,由于人工收集耗時(shí)耗力,因此需要一種能夠自動(dòng)產(chǎn)生單字詞錯(cuò)誤訓(xùn)練樣本的方法。

      針對(duì)上述問(wèn)題,本文提出了一種利用漢字混淆集構(gòu)造單字詞錯(cuò)誤訓(xùn)練語(yǔ)料、基于Transformer網(wǎng)絡(luò)的中文單字詞錯(cuò)誤識(shí)別方法。Transformer網(wǎng)絡(luò)方法解決上述四個(gè)問(wèn)題具有以下優(yōu)勢(shì):

      (1) Transformer網(wǎng)絡(luò)在對(duì)字(或詞)進(jìn)行編碼的過(guò)程中能夠考慮字(或詞)的位置信息。

      (2) Transformer網(wǎng)絡(luò)避免了循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)中存在的長(zhǎng)期依賴(lài)的問(wèn)題。

      (3) Transformer網(wǎng)絡(luò)可以通過(guò)Self-attention捕獲到句子中的每個(gè)字(或詞)與句子上下文內(nèi)部之間的關(guān)系。

      (4) Transformer網(wǎng)絡(luò)可以并行計(jì)算,提高訓(xùn)練速度[3]。

      1 相關(guān)研究

      國(guó)外對(duì)文本自動(dòng)校對(duì)研究可以追溯到20世紀(jì)60年代,當(dāng)時(shí)研究文本自動(dòng)校對(duì)的動(dòng)機(jī)是為了解決數(shù)據(jù)錄入過(guò)程中出現(xiàn)的數(shù)據(jù)名稱(chēng)拼寫(xiě)錯(cuò)誤[4]。斯坦福大學(xué)的Ralph Gorin[4]開(kāi)發(fā)出第一款英語(yǔ)拼寫(xiě)檢查程序SPELL。Damerau等[5]發(fā)現(xiàn)句子中的英文拼寫(xiě)錯(cuò)誤出現(xiàn)的原因主要是由于 “真詞”中的字母被替換、缺失、增加或?qū)Q所造成的。關(guān)于英文拼寫(xiě)錯(cuò)誤識(shí)別方法主要分成以下兩類(lèi): n-gram分析方法[6],這類(lèi)方法是統(tǒng)計(jì)連續(xù)n個(gè)元素在語(yǔ)料中出現(xiàn)頻率來(lái)識(shí)別拼寫(xiě)錯(cuò)誤;字典查詢(xún)方法[6],這類(lèi)方法假設(shè)字典中所包含的詞都是正確的,通過(guò)判斷當(dāng)前詞是否在字典中來(lái)識(shí)別英文拼寫(xiě)錯(cuò)誤。

      國(guó)內(nèi)對(duì)中文錯(cuò)別字校對(duì)方法的研究可以分成以下四類(lèi): ①基于規(guī)則的方法。易蓉湘等[7]通過(guò)對(duì)文本中大量錯(cuò)誤現(xiàn)象的觀察總結(jié)出規(guī)則進(jìn)行文本錯(cuò)誤校對(duì)。②基于統(tǒng)計(jì)的方法。 Chang[8]提出根據(jù)漢字中的形似、音似、意似以及按鍵編碼相似來(lái)構(gòu)造混淆集,然后使用混淆集對(duì)句子中的字做相應(yīng)替換操作,并利用語(yǔ)言模型對(duì)替換前后句子打分來(lái)實(shí)現(xiàn)中文自動(dòng)校對(duì)。Xie等[9]采用二元文法和三元文法相結(jié)合進(jìn)行文本錯(cuò)別字識(shí)別,并且利用平滑技術(shù)來(lái)解決數(shù)據(jù)稀疏的問(wèn)題。Han等[10]利用最大熵方法進(jìn)行錯(cuò)別字的識(shí)別。③基于上下文局部語(yǔ)言特征方法。Zhang等[11]提出基于語(yǔ)言特征并利用Window方法進(jìn)行特征學(xué)習(xí)以實(shí)現(xiàn)文本的自動(dòng)校對(duì)。④混合方法。于勐等[12]以模式匹配的方法和三元文法分析的方法為基礎(chǔ),結(jié)合語(yǔ)法屬性標(biāo)注和分析進(jìn)行中文校對(duì)。Ren等[13]提出基于統(tǒng)計(jì)和規(guī)則相結(jié)合的方法進(jìn)行錯(cuò)別字校對(duì)。Liu等[14]提出利用統(tǒng)計(jì)機(jī)器翻譯和語(yǔ)言模型相結(jié)合的框架來(lái)產(chǎn)生錯(cuò)別字更正的候選項(xiàng)集合,同時(shí)利用支持向量機(jī)對(duì)產(chǎn)生的錯(cuò)別字更正候選項(xiàng)進(jìn)行排序來(lái)實(shí)現(xiàn)中文的自動(dòng)校對(duì)。劉亮亮等[2]針對(duì)傳統(tǒng)“非多字詞錯(cuò)誤”自動(dòng)校對(duì)方法的不足,提出利用模糊分詞的“非多字詞錯(cuò)誤”自動(dòng)查錯(cuò)和自動(dòng)校對(duì)方法。

      2 本文的模型和方法

      2.1 基于漢字混淆集的訓(xùn)練語(yǔ)料生成方法

      本文利用施恒利等[15]和Liu等[16]研制的漢字混淆集來(lái)構(gòu)造Transformer網(wǎng)絡(luò)的訓(xùn)練語(yǔ)料。開(kāi)始時(shí),漢字混淆集是根據(jù)漢字之間的音似和形似等特點(diǎn)以手動(dòng)方式構(gòu)建,隨后Liu等[16]使用大量語(yǔ)料進(jìn)行了自動(dòng)擴(kuò)展。

      為了描述單字詞錯(cuò)誤訓(xùn)練語(yǔ)料的生成算法,下面先引入兩個(gè)定義。

      定義1(漢字混淆集)漢字混淆集記為集合Cset={cs1,cs2,…,csi,…,csm},其中混淆集中csi={cpairi1,cpairi2,…,cpairij,…,cpairik}。csi中元素cpairij=(errChari,corrCharij),cpairij中第一個(gè)元素errChari稱(chēng)為疑似錯(cuò)別字,第二個(gè)元素corrCharij為errChari對(duì)應(yīng)的可能正確字。

      例如,csi={(帶,戴),(帶,代),(帶,待),…}就是“帶”的混淆集。它的含義是: 當(dāng)“帶”出現(xiàn)在語(yǔ)句S中,并且有證據(jù)懷疑“帶”是錯(cuò)別字時(shí),“帶”對(duì)應(yīng)的正確字可能是“戴”“代”“待”等。因此,當(dāng)計(jì)算機(jī)發(fā)現(xiàn)“黃金首飾帶久了會(huì)發(fā)白”中的“帶”可能是錯(cuò)別字時(shí),它會(huì)嘗試對(duì)“帶”在混淆集中對(duì)應(yīng)的可能正確字進(jìn)行必要的驗(yàn)證。這不僅提高了錯(cuò)別字識(shí)別精度,而且還提高了計(jì)算的效率。

      定義2(單字詞錯(cuò)誤)S是由n個(gè)單字詞和多字詞組成的句子,假設(shè)句子S中沒(méi)有錯(cuò)別字,記為S=c1…ci…cn,其中,n稱(chēng)為S的長(zhǎng)度,記為|S|,S中第i項(xiàng)ci的長(zhǎng)度記為|ci|。如果|ci|=1,并且ci在漢字混淆集Cset中的疑似錯(cuò)別字記為集合Error={errChar1,…,errCharj,…,errChark},其中,將errCharj替換句子S中的ci形成新的句子S′,記為S′=c1…errCharj…cn。 那么稱(chēng)errCharj是S′中的單字詞錯(cuò)誤。

      例如,S=“黃金 首飾戴久了 為什么 會(huì) 發(fā)白”,單字詞“戴”在漢字混淆集Cset中疑似錯(cuò)別字集合為Error={帶,黛},將“帶”替換S中的“戴”形成新的句子S′=“黃金 首飾帶久了 為什么 會(huì) 發(fā)白”,其中,稱(chēng)“帶”為句子S′的單字詞錯(cuò)誤。

      下文我們將在漢字混淆集的基礎(chǔ)上構(gòu)建Transformer網(wǎng)絡(luò)的單字詞錯(cuò)誤訓(xùn)練語(yǔ)料。

      Transformer網(wǎng)絡(luò)的訓(xùn)練需要大量的含有單字詞錯(cuò)誤的數(shù)據(jù)。在日常生活中,相對(duì)于網(wǎng)絡(luò)上出現(xiàn)的海量數(shù)據(jù),單字詞錯(cuò)誤出現(xiàn)的數(shù)量有限,不足以達(dá)到網(wǎng)絡(luò)訓(xùn)練的目的。如果以人工方式標(biāo)記單字詞錯(cuò)誤將十分耗時(shí)耗力,并且訓(xùn)練語(yǔ)料中單字詞錯(cuò)誤分布是否合理將直接影響到單字詞錯(cuò)誤識(shí)別效果。針對(duì)這個(gè)問(wèn)題,本文設(shè)計(jì)出一種利用原始語(yǔ)料和漢字混淆集來(lái)自動(dòng)構(gòu)建單字詞錯(cuò)誤訓(xùn)練語(yǔ)料的方法。

      在生成單字詞錯(cuò)誤訓(xùn)練語(yǔ)料前,我們從表1中的網(wǎng)址下載了大量的網(wǎng)頁(yè)。每個(gè)網(wǎng)頁(yè)去除標(biāo)簽形成純文本。采用ICTCLAS分詞器(1)http://ictclas.nlpir.org/對(duì)文本進(jìn)行分詞。為了便于后續(xù)處理,將分詞后的文本按照句號(hào)、分號(hào)、逗號(hào)、感嘆號(hào)以及問(wèn)號(hào)分割成一個(gè)一個(gè)的句子。最后形成語(yǔ)料庫(kù),記為segCorpus={doc1,…,doci,…,docn}。

      算法1給出了單字詞錯(cuò)誤訓(xùn)練語(yǔ)料生成過(guò)程。在第8行,定義了一個(gè)標(biāo)簽數(shù)組Tag,并且初始化為“C”,表示S′中的每個(gè)字都是正確的。在第12行中,當(dāng)確定segj為單字詞,且CSet存在segj對(duì)應(yīng)的混淆字errChari,那么在第14行用errChari替換S′中的segIndex位置的字,并且在第17行用“E”標(biāo)記出在S′中segIndex位置上的errChari是單字詞錯(cuò)誤。

      算法1 單字詞錯(cuò)誤訓(xùn)練語(yǔ)料生成算法輸入: (1) 分詞后文本語(yǔ)料庫(kù): segCorpus={doc1,…,doci,…,docn}(2) 中文漢字混淆集:Cset={cs1,…,csk,…,csm}輸出: (1)單字詞錯(cuò)誤訓(xùn)練語(yǔ)料Corpus1. Corpus={}2. 對(duì)segCorpus中的每篇doci:3. {4. 對(duì)doci中每句S'=seg1…segj…segh:5. {6. segLen=seg1+…segj…+segh;7. segIndex=0;8. 定義長(zhǎng)度為senLen的標(biāo)簽數(shù)組Tag[0… senLen],初始化數(shù)組中每個(gè)值為“C”;9. 對(duì)S'中每項(xiàng)segj: 10. {11. segIndex=segIndex+|segj|;12. 如果segj=1,且Cset中存在混淆對(duì) (errChari,segj),則:13. {14. S'segIndex =errChari;15. typoSent=S';16. Sent=convertToChar(typoSent);17. Tag[segIndex]=“E”;18. Corpus=Corpus∪Sent,Tag ;19. S'segIndex =segj;20. Tag[segIndex]=“C”;21. }22. }23. }24. }25. Return Corpus;

      以S′=“黃金/首飾/戴/久/了/會(huì)/發(fā)白”為例,S對(duì)應(yīng)標(biāo)簽數(shù)組初始化為T(mén)ag[0]=“C”,…,Tag[9]=“C”。由于(帶,戴)是Cset的一個(gè)漢字混淆對(duì),因此,第15行產(chǎn)生了一個(gè)含錯(cuò)別字的句子typoSent=“黃金/首飾/帶/久/了/會(huì)/發(fā)白”。此時(shí),第16行產(chǎn)生單字詞錯(cuò)誤的訓(xùn)練語(yǔ)句Sent=“黃 金 首 飾帶久 了 會(huì) 發(fā) 白”。對(duì)應(yīng)的標(biāo)簽數(shù)組修改為T(mén)ag[0]=“C” ,…,Tag[4]=“E” ,…,Tag[9]=“C”,其中,Tag[4]=“E”表示Sent中的“帶”是單字詞錯(cuò)誤。

      需要注意的是,Corpus中的每條語(yǔ)句僅含一個(gè)單字詞錯(cuò)誤。

      2.2 基于Transformer的單字詞檢錯(cuò)模型

      近幾年來(lái),具有注意力機(jī)制的神經(jīng)網(wǎng)絡(luò)在自然語(yǔ)言應(yīng)用領(lǐng)域取得了突破性進(jìn)展[17]。本質(zhì)原因是注意力機(jī)制對(duì)自然語(yǔ)言文本中的重要信息賦予更高的權(quán)重,因此具有注意力機(jī)制的神經(jīng)網(wǎng)絡(luò)更能學(xué)習(xí)到文本的重要信息。

      與主流的端到端神經(jīng)網(wǎng)絡(luò)架構(gòu)中利用RNN作為自然語(yǔ)言文本的編碼器和解碼器不同,Vaswani等[3]利用Transformer網(wǎng)絡(luò)解決RNN處理數(shù)據(jù)不具備并行運(yùn)行的缺陷。其中,編碼器和解碼器分別由多個(gè)塊(block)串聯(lián)組成,編碼器中的每個(gè)block由多頭注意力機(jī)制層(multi-head attention)和前向反饋神經(jīng)網(wǎng)絡(luò)層兩部分組成,這兩部分都使用了殘差連接和歸一化(normalization)操作。解碼器比編碼器多了編碼—解碼注意機(jī)制(encoder-decoder attention),其中多頭注意力機(jī)制是通過(guò)多個(gè)自注意力機(jī)制(self-attention)堆疊而成。

      為了得到句子中的每個(gè)字和句子中所有字之間的語(yǔ)義關(guān)系,Transformer網(wǎng)絡(luò)使用了自注意力機(jī)制來(lái)描述(圖1)。通過(guò)自注意力機(jī)制可以訓(xùn)練出句子中每個(gè)字與句子中所有字上下文之間的關(guān)系。自注意力機(jī)制主要原理如下: 假設(shè)自注意力機(jī)制中輸入單字詞錯(cuò)誤例句S的字嵌入矩陣為S=[c1,c2,…,ci,…cn],(S∈n×dim,n表示句子S中所含有字的個(gè)數(shù),dim表示字向量ci的維度),通過(guò)對(duì)字嵌入矩陣S與權(quán)重矩陣WQ,WK,WV(WQ∈dim×dQ,WK∈dim×dQ,WV∈dim×dV)相乘得到對(duì)應(yīng)Q(Query),K(Key),V(Value)(Q∈n×dQ,K∈n×dQ,V∈n×dV)。接著Transformer采用注意力機(jī)制中常用的縮放點(diǎn)積(scaled dot-product)函數(shù),首先對(duì)Q和KT內(nèi)積得到相應(yīng)的注意力權(quán)重矩陣,該矩陣中的值表示句子中字與字之間的相關(guān)性,再除以等于K的維度),然后對(duì)得到的結(jié)果進(jìn)行mask和SoftMax操作,最后通過(guò)和V加權(quán)求和得到自注意力特征編碼如式(1)所示。

      圖1 Scaled Dot-Product Attention機(jī)制[3]

      如圖2所示,多頭注意力機(jī)制能夠在不同的表示子空間中獲取信息,對(duì)Q(query),K(key),V(value)分別做線性變換后再進(jìn)行scaled dot-product attention操作,接著對(duì)上述操作重復(fù)做h次后,再將scaled dot-product attention的結(jié)果進(jìn)行拼接和線性變換,最終得到多頭注意力機(jī)制的輸出,多頭注意力機(jī)制如式(2)、式(3)所示。

      圖2 Multi-Head Attention機(jī)制[3]

      (2)

      MH(Q,K,V)=Concat(head1,…,headh)Wo

      (3)

      為了便于描述單字詞錯(cuò)誤檢錯(cuò)網(wǎng)絡(luò)訓(xùn)練過(guò)程,我們假設(shè)單字詞錯(cuò)誤訓(xùn)練網(wǎng)絡(luò)的批大小(batch size)為b,編碼器和解碼器的層數(shù)為1。整個(gè)單字詞錯(cuò)誤檢錯(cuò)網(wǎng)絡(luò)的訓(xùn)練流程如下:

      第一步首先,將b條單字詞錯(cuò)誤句子對(duì)應(yīng)的索引編碼I通過(guò)字向量嵌入層得到字嵌入張量S。 其次,通過(guò)位置編碼層得到位置編碼張量P,將位置編碼張量P和字嵌入張量S相加,得到字嵌入張量S′;

      第二步將字嵌入張量S′輸入到編碼器部分的multi-head attention層后使用Add&Norm操作。其中,Add操作是將字嵌入張量S′和multi-head attention層輸出張量相加,Norm操作是對(duì)Add的結(jié)果進(jìn)行歸一化(layer normalization),歸一化操作有助于模型訓(xùn)練穩(wěn)定,最后輸出結(jié)果為M;

      第三步將M通過(guò)前向反饋神經(jīng)網(wǎng)絡(luò)后使用Add&Norm操作,最后得到編碼器的編碼結(jié)果;

      第四步將單字詞錯(cuò)誤標(biāo)簽索引序列通過(guò)字嵌入層和位置編碼層得到字嵌入張量T′;

      第五步將T′輸入到masked multi-head attention 層后使用Add&Norm操作,最后輸出結(jié)果為Query;

      第六步將解碼器中的Query與Encoder編碼結(jié)果的Key和Value作為 multi-head attention層的輸入后使用 Add&Norm操作,最后輸出結(jié)果為O;

      第七步將O輸入到解碼器中的前向反饋神經(jīng)網(wǎng)絡(luò)后使用Add&Norm操作,對(duì)解碼器的輸出結(jié)果使用Linear和Softmax操作得到句子中單字詞是否是錯(cuò)別字的概率分布,計(jì)算損失函數(shù)并利用反向傳播更新網(wǎng)絡(luò)中的參數(shù)。

      2.3 基于滑動(dòng)窗口的單字詞錯(cuò)誤測(cè)試方法

      本文實(shí)驗(yàn)的目的是為了識(shí)別出文本中的單字詞錯(cuò)誤。一方面,Transformer網(wǎng)絡(luò)在做單字詞錯(cuò)誤測(cè)試中泛化能力較弱,測(cè)試結(jié)果往往誤糾率較高。另一方面,Transformer網(wǎng)絡(luò)模型中的參數(shù)較多,神經(jīng)網(wǎng)絡(luò)測(cè)試時(shí)的結(jié)果往往具有不可解釋性。我們只能依賴(lài)個(gè)人經(jīng)驗(yàn)對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行調(diào)參,但是如果只是不斷調(diào)節(jié)網(wǎng)絡(luò)參數(shù)來(lái)適應(yīng)測(cè)試句子中的單字詞錯(cuò)誤的結(jié)果,又會(huì)極大地浪費(fèi)時(shí)間。例如,在原始的句子中“加字”或“減字”都會(huì)影響單字詞錯(cuò)誤的識(shí)別。因此,本文提出采用多窗口的方法進(jìn)行測(cè)試,即輸入時(shí)對(duì)待測(cè)語(yǔ)句加入固定大小的移動(dòng)窗口,通過(guò)對(duì)待測(cè)語(yǔ)句移動(dòng)窗口生成多條測(cè)試語(yǔ)句進(jìn)行測(cè)試,最后綜合考慮得到單字詞錯(cuò)誤識(shí)別的預(yù)測(cè)結(jié)果。算法2給出了具體的單字詞錯(cuò)誤測(cè)試算法。

      算法2: 單字詞錯(cuò)誤測(cè)試算法輸入: (1) 待測(cè)句子sent(2) 移動(dòng)窗口大小為winsize(3) 每次移動(dòng)步長(zhǎng)為stride輸出: (1)識(shí)別出的單字詞錯(cuò)誤Error1. testSet={};//testSet為sent的測(cè)試集合2. predArr=[];//predArr為sent中所有可能的單字詞錯(cuò)誤;3. len=sent.length;//計(jì)算待測(cè)句子的長(zhǎng)度4. 如果len小于或等于winsize,則將sent加入到測(cè)試集合testSet中;5. 如果len大于winsize,則使用winsize大小的窗口對(duì)sent自左往右以步長(zhǎng)大小為stride進(jìn)行移動(dòng),并將每次窗口移動(dòng)中的字符串加入到testSet中;6. For testi in testSet do:7. Errori=predict(testi)//利用訓(xùn)練出的單字詞檢錯(cuò)網(wǎng)絡(luò)模型預(yù)測(cè)testi中單字詞錯(cuò)誤Errori;8. predArr=predArr.add(Errori)//將單字詞錯(cuò)誤Errori加入到predArr;9. Error=majority(predArr) //將predArr中出現(xiàn)次數(shù)最多的單字詞作為sent中的單字詞錯(cuò)誤;10. Return Error;

      例如,待測(cè)句子S=“由于印度越南等過(guò)限制大米出口”,移動(dòng)窗口winsize=10。在第5行,由移動(dòng)窗口在S中移動(dòng)生成testSet,testSet={“由于印度越南等過(guò)限制”,“于印度越南等過(guò)限制大”,“印度越南等過(guò)限制大米”, “度越南等過(guò)限制大米出”,“越南等過(guò)限制大米出口”}。在第8行,sent中所有可能的單字詞錯(cuò)誤predArr=[“過(guò)”,“過(guò)”,“過(guò)”,“出”,“過(guò)”]。在第9行,將predArr中出現(xiàn)次數(shù)最多單字詞“過(guò)”作為sent中的單字詞錯(cuò)誤。

      3 實(shí)驗(yàn)與分析

      3.1 訓(xùn)練數(shù)據(jù)與測(cè)試指標(biāo)

      在訓(xùn)練語(yǔ)料生成中,本文還考慮了以下兩個(gè)方面。

      (1)漢字混淆集的出現(xiàn)率漢字混淆集中的漢字errChari盡可能多地出現(xiàn)在訓(xùn)練語(yǔ)料中,并且分詞后以單字詞的形式出現(xiàn)在訓(xùn)練語(yǔ)料中。

      (2)領(lǐng)域豐富性、題材多樣性單字詞錯(cuò)誤訓(xùn)練語(yǔ)料來(lái)自多個(gè)不同的領(lǐng)域,使得訓(xùn)練出來(lái)的Transformer網(wǎng)絡(luò)模型能適用較多領(lǐng)域。

      為此,本文選擇了“新聞?lì)悺薄翱萍碱?lèi)”“財(cái)經(jīng)類(lèi)”“娛樂(lè)類(lèi)”網(wǎng)站的網(wǎng)頁(yè)作為訓(xùn)練語(yǔ)料來(lái)源,如表1 所示。

      我們從表1的網(wǎng)址上爬取了大量的語(yǔ)料,經(jīng)過(guò)去除HTML標(biāo)簽、分句和分詞等預(yù)處理后,產(chǎn)生語(yǔ)料庫(kù)segCorpus,大約有405MB,如表2所示。

      表1 訓(xùn)練語(yǔ)料類(lèi)別與來(lái)源

      表2 segCorpus含有的語(yǔ)料類(lèi)別和大小

      通過(guò)算法1自動(dòng)生成單字詞錯(cuò)誤語(yǔ)料,我們獲得了單字詞錯(cuò)誤語(yǔ)料庫(kù),大小為7.8GB。

      對(duì)Corpus隨機(jī)抽取出7.2MB作為測(cè)試集,剩余語(yǔ)料作為訓(xùn)練集。我們課題組在真實(shí)語(yǔ)料中收集了單字詞錯(cuò)誤例句共有220條,也作為本實(shí)驗(yàn)的測(cè)試語(yǔ)料。如表3所示,需要注意的是,這兩個(gè)測(cè)試集中,每條語(yǔ)句僅含一個(gè)單字詞錯(cuò)誤。

      表3 單字詞錯(cuò)誤測(cè)試集

      本文采用召回率、精確率以及F1評(píng)價(jià)Transformer網(wǎng)絡(luò)的識(shí)別單字詞錯(cuò)誤性能,如式(4)~式(6)所示。

      3.2 實(shí)驗(yàn)過(guò)程與結(jié)果分析

      為了驗(yàn)證第2節(jié)所述的單字詞錯(cuò)誤識(shí)別方法的可行性,我們進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)過(guò)程中所使用服務(wù)器的型號(hào)為Dell PowerEdge R730,操作系統(tǒng)為Ubuntu, RAM的內(nèi)存大小為64GB,顯卡類(lèi)型為NVIDIA GTX1080ti,運(yùn)行代碼主要基于Tensorflow軟件,分詞器采用ICTCLAS。

      本文訓(xùn)練神經(jīng)網(wǎng)絡(luò)隱藏單元設(shè)置成320,dropout設(shè)置成0.05,學(xué)習(xí)率設(shè)置成0.001,優(yōu)化算法使用Adam,字向量的維度設(shè)置成320。分別對(duì)自動(dòng)生成的測(cè)試集句和220條人工收集的真實(shí)例句進(jìn)行測(cè)試,不同窗口的實(shí)驗(yàn)結(jié)果見(jiàn)表4~表6。

      表4 自動(dòng)生成的測(cè)試集的效果

      表5 人工收集的測(cè)試集的效果

      通過(guò)對(duì)表4和表5實(shí)驗(yàn)結(jié)果分析發(fā)現(xiàn),并不是移動(dòng)窗口越大,單字詞檢錯(cuò)效果越好,當(dāng)窗口數(shù)是15時(shí),在兩個(gè)測(cè)試集上識(shí)別精確率、召回率以及F1都分別達(dá)到最優(yōu)。

      表6顯示,基于Transformer網(wǎng)絡(luò)的單字詞錯(cuò)誤識(shí)別方法在準(zhǔn)確率和召回率上要比傳統(tǒng)的BiLSTM和3-GRAM的單字詞檢錯(cuò)方法高。Transformer帶窗口測(cè)試相比不帶窗口測(cè)試準(zhǔn)確率和召回率都有增加,說(shuō)明窗口測(cè)試對(duì)提高單字詞錯(cuò)誤識(shí)別的準(zhǔn)確率起到了一定作用。

      表6 不同模型和窗口測(cè)試結(jié)果

      表7和表8分別是測(cè)出錯(cuò)別字和未測(cè)出錯(cuò)別字的部分案例。對(duì)人工收集的測(cè)試集中未測(cè)出單字詞錯(cuò)誤的語(yǔ)句進(jìn)行分析,發(fā)現(xiàn)有以下特點(diǎn):

      (1) 句中含有字?jǐn)?shù)較多的人名、地名、日期。 這類(lèi)約占35%;

      (2) 單字詞錯(cuò)誤位于測(cè)試句的句首或者句尾。這類(lèi)約占30%;

      (3) 測(cè)試句子中包含阿拉伯?dāng)?shù)字、字母、特殊符號(hào)。這類(lèi)約占22%;

      (4) 分詞結(jié)果不正確導(dǎo)致單字詞錯(cuò)誤無(wú)法判斷。例如,有時(shí)分詞工具會(huì)把多字詞切碎,這樣會(huì)給我們構(gòu)造的單字詞錯(cuò)誤訓(xùn)練語(yǔ)料造成干擾。這類(lèi)約占7%;

      (5) 待測(cè)句子過(guò)長(zhǎng),識(shí)別往往出錯(cuò)。這類(lèi)約占6%。

      表7 測(cè)出錯(cuò)別字部分案例

      表8 未測(cè)出錯(cuò)別字部分案例

      4 總結(jié)

      針對(duì)單字詞檢錯(cuò)困難的問(wèn)題,本文基于Transformer網(wǎng)絡(luò),提出一種利用原始語(yǔ)料和漢字混淆集[15-16]來(lái)自動(dòng)構(gòu)建單字詞檢錯(cuò)訓(xùn)練語(yǔ)料,并使用移動(dòng)窗口以提高單字詞檢錯(cuò)準(zhǔn)確性的方法。從實(shí)驗(yàn)效果來(lái)看,基于Transformer網(wǎng)絡(luò)方法的F1值要比傳統(tǒng)的3-GRAM和BiLSTM方法高出12至16個(gè)百分點(diǎn)。在同樣的Transformer網(wǎng)絡(luò)模型測(cè)試時(shí),加窗口又比不加窗口的方法在精確率和召回率方面都得到較大提升。通過(guò)對(duì)實(shí)驗(yàn)結(jié)果中的錯(cuò)誤分析,發(fā)現(xiàn)在待測(cè)句中單字詞錯(cuò)誤能否被正確識(shí)別與很多因素有關(guān)。例如,待測(cè)句中含有字?jǐn)?shù)較多的人名、地名、日期,單字詞錯(cuò)誤在句中的位置,標(biāo)點(diǎn)符號(hào)、句子長(zhǎng)短、分詞是否準(zhǔn)確等。這反映出Transformer 網(wǎng)絡(luò)進(jìn)行單字詞檢錯(cuò)還有一定的局限性。對(duì)一些句首或句尾的錯(cuò)別字,應(yīng)用移動(dòng)窗口的方法測(cè)試,測(cè)試準(zhǔn)確性較差,主要原因是一方面位于首尾的單字詞錯(cuò)誤在語(yǔ)句中缺少上下文語(yǔ)境,另一方面是移動(dòng)窗口產(chǎn)生位于句首或句尾單字詞錯(cuò)誤的測(cè)試語(yǔ)句較少。下一步工作,我們將探索提高位于句首或者句尾的單字詞錯(cuò)誤識(shí)別準(zhǔn)確性的方法。

      猜你喜歡
      單字錯(cuò)別字語(yǔ)料
      河北大名話單元音韻母、單字調(diào)及雙音節(jié)非輕聲詞連調(diào)的實(shí)驗(yàn)語(yǔ)音學(xué)初探
      詩(shī)嘲錯(cuò)別字
      錯(cuò)別字的自述
      基于語(yǔ)料調(diào)查的“連……都(也)……”出現(xiàn)的語(yǔ)義背景分析
      高考作文常見(jiàn)錯(cuò)別字大全
      “對(duì)仗不宜分解到單字”毋庸置疑——答顧紳先生“四點(diǎn)質(zhì)疑”
      鹽城方言單字調(diào)聲學(xué)實(shí)驗(yàn)研究
      我與錯(cuò)別字
      華語(yǔ)電影作為真實(shí)語(yǔ)料在翻譯教學(xué)中的應(yīng)用
      《苗防備覽》中的湘西語(yǔ)料
      扎囊县| 西平县| 兴海县| 五河县| 清徐县| 和林格尔县| 蒲江县| 广安市| 遵义县| 普陀区| 铜梁县| 兴文县| 景东| 兖州市| 济宁市| 临江市| 论坛| 吉隆县| 六安市| 冕宁县| 呼玛县| 丰都县| 株洲市| 津市市| 沅陵县| 炉霍县| 来凤县| 尼玛县| 随州市| 张家界市| 页游| 奉化市| 西乡县| 祁东县| 新安县| 明溪县| 澜沧| 胶州市| 花莲市| 象山县| 双鸭山市|