段良濤 郭曙超
摘要:隨著信息技術(shù)的快速發(fā)展,互聯(lián)網(wǎng)越來越朝著智能化的腳步靠近,在人機(jī)交互過程中開始越來越多的使用自然語言。那么對(duì)于輸入自然語言進(jìn)行校對(duì)的研究便日益變成一個(gè)非常緊迫的課題。為了能夠?qū)χ形妮斎胄?duì)有著更加深入的認(rèn)知與了解,該文對(duì)文本校對(duì)的語言模型,策略方法,設(shè)計(jì)思路給與了簡單的分析研究,并設(shè)計(jì)了一個(gè)簡單的文本校對(duì)系統(tǒng),實(shí)現(xiàn)中文語句的文本校對(duì),用于在自動(dòng)問答系統(tǒng)和用戶搜索問句的相關(guān)領(lǐng)域進(jìn)行糾錯(cuò),為用戶提供更好的服務(wù)。
關(guān)鍵詞:文本校對(duì);問答系統(tǒng);語言模型;糾錯(cuò)策略
中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)19-4602-03
Research on Chinese Text Proofreading
DUAN Liang-tao1, GUO Shu-chao2
(1.School of Computer Engineering, Qingdao Technological University, Qingdao 266033, China; 2.Shandong Entry-Exit Inspection and Quarantine Bureau, Qingdao 266000, China)
Abstract: With the rapid development of information technology, the Internet is becoming more and more intelligent, and more and more people use natural language to communicate with the computer, so the research of text proofreading is becoming more and more urgent. In order to understand text proofread better, after analyze and understand the language of the text proofreading model and methods , We have designed a simple text proofreading system to proofread the text in order to sentence correction for question answer system and user‘s search, so that to provide users with better service.
Key words: text proofreading; question and answer system; language model; error correction methods
1 概述
在信息技術(shù)迅猛發(fā)展的今天,人與計(jì)算機(jī)的交互也越來越更加頻繁,計(jì)算機(jī)若是能夠理解自然語言,就會(huì)為計(jì)算機(jī)的智能提升到一個(gè)新的高度,同時(shí)也能夠豐富和方便人們的生活。
在人們輸入自然語言的同時(shí)將會(huì)不可避免出現(xiàn)輸入的錯(cuò)誤,這樣就會(huì)給計(jì)算機(jī)理解人們的意思帶來很大的障礙,所以對(duì)自然語言的文本校對(duì)就顯得特別重要。
糾錯(cuò)功能是指對(duì)于用戶輸入的自然語言問句,系統(tǒng)在經(jīng)過一系列的分析、判斷和糾錯(cuò)后返回經(jīng)過系統(tǒng)糾錯(cuò)后的問句。
糾錯(cuò)功能具有非常豐富的應(yīng)用前景,可以廣泛應(yīng)用于問答系統(tǒng)的中文糾錯(cuò),搜索引擎用戶問句糾錯(cuò)以及其它相關(guān)人機(jī)交互的自然語言糾錯(cuò)中。目前國內(nèi)外已經(jīng)有大量的研究機(jī)構(gòu)和大學(xué)都開展著對(duì)于自然語言糾錯(cuò)的研究。借此,該文對(duì)于自然語言的糾錯(cuò)在此進(jìn)行簡單的剖析。
2 糾錯(cuò)處理的結(jié)構(gòu)
2.1 糾錯(cuò)處理的基本結(jié)構(gòu)
通用的糾錯(cuò)處理的框架圖[6]如圖1所示。
圖1 通用的糾錯(cuò)處理的框架圖
2.2 模塊功能分析
中文糾錯(cuò)主要包括兩大模塊:問句查錯(cuò)模塊與字符串糾正模塊。
問句查錯(cuò)模塊:在該模塊中首先對(duì)文本進(jìn)行分詞然后通過采用一定的語言模型,并結(jié)合相關(guān)的查錯(cuò)策略來定義疑錯(cuò)窗口,判斷出可能出現(xiàn)錯(cuò)誤的字符串;為下一步的糾錯(cuò)處理作出準(zhǔn)備。
字符串糾正模塊:經(jīng)過查錯(cuò)分析后,定義出可能出現(xiàn)的錯(cuò)誤字符串。然后通過一定的工具或者是糾錯(cuò)算法并配合相應(yīng)的詞典,對(duì)詞語進(jìn)行糾錯(cuò),并給出最近的糾錯(cuò)建議。
2.3 糾錯(cuò)的語言模型
在中文的糾錯(cuò)過程中需要考慮兩種語言模型,基于詞的語言模型和基于字符的語言模型。
基于詞的語言模型是需要進(jìn)行分詞和對(duì)于分詞后的詞語進(jìn)行詞性標(biāo)注,通過對(duì)于一句話進(jìn)行分詞后,如果其中包含錯(cuò)誤的字的話,那么就會(huì)出現(xiàn)大量的散串。而后通過對(duì)于散串的處理,結(jié)合字典,進(jìn)行詞語糾正。
基于字符的語言模型與基于詞的語言模型相比,無需進(jìn)行分詞處理。通過n-gram模型,基于大規(guī)模的語料庫進(jìn)行統(tǒng)計(jì),來查找到文本中的局部可能出現(xiàn)的錯(cuò)誤。而后通過上下文依存句法的分析,得到可能出現(xiàn)的詞語錯(cuò)誤,然后進(jìn)行校正。
基于字和基于詞的語言模型采用的都是n-gram語言模型,同時(shí)需要大量的語料庫作為基礎(chǔ)。不同之處在于基于詞的語言模型需要進(jìn)行分詞,而基于字的則不需要,同時(shí)基于字比基于詞的語言模型的使用人群更加廣泛。
2.4 常見的查錯(cuò)策略
2.4.1 英文查錯(cuò)的策略
對(duì)于英文的查錯(cuò)目前主流的方法[2]有兩種:查字典法和N-gram分析法。
查字典法是通過將輸入的n元字符串與字典進(jìn)行匹配,如果匹配不成功,則將n元字符串標(biāo)注為錯(cuò)誤。因?yàn)檫@種匹配采用的是一種硬性匹配,所以這種檢測的方法準(zhǔn)確率非常高,是目前較流行的方法。[5]
n-gram分析法則是在一個(gè)龐大的文本語料的統(tǒng)計(jì)的前提下,將輸入的n元串,分析它們?cè)趎-gram表中的出現(xiàn)頻次,如果頻次過低的話則被判斷為錯(cuò)誤。
2.4.2 中文查錯(cuò)的策略
對(duì)于中文的查錯(cuò)不同于英文的查錯(cuò)[3],因?yàn)樵谥形牡牟殄e(cuò)中不存在錯(cuò)字,只存在的是別字。目前主流的中文查錯(cuò)策略對(duì)比如下[1]:
表1
[\&基于規(guī)則\&基于語料庫\&基于特征與學(xué)習(xí)\&主要技術(shù)\&通過一系列的規(guī)則,將正確的字符串進(jìn)行捆綁,這樣剩下的不能捆綁的字符串就會(huì)被認(rèn)為為錯(cuò)誤。\&通過將n元字符串進(jìn)行捆扎,然后在語料庫的統(tǒng)計(jì)下,在一定閾值的限制下,分析出是否出現(xiàn)錯(cuò)誤。\&先是構(gòu)建字詞混淆集,而后形成候選矩陣,通過動(dòng)態(tài)規(guī)劃與機(jī)器學(xué)習(xí)的方法找到校對(duì)候選字串的最佳路徑,將其與原來的字符串進(jìn)行比較。\&優(yōu)點(diǎn)\&實(shí)現(xiàn)簡單,對(duì)于既定規(guī)則的錯(cuò)誤查詢準(zhǔn)確率較高。\&通過特定領(lǐng)域的語料庫進(jìn)行訓(xùn)練,對(duì)特定領(lǐng)域的文本糾錯(cuò)效率較高。\&準(zhǔn)確率比較高。特征可以多樣性,根據(jù)不同應(yīng)用提取特征。既可以適用局部的語言限制也適應(yīng)與長距離的語言限制。\&缺點(diǎn)\&查錯(cuò)的準(zhǔn)確率受規(guī)則所限,不能窮舉所有的語言規(guī)則。\&準(zhǔn)確率受到訓(xùn)練語料庫的領(lǐng)域類型和語料庫的大小的限制,并且需要進(jìn)行模型優(yōu)化等操作。\&算法的復(fù)雜性太高,很難滿足實(shí)用的需要;同時(shí)存在數(shù)據(jù)稀疏的問題。\&]
2.5 文本校對(duì)處理的基本流程
中文糾錯(cuò)處理的基本流程[1]如下:
1) 首先對(duì)于用戶輸入的問句采用進(jìn)行分詞處理和詞性標(biāo)注;
2) 通過將分詞后的詞語串采用N-gram語言模型進(jìn)行建模;
3) 采用N-gram方法以龐大的語料庫做基礎(chǔ),進(jìn)行錯(cuò)誤字符的定位操作,檢測到可能出錯(cuò)的位置;
4) 將疑錯(cuò)窗口中的字符再通過詞性的N-gram方法進(jìn)行進(jìn)一步檢測,如果檢測為不合理,則判定為錯(cuò)誤,定義為出錯(cuò)字符串;
5) 將出錯(cuò)字符串進(jìn)行糾錯(cuò)處理,給出最近的相似詞語,進(jìn)行返回;
6) 組合成糾錯(cuò)后的語句返回給用戶或者進(jìn)行下一步處理。
2.6 文本校對(duì)模塊處理示例
例如輸入問句:今天的天起怎么樣?
首先問句進(jìn)入問句查錯(cuò)模塊模塊,在該模塊中首先進(jìn)行分詞,這樣出錯(cuò)的字符串“天氣”便會(huì)被定義為散串“天”、“起”。然后采用基于詞的語言模型和基于語料庫的n-gram查錯(cuò)策略對(duì)散串進(jìn)行二元接續(xù)關(guān)系的統(tǒng)計(jì)分析,在問句查錯(cuò)模塊中定位出可能出錯(cuò)的字符串[天,起];
接下進(jìn)入錯(cuò)誤字符串糾正模塊,將出現(xiàn)的字符散串組合成一個(gè)連續(xù)的字符串”天起”,根據(jù)一定的字符串糾正算法對(duì)出錯(cuò)的字符串”天起”進(jìn)行糾正,得到最為接近的拼寫糾錯(cuò)建議為“天氣”,然后將“天氣”作為糾錯(cuò)后的字符串進(jìn)行返回。
3 糾錯(cuò)系統(tǒng)的實(shí)現(xiàn)
在對(duì)糾錯(cuò)系統(tǒng)有了一定的了解分析之后,我們了解到糾錯(cuò)常用的語言模型和相關(guān)的策略,我們接下來實(shí)現(xiàn)一個(gè)簡單的糾錯(cuò)系統(tǒng)。
3.1 技術(shù)支持
系統(tǒng)語言采用java進(jìn)行實(shí)現(xiàn),java語言是目前比較流行的開發(fā)語言,而且其可移植性比較好。
系統(tǒng)采用的數(shù)據(jù)庫為mysql,mysql適用于多個(gè)操作系統(tǒng),開源免費(fèi),它強(qiáng)大的功能受到越來越多人的青睞。
系統(tǒng)采用的分詞工具是ansj分詞工具,ansj是一個(gè)免費(fèi)的java中文分詞工具,采用的是中科院的ictclas中文分詞算法,可以用于人名的識(shí)別,地名和組織機(jī)構(gòu)的名稱識(shí)別,支持行業(yè)和用戶自定義詞典,分詞準(zhǔn)確率較高,同時(shí)可以進(jìn)行詞性標(biāo)注。
系統(tǒng)采用的糾錯(cuò)工具為Lucene的spellchecker糾錯(cuò)工具。它支持中英文的糾錯(cuò),對(duì)于三個(gè)字以上詞語的糾錯(cuò)能力較強(qiáng),對(duì)于兩個(gè)字的詞語的糾錯(cuò)能力較弱。
系統(tǒng)采用的語料庫是“《人民日?qǐng)?bào)》199801標(biāo)注語料”,該語料庫已經(jīng)由人工進(jìn)行詞性標(biāo)注和分詞。
3.2 系統(tǒng)的功能模塊設(shè)計(jì)
糾錯(cuò)系統(tǒng)的三個(gè)模塊組成:疑錯(cuò)窗口定位,疑錯(cuò)窗口的詞性分析,錯(cuò)誤詞語的糾錯(cuò)。
疑錯(cuò)窗口定位:對(duì)問句分詞后的字符串進(jìn)行n-gram分析,以語料庫統(tǒng)計(jì)作為基礎(chǔ),定位可能出現(xiàn)的詞語位置。
詞性分析:分析疑錯(cuò)窗口中的上下文的詞性接續(xù)關(guān)系,也是以語料庫統(tǒng)計(jì)為基礎(chǔ),若滿足一定的閾值則判斷為正確,若統(tǒng)計(jì)結(jié)果小于一定的閾值,則定義為錯(cuò)誤。
詞語糾錯(cuò):對(duì)于出現(xiàn)的錯(cuò)誤,采用spellchecker工具對(duì)于定位出來的錯(cuò)誤詞語進(jìn)行糾錯(cuò),如果糾錯(cuò)成功,則返回糾錯(cuò)后的問句;如果沒有糾錯(cuò)成功,則提示可能出現(xiàn)的錯(cuò)誤。
3.3 系統(tǒng)采用的語言模型及查錯(cuò)策略
系統(tǒng)采用的語言模型是基于詞的基于詞的語言模型,所以需要首先進(jìn)行文本的分詞處理;系統(tǒng)采用的查錯(cuò)策略是基于語料庫的n-gram方法對(duì)分詞后的字符串進(jìn)行統(tǒng)計(jì)分析來進(jìn)行出錯(cuò)字符串的定位。
4 總結(jié)
本文對(duì)糾錯(cuò)系統(tǒng)進(jìn)行了分析,剖析,總結(jié)出了糾錯(cuò)系統(tǒng)的常用框架,并分析了目前糾錯(cuò)系統(tǒng)中的主流方法與思想。在對(duì)糾錯(cuò)常見策略的掌握基礎(chǔ)之上進(jìn)行了開發(fā)實(shí)踐。該文提到的糾錯(cuò)系統(tǒng)的實(shí)現(xiàn)方法具有一定的通用性與實(shí)用性,可以滿足相關(guān)的糾錯(cuò)的功能,為自然語言輸入糾錯(cuò)比如問答系統(tǒng)的糾錯(cuò)和用戶搜索問句的糾錯(cuò)提供了一定的幫助。同時(shí)系統(tǒng)糾錯(cuò)的準(zhǔn)確率還有待提高,需要提高分詞的準(zhǔn)確率,不斷擴(kuò)大語料庫,還需要在語法意義上對(duì)于中文糾錯(cuò)進(jìn)一步進(jìn)行提升。
參考文獻(xiàn):
[1] 朱磊.自然語言處理之漢語文本自動(dòng)校對(duì)[D].成都:電子科技大學(xué),2005.
[2] 秦英.問答系統(tǒng)中文輸入糾錯(cuò)技術(shù)研究[D].濟(jì)南:山東大學(xué),2012.
[3] 陳智鵬.基于統(tǒng)計(jì)的搜索引擎中文輸入糾錯(cuò)技術(shù)研究[D].北京:北京郵電大學(xué).2010.
[4] 宗成慶.統(tǒng)計(jì)自然語言處理[M].北京:清華大學(xué)出版社,2008.
[5] 胡曉清.網(wǎng)絡(luò)搜索引擎中文糾錯(cuò)功能實(shí)例剖析[J].圖書情報(bào)工作,2008(1):1-6.
[6] 吳巖.中文自動(dòng)差錯(cuò)與人機(jī)交互糾錯(cuò)系統(tǒng)的研究與實(shí)現(xiàn)-簡介語料中文自動(dòng)校對(duì)系統(tǒng)[C].語言計(jì)算與基于內(nèi)容的文本處理—全國第七屆計(jì)算語言學(xué)聯(lián)合學(xué)術(shù)會(huì)議論文集,2003.