中文語法自動糾錯系統(tǒng)的研究與實現(xiàn)_第1頁
中文語法自動糾錯系統(tǒng)的研究與實現(xiàn)_第2頁
中文語法自動糾錯系統(tǒng)的研究與實現(xiàn)_第3頁
中文語法自動糾錯系統(tǒng)的研究與實現(xiàn)_第4頁
中文語法自動糾錯系統(tǒng)的研究與實現(xiàn)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、    中文語法自動糾錯系統(tǒng)的研究與實現(xiàn)    王浩暢 周錦程【摘 要】文章將從中文語法錯誤修正中進行解釋,主要包括以下幾個部分:語料庫的編寫,基于高質(zhì)量的漢語語料庫,通過機器學(xué)習(xí)進行語法錯誤特征分析和語料庫糾錯方法,基于模型進行訓(xùn)練;預(yù)處理數(shù)據(jù),消除數(shù)據(jù)噪聲,從而獲得高質(zhì)量的數(shù)據(jù);語法錯誤,句子分割前的自動分割和詞性標注,通過提高分詞的正確性來提高語法錯誤識別的準確性;建立n-gram模型并基于crf模型檢測語法錯誤。【關(guān)鍵詞】語法糾錯;分詞;n-gram;序列標注tp399 a 1674-0688(2020)02-0081-050 引言近年來,隨著中

2、國經(jīng)濟勢力的增強和國際地位的提升,中國人在國際經(jīng)濟文化交流中的影響日益重要。因此,世界各國對漢語學(xué)習(xí)的需求日益增多,截至目前,已有超過70多個國家頒布了法令,建立了全職崗位,并在國家教育系統(tǒng)中將漢語教育歸納其中。英國、法國、德國、美國、意大利、西班牙、加拿大等國家已將漢語視為除各國母語外的第二外語。根據(jù)中國國家漢語國際推廣領(lǐng)導(dǎo)小組的數(shù)據(jù)統(tǒng)計,除中國外,在世界上使用中文的人數(shù)已超過1億人1。繼續(xù)升溫的“中國熱”為世界推廣漢語帶來了良好的機遇。如何提高漢語學(xué)習(xí)效率也成為一個新的挑戰(zhàn)。據(jù)統(tǒng)計,中文學(xué)習(xí)的困難主要體現(xiàn)在聽、說、讀、寫的技巧。其中寫作是最難學(xué)習(xí)和掌握的。在寫作中,。句子由短語和單詞結(jié)構(gòu)組

3、成的規(guī)則已經(jīng)成為最常見的錯誤之一。對于中文語法自動糾錯系統(tǒng),技術(shù)指標投入使用需要時間,因此中文語法修正成為一個具有挑戰(zhàn)性的問題。在20世紀80年代早期,研究人員對語法錯誤糾正(gec)2進行了研究,并經(jīng)歷了3個發(fā)展階段。第一代系統(tǒng)使用簡單的字符串匹配和替換來識別和糾正錯誤。第二代系統(tǒng)使用語法規(guī)則分析文本,并通過編寫錯誤模板匹配糾正語法錯誤。第三代系統(tǒng)使用數(shù)據(jù)驅(qū)動方法從大規(guī)模原生或?qū)W習(xí)者語料庫中提取詞匯語法。系統(tǒng)機器式不斷地學(xué)習(xí)構(gòu)建模型用來自動檢測語法的對錯。2018年,在grammatical error correction(gec)方面被證實為領(lǐng)先的方法是sequence to seque

4、nce(seq2seq)。在seq2seq基礎(chǔ)架構(gòu)上提出了一種新的fluency boost learning and inference(推斷學(xué)習(xí)機制),該機制通過“error-correct”進行學(xué)習(xí)訓(xùn)練,在過程中產(chǎn)生多個“error-correct”,將糾錯模型提煉到更高的水平,以便逐步糾錯。與自動檢測英語語法相比,漢語語法檢測起步較晚,語法相對靈活,沒有固定的形態(tài)性,但存在漢語語料庫積累不足、無覆蓋漢語語法等問題。校正需要基于詞語、語法和語義的分析,漢語語法糾錯技術(shù)的難度高于英語糾錯。因此,對這一課題的鉆研顯得尤為重要。1 分析結(jié)構(gòu)1.1 語料庫準備中文語法錯誤的自動糾正需要基于高質(zhì)量

