国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

中文語法自動糾錯系統(tǒng)的研究與實現(xiàn)

2020-04-14 04:55王浩暢周錦程
企業(yè)科技與發(fā)展 2020年2期
關(guān)鍵詞:分詞

王浩暢 周錦程

【摘 要】文章將從中文語法錯誤修正中進(jìn)行解釋,主要包括以下幾個部分:①語料庫的編寫,基于高質(zhì)量的漢語語料庫,通過機(jī)器學(xué)習(xí)進(jìn)行語法錯誤特征分析和語料庫糾錯方法,基于模型進(jìn)行訓(xùn)練;②預(yù)處理數(shù)據(jù),消除數(shù)據(jù)噪聲,從而獲得高質(zhì)量的數(shù)據(jù);③語法錯誤,句子分割前的自動分割和詞性標(biāo)注,通過提高分詞的正確性來提高語法錯誤識別的準(zhǔn)確性;④建立N-Gram模型并基于CRF模型檢測語法錯誤。

【關(guān)鍵詞】語法糾錯;分詞;N-Gram;序列標(biāo)注

【中圖分類號】TP399 【文獻(xiàn)標(biāo)識碼】A 【文章編號】1674-0688(2020)02-0081-05

0 引言

近年來,隨著中國經(jīng)濟(jì)勢力的增強(qiáng)和國際地位的提升,中國人在國際經(jīng)濟(jì)文化交流中的影響日益重要。因此,世界各國對漢語學(xué)習(xí)的需求日益增多,截至目前,已有超過70多個國家頒布了法令,建立了全職崗位,并在國家教育系統(tǒng)中將漢語教育歸納其中。英國、法國、德國、美國、意大利、西班牙、加拿大等國家已將漢語視為除各國母語外的第二外語。根據(jù)中國國家漢語國際推廣領(lǐng)導(dǎo)小組的數(shù)據(jù)統(tǒng)計,除中國外,在世界上使用中文的人數(shù)已超過1億人[1]。

繼續(xù)升溫的“中國熱”為世界推廣漢語帶來了良好的機(jī)遇。如何提高漢語學(xué)習(xí)效率也成為一個新的挑戰(zhàn)。據(jù)統(tǒng)計,中文學(xué)習(xí)的困難主要體現(xiàn)在聽、說、讀、寫的技巧。其中寫作是最難學(xué)習(xí)和掌握的。在寫作中,。句子由短語和單詞結(jié)構(gòu)組成的規(guī)則已經(jīng)成為最常見的錯誤之一。對于中文語法自動糾錯系統(tǒng),技術(shù)指標(biāo)投入使用需要時間,因此中文語法修正成為一個具有挑戰(zhàn)性的問題。

在20世紀(jì)80年代早期,研究人員對語法錯誤糾正(GEC)[2]進(jìn)行了研究,并經(jīng)歷了3個發(fā)展階段。第一代系統(tǒng)使用簡單的字符串匹配和替換來識別和糾正錯誤。第二代系統(tǒng)使用語法規(guī)則分析文本,并通過編寫錯誤模板匹配糾正語法錯誤。第三代系統(tǒng)使用數(shù)據(jù)驅(qū)動方法從大規(guī)模原生或?qū)W習(xí)者語料庫中提取詞匯語法。系統(tǒng)機(jī)器式不斷地學(xué)習(xí)構(gòu)建模型用來自動檢測語法的對錯。2018年,在Grammatical Error Correction(GEC)方面被證實為領(lǐng)先的方法是Sequence to Sequence(seq2seq)。在seq2seq基礎(chǔ)架構(gòu)上提出了一種新的fluency boost learning and inference(推斷學(xué)習(xí)機(jī)制),該機(jī)制通過“error-correct”進(jìn)行學(xué)習(xí)訓(xùn)練,在過程中產(chǎn)生多個“error-correct”,將糾錯模型提煉到更高的水平,以便逐步糾錯。