5、的中文語料庫。通過機器學(xué)習(xí),對語料庫的語法錯誤特征和糾錯方法進行了分析和總結(jié),對實際檢測模型進行了訓(xùn)練。常見的漢語語法錯誤主要包括成分缺陷(不完整主語、不完全謂詞、不完整對象),不正確的錯配(不恰當?shù)闹髦^錯配、不匹配的動詞動詞、狀語和中心詞之間不恰當?shù)牟黄ヅ?、定語和中心詞、補語和中心的不恰當匹配),詞匯不匹配,結(jié)構(gòu)混亂,詞匯使用不當,回聲;語料庫3中相應(yīng)的句子錯誤可以分為4類:冗余、缺失、誤用和無序。冗余:指句子中出現(xiàn)多余的詞,如“我現(xiàn)在剛準備休息”,正確應(yīng)為“我剛準備休息”;缺失:指句子中缺失必要的詞導(dǎo)致句子不完整,如“小咪性格很溫順的一只貓”,正確應(yīng)為“小咪是性格很溫順的一只貓”;誤用:指

6、句子中存在誤用的詞導(dǎo)致影響句子語義,如“桂林以山水著名”,正確應(yīng)為“桂林以山水聞名”;亂序:指句子中詞位置錯誤,調(diào)換位置后句子會更通順,如“我想去上海下個月”,正確應(yīng)為“我下個月想去上?!?。本實驗采用了搜狗實驗室的中文語料庫和頻率語料庫,對互聯(lián)網(wǎng)開放。根據(jù)實驗需要,將語料庫分訓(xùn)練、驗證和測試3個部分4。訓(xùn)練集包括3 000多篇。部分文章包含語法錯誤的1 000多個句子,以及糾正每個錯誤句子的方式,訓(xùn)練集將用于語法錯誤檢測模型的訓(xùn)練;驗證集包含300多個句子,用于語法錯誤檢測模型。參數(shù)優(yōu)化;測試集包含超過2 000個句子,其中一半是冗余、缺失、誤用和根據(jù)錯誤類型亂序,以此評估模型的性能與準確性。

7、1.2 數(shù)據(jù)預(yù)處理實際生活中的數(shù)據(jù)往往受到噪音、數(shù)據(jù)損失和數(shù)據(jù)變化的影響,造成數(shù)據(jù)集的質(zhì)量不佳5?;谶@些數(shù)據(jù)的實驗可能導(dǎo)致實驗結(jié)果不準確,因此有必要對數(shù)據(jù)進行預(yù)處理,以提高實驗結(jié)果的準確性。具體處理措施如下:對于語料庫中混合漢語和英語的句子,由于英語單詞會增加分析漢語語義的難度,因此使用漢語替換英語單詞方便系統(tǒng)識別。例如,“我在澳大利亞悉尼學(xué)習(xí)”被“我是悉尼,澳大利亞上學(xué)”所取代。對于句子中括號的解釋性詞語,使用括號以降低復(fù)雜性。例如,“乒乓球單人比賽一般采用7場比賽或4場比賽和3場比賽(場均11分)”取代“乒乓球單人比賽一般采用7場勝利或3場勝利在5場比賽中。減少標點符號對句子的影響,刪除

8、句子中出現(xiàn)的引號,并標上標點符號的特殊含義。正如評論家所說,“具有形式和精神的結(jié)合,充滿活力”取代了神筆馬良筆下那栩栩如生的畫,形式和精神都充滿活力。減少數(shù)字對句子的影響,并用中文替換句子中出現(xiàn)的數(shù)字,例如“離家5分鐘學(xué)走路”和“從我家到公司5分鐘”。1.3 分詞與標注處理采用語法錯誤集自動糾錯時,句子需要被分段和詞性標。分詞是解決中文文本最基本的前提條件,也是chinese human-machine natural language interaction的基礎(chǔ)模塊6。良好的中文分詞算法可以提升natural language processing效果,更好地幫助系統(tǒng)理解復(fù)雜的漢語。因此,

9、分詞是關(guān)鍵步驟,分詞準確率越高,語法錯誤識別的準確性就越高。本課題將使用開源的han language processing(簡稱hanlp)7進行分詞和注釋處理。hanlp是natural language processing的一個工具包,基于算法和模型,并具備低耦合、高性能、多功能、新語料等包括自定義的優(yōu)勢,功能包括hmm-bigram和由字構(gòu)詞等中文分詞、textbank關(guān)鍵詞提取、textbank自動摘要、hmm和crf等詞性標注、kmeans等自動推斷聚類數(shù)目、文檔語義相似度計算等。hanlp有兩種方式引用。(1)直接在maven的pom.xml引用hanlp:com.hankcs

10、hanlpportable-x.x.x(2)下載data數(shù)據(jù)包,該數(shù)據(jù)包存在模型和詞語7,詞法分析會使用到詞語詞典,句法分析會使用到模型;下載perties包,通過修改配置文件引入hanlp-data數(shù)據(jù)包,并將perties放到src或resources目錄下進行編譯8。示例:“我喜歡在睡前喝一杯牛奶,聽一些輕音樂,因為能幫助我快速入眠?!背绦蜻\行后得到的詞法分析結(jié)果如圖1所示,句法分析結(jié)果如圖2所示。1.4 n-gram模型n-gram模型9的基本思想是在大小為n字節(jié)的滑動窗口中操作文本內(nèi)容,形成長度為n的字節(jié)段序列。每個字節(jié)段稱為一個克計算所有克的出現(xiàn)

11、頻率,并根據(jù)預(yù)設(shè)閾值進行過濾,以形成密鑰克列表,即文本的向量特征空間,每個列表克是特征向量維度。這個模型假設(shè)如下,第n個詞語的出現(xiàn)與前面的n-1個詞語存在關(guān)系,而與其他詞語無任何關(guān)系。每個詞語出現(xiàn)概率之積就為整個句子是否正確的概率。通過直接計算出來自語料庫的n個單詞同時出現(xiàn)的次數(shù),可以判斷這些概率是否合理。假設(shè)句子t是由詞序列y1,y2,y3,yn組成,用公式表示n-gram語言模型如下:p(t)=p(y1)p(y2)p(y3)p(yn)=p(y1)p(y2|y1)*p(y3|y1y2)*p(yn|y1y2y3),tri-gram和bi-gram為教常見的n-gram模型。兩個模型可用公式表示

12、如下:一元bi-gram:p(t)=p(w1|begin)p(w2|w1)p(w3|w2)*p(wn|wn-1)二元tri-gram:p(t)=p(w1|begin1,begin2)p(w2|w1,begin1)p(w3|w2w1)*p(wn|wn-1,wn-2),這個概率顯然不是很好,運用馬爾科夫鏈的假設(shè),假設(shè)這個詞僅僅與之前幾個有限的詞相關(guān),就可以減少計算的長度而不必追溯原始單詞。即,在一階的馬爾科夫條件下,p(w1,w2,w3,wn)=p(w1)p(w2|w1)p(w3|w2)p(wn|w_n-1)。n-gram是一個有創(chuàng)造性的模型,隨著n的變大,形成的矩陣數(shù)量也越大,例如語句包含6 0

13、00個單詞,bigram模型方法可生成6 000×6 000的矩陣,trigram模型可生成6 000×6 000×6 000的矩陣。但其中會含有大量為零的值,導(dǎo)致整個句子的概率會變成零,會出現(xiàn)稀疏矩陣問題。因此,需要利用數(shù)據(jù)平滑技術(shù),目的是使句子n-gram概率之和等于1。算法的原理是對概率空間做重構(gòu),彌補給之前未出現(xiàn)過的n-gram,降低出現(xiàn)過的n-gram的概率,常用的數(shù)據(jù)平滑處理方式10如下:拉普拉斯平滑。要求任何n-gram在訓(xùn)練語料庫中出現(xiàn)一次或多次。good-turing方法。減少出現(xiàn)非零的次數(shù),并將其他概率分解到0概率中。拉依達方法。若測量數(shù)量大于