與自動檢測英語語法相比,漢語語法檢測起步較晚,語法相對靈活,沒有固定的形態(tài)性,但存在漢語語料庫積累不足、無覆蓋漢語語法等問題。校正需要基于詞語、語法和語義的分析,漢語語法糾錯技術(shù)的難度高于英語糾錯。因此,對這一課題的鉆研顯得尤為重要。

1 分析結(jié)構(gòu)

1.1 語料庫準(zhǔn)備

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

1.2 數(shù)據(jù)預(yù)處理

實際生活中的數(shù)據(jù)往往受到噪音、數(shù)據(jù)損失和數(shù)據(jù)變化的影響,造成數(shù)據(jù)集的質(zhì)量不佳[5]。基于這些數(shù)據(jù)的實驗可能導(dǎo)致實驗結(jié)果不準(zhǔn)確,因此有必要對數(shù)據(jù)進(jìn)行預(yù)處理,以提高實驗結(jié)果的準(zhǔn)確性。具體處理措施如下:①對于語料庫中混合漢語和英語的句子,由于英語單詞會增加分析漢語語義的難度,因此使用漢語替換英語單詞方便系統(tǒng)識別。例如,“我在澳大利亞悉尼學(xué)習(xí)”被“我是悉尼,澳大利亞上學(xué)”所取代。②對于句子中括號的解釋性詞語,使用括號以降低復(fù)雜性。例如,“乒乓球單人比賽一般采用7場比賽或4場比賽和3場比賽(場均11分)”取代“乒乓球單人比賽一般采用7場勝利或3場勝利在5場比賽中。③減少標(biāo)點(diǎn)符號對句子的影響,刪除句子中出現(xiàn)的引號,并標(biāo)上標(biāo)點(diǎn)符號的特殊含義。正如評論家所說,“具有形式和精神的結(jié)合,充滿活力”取代了神筆馬良筆下那栩栩如生的畫,形式和精神都充滿活力。④減少數(shù)字對句子的影響,并用中文替換句子中出現(xiàn)的數(shù)字,例如“離家5分鐘學(xué)走路”和“從我家到公司5分鐘”。

1.3 分詞與標(biāo)注處理

采用語法錯誤集自動糾錯時,句子需要被分段和詞性標(biāo)。分詞是解決中文文本最基本的前提條件,也是Chinese Human-Machine Natural Language Interaction的基礎(chǔ)模塊[6]。良好的中文分詞算法可以提升Natural Language Processing效果,更好地幫助系統(tǒng)理解復(fù)雜的漢語。因此,分詞是關(guān)鍵步驟,分詞準(zhǔn)確率越高,語法錯誤識別的準(zhǔn)確性就越高。

本課題將使用開源的Han Language Processing(簡稱HanLP)[7]進(jìn)行分詞和注釋處理。HanLP是Natural Language Processing的一個工具包,基于算法和模型,并具備低耦合、高性能、多功能、新語料等包括自定義的優(yōu)勢,功能包括HMM-Bigram和由字構(gòu)詞等中文分詞、TextBank關(guān)鍵詞提取、TextBank自動摘要、HMM和CRF等詞性標(biāo)注、KMeans等自動推斷聚類數(shù)目、文檔語義相似度計算等。

HanLP有兩種方式引用。

(1)直接在Maven的pom.xml引用hanlp:

com.hankcs

hanlp

portable-x.x.x

(2)下載data數(shù)據(jù)包,該數(shù)據(jù)包存在模型和詞語[7],詞法分析會使用到詞語詞典,句法分析會使用到模型;下載hanlp.properties包,通過修改配置文件引入HanLP-data數(shù)據(jù)包,并將hanlp.properties放到src或resources目錄下進(jìn)行編譯[8]。

示例:“我喜歡在睡前喝一杯牛奶,聽一些輕音樂,因為能幫助我快速入眠?!背绦蜻\(yùn)行后得到的詞法分析結(jié)果如圖1所示,句法分析結(jié)果如圖2所示。

1.4 N-gram模型