14、等于50,則非等置信概率計算非零事件的減損值,然后根據(jù)該方法將其分配給其他0個概率事件,低階分布。絕對損傷法。減少固定次數(shù)非零的出現(xiàn)概率,并將其他概率分解到0概率中。線性損傷法。將次數(shù)減少到個位,并分解到其他0個概率事件。1.5 利用n-gram模型10評估句子合理概率基于n-gram,每個單詞是獨立分布的,即p(d,e,f),其中d、e和f沒有任何交集,所以p(d,e,f)=p(d)p(e)p(f),比如語句“我熱愛唱歌”,p(d="我",e="熱愛",f="熱愛")=p("我")p(“熱愛”)p("唱

15、歌");每個詞語在語料庫中的統(tǒng)計數(shù)量為我:221;熱愛:272;唱歌:391。按照以上信息就可以得出p(d,e,f),也就是這個句子正確的概率為p(d,e,f)=p(d)p(e)p(f)=13/m*16/m*23/m。對于二元模型,針對p(d,e,f)=p(d)p(e|d)p(f|e),各單詞與左邊相近的詞相關(guān)聯(lián),例如“我熱愛唱歌”,p(d="我",e="熱愛",f="唱歌")=p("我")p(“熱愛”|“我”)p("唱歌"|“熱愛”);每個詞語在語料庫中的統(tǒng)計數(shù)量為我-我:0;我-熱

16、愛:114;我-唱歌:1;熱愛-我:0;熱愛-熱愛:3;熱愛-唱歌:162;唱歌-我:0;唱歌-熱愛:0;唱歌-唱歌:0。按照以上信息可以得出p(d,e,f)等于句子的合理概率。p(d,e,f)=p(d)p(e|d)p(f|e),p(d)= 221/m,p(e|d)=114/221,p(f|e)=162/272。1.6 基于crf模型檢測語法錯誤crf即條件隨機場為條件概率分布模型p(a | b),指輸入隨機變量a條件下的另一組輸出變量b的概率分布模型,為滿足crf序列模型,必須對每個句子做分割,再提取這個單詞相關(guān)的特性。該信息主要包括詞的從屬語法樹中詞性的結(jié)構(gòu)特征和對其他詞的依賴。根據(jù)句級n

17、-gram的概率值和高稀疏度部分,序列標注能更好地分析詞與詞之間的關(guān)系及詞本身的特性,并且不會有稀疏問題,能更準確地識別出語句錯誤的具體位置。同時,crf具備較強的推理能力,能利用相似、非獨立性的邏輯進行訓(xùn)練;也可完全運用上下文數(shù)據(jù)作為特性,亦可任意添加其他外部特征,方便模型信息的獲取,使模型更加豐富。此外,crf的在性能表現(xiàn)上更加優(yōu)秀,具備更強的融合能力,識別效果優(yōu)于memm。2 技術(shù)應(yīng)用語病辨認認為檢查句中中存在的錯誤,語病分類為檢測句子的錯誤類型,語病定位為辨認句子的錯誤位置。其中,錯誤類型有4種:少詞、多詞、用詞錯誤、詞序錯誤,對于缺詞和錯詞,需提供修正的建議。具體的錯誤樣本數(shù)據(jù)見表1

18、。(1)引入一些新的語言學(xué)特征(先驗知識)。(2)概率集成方法(集成多個bi-lstm+crf模型)。(3)模板匹配用于后處理。語病修正(對缺詞錯誤,以及使用不當錯誤進行糾正):系統(tǒng)采用端到端神經(jīng)網(wǎng)絡(luò)模型結(jié)合詞匯點互信息,根據(jù)語境和語言信息騰出語言位置,猜測正確的詞匯量。目前來看,糾錯算法分為兩個方向:基于規(guī)則、深度模型。中文糾錯分為兩個步驟。第一步是謬誤檢測,第二步是謬誤糾正。謬誤檢測部分通過中斷單詞segmenter切斷單詞。由于句子包含拼寫錯誤,因此從單詞大小和單詞粒度中切出單詞的結(jié)果中存在許多切割錯誤,檢測到錯誤的結(jié)果形成一組可疑的錯誤位置。謬誤部分是遍歷所有可疑錯誤位置,并用類似相近

19、的詞語替換錯誤位置的單詞,然后通過語言模型計算句子混淆程度,比較并排序所有候選集結(jié)果,并獲得最佳校正詞。3 實驗與分析糾錯方式共計兩步:檢測和糾錯。檢測主要通過分詞器進行切詞,由于切詞結(jié)果存在切分錯誤的情況,所以檢測時分別從字、詞兩個顆粒度觸發(fā)整合,形成錯誤候選集。通過檢測模型逐個定位疑似錯字詞,長句切分為短句,取得疑似錯字詞的同音詞、同義詞,使用候選字詞進行替換,通過翻譯模型進行倒序處理,糾錯逐個處理,并集中指定的詞直接取得所有可能正確結(jié)果(ps:對非中文的錯字不做處理)。為了使糾錯效果更好,本次使用了seq2seq_attention模型,但是也存在一個缺點,就是模型容易擬合。(1)中文切

20、詞代碼如下。def chinesewordsegmentation(sentence,cut_type='word',pos=false):"""中文切詞功能:傳入?yún)?shù)1:sentence:句子文本;:傳入?yún)?shù)2:cut_type:'word' use jieba.lcut; 'char' use list(sentence);:傳入?yún)?shù) 3:pos:enable pos:返回:list"""if pos:if cut_type = 'word':word_pos_seq

21、=posseg.lcut(sentence)word_seq,pos_seq =,for w,p in word_pos_seq:word_seq.append(w)pos_seq.append(p)return word_seq,pos_seqelif cut_type = 'char':word_seq = list(sentence)pos_seq =for w in word_seq:w_p = posseg.lcut(w)pos_seq.append(w_p0.flag)return word_seq,pos_seqelse:if cut_type = 'wo

22、rd':return jieba.lcut(sentence)elif cut_type = 'char':return list(sentence)(2)中文糾錯處理邏輯如下。長句文本切分成短句文本:sentences = re.split(r"|,|。|?s|;s|,s",sentence)調(diào)用模型庫,進行倒序操作:maybe_errors = sorted(maybe_errors,key=operator.itemgetter(2),reverse=true)遍歷糾錯,逐個處理:before_sent = sentence:begin_idx

23、after_sent = sentenceend_idx:如果集中制定的詞,直接取結(jié)果:if err_type = error_type"confusion":corrected_item=since.custom_confusionitem否則則取出所有可能正確的詞(對非中文的錯字不做處理):if not is_chinese_string(item):continuemaybe_right_items = since.generate_items(item)if not maybe_right_items:continuecorrected_item = since.l

24、m_correct_item(item,maybe_right_items,before_sent,after_sent)(3)系統(tǒng)輸入“我們都因該學(xué)會思考”,程序執(zhí)行后檢測出錯誤詞語“因該”,并替換成“應(yīng)該”,最終正確語句為“我們都應(yīng)該學(xué)會思考”。具體實驗結(jié)果如圖3所示。參 考 文 獻1lei zhang,ming zhou,haihua pan.automatic detecting/correcting errors in chinese text by an approximate word-matching algorithmd.association for computation

25、al linguistics,2000(10):248-254.2jianbo zhao,mingzheng li,weijie liu,et al.detection of chinese grammatical errors with context representationm.united kingdom:alta institute,university of cambridge,2018:22-24.3junjie yu,zhenghua li.chinese spelling error detection and correction based on language mo

26、del,pronunciation,and shapej.proceedings of the third cips-sighan joint conference on chinese language processing,2011(10):220-223.4chuen-min huang,mei-chen wu,ching-che ch-ang.error detection and correction based on chinese phonemic alphabet in chinese textj.computational linguistics and chinese language proces-sing,2007:27-44.5k j chen,m h bai.“unknown word detection f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論