N-gram模型[9]的基本思想是在大小為n字節(jié)的滑動窗口中操作文本內(nèi)容,形成長度為n的字節(jié)段序列。每個字節(jié)段稱為一個克計算所有克的出現(xiàn)頻率,并根據(jù)預(yù)設(shè)閾值進(jìn)行過濾,以形成密鑰克列表,即文本的向量特征空間,每個列表克是特征向量維度。這個模型假設(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模型。兩個模型可用公式表示如下:

一元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),這個概率顯然不是很好,運(yùn)用馬爾科夫鏈的假設(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 000個單詞,bigram模型方法可生成6 000×6 000的矩陣,trigram模型可生成6 000×6 000×6 000的矩陣。但其中會含有大量為零的值,導(dǎo)致整個句子的概率會變成零,會出現(xiàn)稀疏矩陣問題。因此,需要利用數(shù)據(jù)平滑技術(shù),目的是使句子N-gram概率之和等于1。算法的原理是對概率空間做重構(gòu),彌補(bǔ)給之前未出現(xiàn)過的N-gram,降低出現(xiàn)過的N-gram的概率,常用的數(shù)據(jù)平滑處理方式[10]如下:①拉普拉斯平滑。要求任何N-Gram在訓(xùn)練語料庫中出現(xiàn)一次或多次。②Good-Turing方法。減少出現(xiàn)非零的次數(shù),并將其他概率分解到0概率中。③拉依達(dá)方法。若測量數(shù)量大于等于50,則非等置信概率計算非零事件的減損值,然后根據(jù)該方法將其分配給其他0個概率事件,低階分布。④絕對損傷法。減少固定次數(shù)非零的出現(xiàn)概率,并將其他概率分解到0概率中。⑤線性損傷法。將次數(shù)減少到個位,并分解到其他0個概率事件。

1.5 利用N-gram模型[10]評估句子合理概率

基于N-gram,每個單詞是獨(dú)立分布的,即P(D,E,F(xiàn)),其中D、E和F沒有任何交集,所以P(D,E,F(xiàn))=P(D)P(E)P(F),比如語句“我熱愛唱歌”,P(D="我",E="熱愛",F(xiàn)="熱愛")=P("我")P(“熱愛”)P("唱歌");每個詞語在語料庫中的統(tǒng)計數(shù)量為我:221;熱愛:272;唱歌:391。

按照以上信息就可以得出P(D,E,F(xiàn)),也就是這個句子正確的概率為P(D,E,F(xiàn))=P(D)P(E)P(F)=13/M*16/M*23/M。

對于二元模型,針對P(D,E,F(xiàn))=P(D)P(E|D)P(F|E),各單詞與左邊相近的詞相關(guān)聯(lián),例如“我熱愛唱歌”,P(D="我",E="熱愛",F(xiàn)="唱歌")=P("我")P(“熱愛”|“我”)P("唱歌"|“熱愛”);每個詞語在語料庫中的統(tǒng)計數(shù)量為我-我:0;我-熱愛:114;我-唱歌:1;熱愛-我:0;熱愛-熱愛:3;熱愛-唱歌:162;唱歌-我:0;唱歌-熱愛:0;唱歌-唱歌:0。

按照以上信息可以得出P(D,E,F(xiàn))等于句子的合理概率。

P(D,E,F(xiàn))=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即條件隨機(jī)場為條件概率分布模型P(A | B),指輸入隨機(jī)變量A條件下的另一組輸出變量B的概率分布模型,為滿足CRF序列模型,必須對每個句子做分割,再提取這個單詞相關(guān)的特性。該信息主要包括詞的從屬語法樹中詞性的結(jié)構(gòu)特征和對其他詞的依賴。根據(jù)句級N-gram的概率值和高稀疏度部分,序列標(biāo)注能更好地分析詞與詞之間的關(guān)系及詞本身的特性,并且不會有稀疏問題,能更準(zhǔn)確地識別出語句錯誤的具體位置。

同時,CRF具備較強(qiáng)的推理能力,能利用相似、非獨(dú)立性的邏輯進(jìn)行訓(xùn)練;也可完全運(yùn)用上下文數(shù)據(jù)作為特性,亦可任意添加其他外部特征,方便模型信息的獲取,使模型更加豐富。此外,CRF的在性能表現(xiàn)上更加優(yōu)秀,具備更強(qiáng)的融合能力,識別效果優(yōu)于MEMM。

2 技術(shù)應(yīng)用

語病辨認(rèn)認(rèn)為檢查句中中存在的錯誤,語病分類為檢測句子的錯誤類型,語病定位為辨認(rèn)句子的錯誤位置。其中,錯誤類型有4種:少詞、多詞、用詞錯誤、詞序錯誤,對于缺詞和錯詞,需提供修正的建議。具體的錯誤樣本數(shù)據(jù)見表1。

(1)引入一些新的語言學(xué)特征(先驗知識)。

(2)概率集成方法(集成多個Bi-LSTM+CRF模型)。

(3)模板匹配用于后處理。

語病修正(對缺詞錯誤,以及使用不當(dāng)錯誤進(jìn)行糾正):系統(tǒng)采用端到端神經(jīng)網(wǎng)絡(luò)模型結(jié)合詞匯點(diǎn)互信息,根據(jù)語境和語言信息騰出語言位置,猜測正確的詞匯量。

目前來看,糾錯算法分為兩個方向:基于規(guī)則、深度模型。中文糾錯分為兩個步驟。第一步是謬誤檢測,第二步是謬誤糾正。

謬誤檢測部分通過中斷單詞segmenter切斷單詞。由于句子包含拼寫錯誤,因此從單詞大小和單詞粒度中切出單詞的結(jié)果中存在許多切割錯誤,檢測到錯誤的結(jié)果形成一組可疑的錯誤位置。

謬誤部分是遍歷所有可疑錯誤位置,并用類似相近的詞語替換錯誤位置的單詞,然后通過語言模型計算句子混淆程度,比較并排序所有候選集結(jié)果,并獲得最佳校正詞。

3 實驗與分析

糾錯方式共計兩步:檢測和糾錯。

檢測主要通過分詞器進(jìn)行切詞,由于切詞結(jié)果存在切分錯誤的情況,所以檢測時分別從字、詞兩個顆粒度觸發(fā)整合,形成錯誤候選集。

通過檢測模型逐個定位疑似錯字詞,長句切分為短句,取得疑似錯字詞的同音詞、同義詞,使用候選字詞進(jìn)行替換,通過翻譯模型進(jìn)行倒序處理,糾錯逐個處理,并集中指定的詞直接取得所有可能正確結(jié)果(PS:對非中文的錯字不做處理)。為了使糾錯效果更好,本次使用了seq2seq_attention模型,但是也存在一個缺點(diǎn),就是模型容易擬合。

(1)中文切詞代碼如下。

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=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_seq

elif cut_type == 'char':

word_seq = list(sentence)

pos_seq =[]

for w in word_seq:

w_p = posseg.lcut(w)

pos_seq.append(w_p[0].flag)

return word_seq,pos_seq

else:

if cut_type == 'word':

return jieba.lcut(sentence)

elif cut_type == 'char':

return list(sentence)

(2)中文糾錯處理邏輯如下。

長句文本切分成短句文本:

sentences = re.split(r";|,|。|\?\s|;\s|,\s",sentence)

調(diào)用模型庫,進(jìn)行倒序操作:

maybe_errors = sorted(maybe_errors,key=operator.itemgetter(2),reverse=True)

遍歷糾錯,逐個處理:

before_sent = sentence[:begin_idx]

after_sent = sentence[end_idx:]

如果集中制定的詞,直接取結(jié)果:

if err_type == error_type["confusion"]:

corrected_item=since.custom_confusion[item]

否則則取出所有可能正確的詞(對非中文的錯字不做處理):

if not is_chinese_string(item):

continue

maybe_right_items = since.generate_items(item)

if not maybe_right_items:

continue

corrected_item = since.lm_correct_item(item,maybe_right_items,before_sent,after_sent)

(3)系統(tǒng)輸入“我們都因該學(xué)會思考”,程序執(zhí)行后檢測出錯誤詞語“因該”,并替換成“應(yīng)該”,最終正確語句為“我們都應(yīng)該學(xué)會思考”。具體實驗結(jié)果如圖3所示。

參 考 文 獻(xiàn)

[1]Lei Zhang,Ming zhou,Haihua Pan.Automatic detecting/correcting errors in Chinese text by an approximate word-matching algorithm[D].Association for Computational Linguistics,2000(10):248-254.

[2]Jianbo Zhao,Mingzheng Li,Weijie Liu,et al.Detection of Chinese Grammatical Errors with Context Representation[M].United Kingdom:ALTA Institute,University of Cambridge,2018:22-24.

[3]Junjie Yu,Zhenghua Li.Chinese Spelling Error Detection and Correction Based on Language Model,Pronunciation,and Shape[J].Proceedings of The Third CIPS-SIGHAN Joint Conference on Chinese Language Processing,2011(10):220-223.

[4]Chuen-Min Huang,Mei-chen Wu,Ching-Che Ch-

ang.Error Detection and Correction Based on Chinese Phonemic Alphabet in Chinese Text[J].Computational Linguistics and Chinese Language Proces-

sing,2007:27-44.

[5]K J Chen,M H Bai.“Unknown word detection for Chinese by a corpus-based learning method,”International Journal of Computational linguistics and Chinese Language Processing[J].Special Issue on Chinese as a Foreign Language,2015(11):27-44.

[6]Jui-Feng Yeh,Sheng-Feng Li,Mei-Rong Wu,et al.Chinese word spelling correction based on N-gram ranked inverted index list.In Proceedings of the 7th SIGHAN Workshop on Chinese Language Processing[J].Proceedings of the Seventh SIGHAN Workshop on Chinese Language Processing,2013(10):43-48.

[7]Yuming Hsieh,Minghong Bai,Kehjiann Chen.Introduction to CKIP Chinese spelling check system for SIGHAN Bakeoff 2013 evaluation[D].Nagoya:Nagoya University,2013:59-63.

[8]張照煌.中文錯別字自動訂正方法初探[J].Communications of COLIPS.1994,4(2):143-149.

[9]KAREN KUKICH.Techniques for Automatically Correcting Words in Text[J].ACM Computing Sureys,1992.24(4):12-14.

[10]張仰森,丁冰青.基于二元接續(xù)關(guān)系檢查的字詞集自動查錯方法[J].中文信息學(xué)報,2000(8):1-2.

猜你喜歡
分詞
分詞在英語教學(xué)中的妙用
耶魯大學(xué)的52歲新生
結(jié)巴分詞在詞云中的應(yīng)用
結(jié)巴分詞在詞云中的應(yīng)用
分詞做狀語的概念解析
最大概率分詞方法研究
高中階段出現(xiàn)的英語懸垂分詞
分詞邏輯主語的理解與應(yīng)用
現(xiàn)在分詞與過去分詞的主要區(qū)別在哪里?
聚焦現(xiàn)在完成進(jìn)行時
襄汾县| 文化| 苗栗市| 静宁县| 白玉县| 富锦市| 疏附县| 休宁县| 金昌市| 南通市| 临潭县| 图片| 承德县| 青田县| 莱芜市| 分宜县| 宝清县| 七台河市| 霍林郭勒市| 潮州市| 马关县| 张家界市| 宁海县| 三都| 台山市| 安泽县| 镇安县| 扬州市| 宁陕县| 玉环县| 内江市| 邢台市| 穆棱市| 扶沟县| 谢通门县| 赣榆县| 叙永县| 磴口县| 望奎县| 晋州市| 秦安县|