摘 要: 隨機(jī)噪音會(huì)引起半結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)和語義的變化,從而造成半結(jié)構(gòu)化數(shù)據(jù)提取或向結(jié)構(gòu)化自動(dòng)轉(zhuǎn)換障礙,為此本文在分析噪聲對(duì)半結(jié)構(gòu)化文本數(shù)據(jù)帶來的影響基礎(chǔ)下,提出了一種基于語法模板結(jié)構(gòu)知識(shí)的自動(dòng)化分詞處理思路和方法,可以提高帶噪音的半結(jié)構(gòu)化文本數(shù)據(jù)自動(dòng)分詞準(zhǔn)確性,可為類似問題提供參考。
關(guān)鍵詞: 半結(jié)構(gòu)數(shù)據(jù);分詞;模板;噪音
0 引言
用特定語法結(jié)構(gòu)的文本形式來記錄原本結(jié)構(gòu)化的數(shù)據(jù)信息依然是實(shí)際環(huán)境中常見的現(xiàn)象,而這種文本數(shù)據(jù)就是半結(jié)構(gòu)化數(shù)據(jù)形式之一。關(guān)于半結(jié)構(gòu)化數(shù)據(jù)的處理問題得到了廣泛研究,參考文獻(xiàn)[1-3]分別研究對(duì)Web形式的半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行提取的方法,其對(duì)應(yīng)的數(shù)據(jù)依據(jù)相應(yīng)的Web語言標(biāo)準(zhǔn)組織,其中有對(duì)應(yīng)的參考節(jié)點(diǎn)(頁面元素標(biāo)記符號(hào))。參考文獻(xiàn)[4-6]根據(jù)不同應(yīng)用背景,研究了具有半結(jié)構(gòu)化特征的文本數(shù)據(jù)提取技術(shù),其數(shù)據(jù)均是由機(jī)器依據(jù)固定語法規(guī)則自動(dòng)生成,不會(huì)有錯(cuò)誤輸入干擾。
但是以人工為主要輸入方式的半結(jié)構(gòu)化記錄中,卻總會(huì)出現(xiàn)一些錯(cuò)誤錄入現(xiàn)象,比如字符錯(cuò)誤、字符多余以及字符缺失等。將有錯(cuò)誤輸入的數(shù)據(jù)稱為帶噪音的半結(jié)構(gòu)化文本數(shù)據(jù),由于噪音可能是多余或缺失的分詞標(biāo)記符,也可能是字段值中的字符,且位置多變,從而導(dǎo)致上述文獻(xiàn)中技術(shù)不再適用。因此需要提出具有一定容錯(cuò)能力的分詞和數(shù)據(jù)提取方法,實(shí)現(xiàn)對(duì)帶噪音的半結(jié)構(gòu)化文本數(shù)據(jù)進(jìn)行自動(dòng)分詞和數(shù)據(jù)提取功能。
鑒于此,本文在分析噪音對(duì)半結(jié)構(gòu)化文本數(shù)據(jù)自動(dòng)分詞造成的影響基礎(chǔ)上,提出一種基于語法模板結(jié)構(gòu)知識(shí)的自動(dòng)分詞方法,可用來處理一定污染程度下的帶噪音半結(jié)構(gòu)化文本數(shù)據(jù),從而可為類似問題提供處理及研究的參考和借鑒。
1 半結(jié)構(gòu)化文本文件的概念
半結(jié)構(gòu)化數(shù)據(jù)范圍相對(duì)較廣,廣義上可認(rèn)為其數(shù)據(jù)一般是按照某個(gè)固定的結(jié)構(gòu)或格式進(jìn)行組織或生成。而本文所述半結(jié)構(gòu)化文本數(shù)據(jù)主要是指以字符為元素,按照一定的語法結(jié)構(gòu)所組成的純文本信息。為了便于討論,下面以某單位人事信息數(shù)據(jù)為例,就半結(jié)構(gòu)化文本記錄和文件進(jìn)行說明。
半結(jié)構(gòu)化文本記錄:對(duì)應(yīng)于一個(gè)字符串,用來存儲(chǔ)一個(gè)原本結(jié)構(gòu)化的數(shù)據(jù)記錄;該半結(jié)構(gòu)化字符串具有某個(gè)特定的語法結(jié)構(gòu),并以某種特殊字符(空格、正反斜杠、TAB及“|”等)為相鄰字段間的分割標(biāo)記,把原結(jié)構(gòu)化記錄中的各字段依次從左至右顯式分開,便于進(jìn)行處理。如圖1(a)所示是同一結(jié)構(gòu)化記錄用不同分隔符鏈接而成的半結(jié)構(gòu)化字符串示例。
半結(jié)構(gòu)化文本數(shù)據(jù)文件:是指以某半結(jié)構(gòu)化語法為模板,把大量結(jié)構(gòu)化數(shù)據(jù)記錄以半結(jié)構(gòu)化字符串形式進(jìn)行存儲(chǔ)或記錄的文本文件,文件中每行字符串表示一個(gè)單獨(dú)的數(shù)據(jù)記錄。圖1(b)中間的文本記錄就是某數(shù)據(jù)文件的部分示例。
圖1中所示的半結(jié)構(gòu)化字符串雖然不具備關(guān)系數(shù)據(jù)庫中的結(jié)構(gòu)化特性,但由于其中有明顯的字段分割標(biāo)記,從而可以利用指定的正則表達(dá)式或者類似功能的if-else等判定邏輯對(duì)記錄進(jìn)行自動(dòng)分割和字段提取。
2 噪音的出現(xiàn)及其影響
2.1 噪音的定義及示例
在文本數(shù)據(jù)的輸入過程中,凡是沒有按照規(guī)定的語法結(jié)構(gòu)和語義規(guī)范進(jìn)行輸入從而造成記錄應(yīng)有結(jié)構(gòu)變化或語義變化的字符,都稱為噪音。通俗地說,噪音是相對(duì)正確數(shù)據(jù)而言的,多余、缺失或錯(cuò)寫的字符均為噪音。
一條記錄中可出現(xiàn)不同的噪音,圖2是不同噪音記錄示意。圖中第一條記錄是按照某個(gè)模板生成的正確記錄,2~6號(hào)是融入不同噪音的結(jié)果。當(dāng)然這只是幾個(gè)簡(jiǎn)單噪音示例,由于噪音出現(xiàn)位置和噪音值的隨機(jī)性,實(shí)際的帶噪可能性更復(fù)雜多樣。
2.2 噪音帶來的影響
假設(shè)某半結(jié)構(gòu)化文本數(shù)據(jù)的模板是:t={字段數(shù)=5,相鄰字段組織為“字段i+空格+字段j”},比如記錄示例“200102 張曉 1982-01-02 科員 財(cái)務(wù)處”。對(duì)其進(jìn)行自動(dòng)處理或轉(zhuǎn)化,可以以空格為分詞判定依據(jù),并使用分詞邏輯知識(shí)“當(dāng)檢測(cè)到空格序列(一個(gè)或多個(gè)連續(xù)空格)兩側(cè)均出現(xiàn)非空格字符時(shí),視該空格序列為兩個(gè)字段的分割標(biāo)記”,從而實(shí)現(xiàn)自動(dòng)分詞和向結(jié)構(gòu)化數(shù)據(jù)庫的轉(zhuǎn)化。但是當(dāng)其中融入了噪音時(shí),上述簡(jiǎn)單分詞知識(shí)和方法就可能出現(xiàn)分析錯(cuò)誤,比如其姓名值“張曉”中多輸入了一個(gè)空格成為“張 曉”,此時(shí)上述分詞方法失效,具體示例見圖3。
因姓名中所出現(xiàn)的多余空格導(dǎo)致一系列的字段含義錯(cuò)誤,最終結(jié)果如圖4中第二條記錄所示。
為了進(jìn)一步展現(xiàn)噪音的影響,對(duì)圖2中所示噪音文件按照上述單純的“空格分詞判定”的分詞方法進(jìn)行自動(dòng)分詞,結(jié)果如圖4所示。
從圖4可以看出,結(jié)果中出現(xiàn)了大量的字段含義錯(cuò)誤,說明噪音會(huì)導(dǎo)致在分詞后的字段含義完全或部分錯(cuò)誤,從而成為無法使用的錯(cuò)誤數(shù)據(jù)。而實(shí)際環(huán)境下,噪音可能更加復(fù)雜多樣,影響更嚴(yán)重。
3 基于知識(shí)的噪音處理方法設(shè)計(jì)及示例
3.1 基于知識(shí)的噪音處理模塊設(shè)計(jì)
噪音的出現(xiàn)為傳統(tǒng)的自動(dòng)分詞方法帶來了挑戰(zhàn)和困難,使得以往單純依靠顯式分隔符為判定依據(jù)的分詞方法不能很好地進(jìn)行處理。為此,需要考慮對(duì)帶噪音的半結(jié)構(gòu)化文本數(shù)據(jù)的自動(dòng)化處理方法。
本部分將介紹一種基于模板知識(shí)的帶噪音半結(jié)構(gòu)化文本數(shù)據(jù)自動(dòng)分詞方法,其基本思路如圖5。
圖5中,知識(shí)庫是有關(guān)待處理的半結(jié)構(gòu)化文本數(shù)據(jù)對(duì)應(yīng)的模板知識(shí)。模板知識(shí)是指包含用于形成規(guī)范的半結(jié)構(gòu)化記錄字符串時(shí)所要遵循的語法規(guī)則、字段數(shù)量、各字段值組成規(guī)則等。
分詞處理模塊以半結(jié)構(gòu)化文本數(shù)據(jù)為輸入,輸入數(shù)據(jù)可能夾雜有不同的噪音。為此處理模塊把傳統(tǒng)分詞方法和利用知識(shí)庫中分詞知識(shí)分詞的方法相結(jié)合,對(duì)待分詞的半結(jié)構(gòu)化文本數(shù)據(jù)進(jìn)行分詞。如果輸入數(shù)據(jù)中的噪音在綜合處理辦法的范圍之內(nèi),就可以被正確處理,從而提高自動(dòng)分詞的有效性。
3.2 基于知識(shí)的噪音處理示例
為了更形象地介紹3.1中所述處理思路和模塊設(shè)計(jì),本節(jié)將用如下示例進(jìn)行說明。
3.2.1 分詞知識(shí)獲取
仍以圖1(b)所示半結(jié)構(gòu)化文本數(shù)據(jù)為例,假設(shè)其對(duì)應(yīng)的基本規(guī)范為:
數(shù)據(jù)記錄按照結(jié)構(gòu)模板“(工號(hào),姓名,年齡,職務(wù),部門)”進(jìn)行組織,各相鄰字段使用1個(gè)空格符號(hào)相隔離,工號(hào)字段值由6位數(shù)字組成,姓名由2~4個(gè)漢字構(gòu)成,年齡字段值按照格式“xxxx-xx-xx”構(gòu)成且x是數(shù)字,職務(wù)字段值只能從值域{科員、副科長(zhǎng)、科長(zhǎng)、副處長(zhǎng)、處長(zhǎng)}中選擇,部門字段值只能從{財(cái)務(wù)科、保衛(wèi)科、辦公室、規(guī)劃科}中選擇。
那么通過對(duì)上述文本記錄形成規(guī)范進(jìn)行規(guī)范化處理后可形成如下用于分詞判定的知識(shí):
(1)記錄字段數(shù)量:5
(2)字段名及順序:(工號(hào),姓名,年齡,職務(wù),部門)
(3)相鄰字段分詞符:空格
?。?)第一字段(工號(hào)字段);
特征:{組成字符:數(shù)字;長(zhǎng)度:6}
?。?)第二字段(姓名字段);
特征:{組成字符:漢字;長(zhǎng)度:2~4}
(6)第三字段(年齡字段);
特征:{組成字符:數(shù)字;長(zhǎng)度:10;格式:xxxx-xx-xx}
?。?)第四字段(職務(wù)字段);
特征:{組成字符:漢字;長(zhǎng)度:3;
值域:{科員、副科長(zhǎng)、科長(zhǎng)、副處長(zhǎng)、處長(zhǎng)}}
?。?)第五字段(部門字段);
特征:{組成字符:漢字;長(zhǎng)度:3;
值域:{財(cái)務(wù)科、保衛(wèi)科、辦公室、規(guī)劃科}}
3.2.2 帶噪音的記錄分詞示例
如圖6所示,當(dāng)輸入的噪音為“200102 張 曉 1982-01-02 科員 保衛(wèi)科”時(shí),分詞模塊從文本記錄的第一個(gè)字段開始逐個(gè)字符進(jìn)行處理。
利用知識(shí)(3)進(jìn)行分詞,且將連續(xù)空格作為一個(gè)空格看待,當(dāng)處理至“張”時(shí),發(fā)現(xiàn)左側(cè)除空格外所有字符都是數(shù)字,這時(shí)可用知識(shí)(4)中工號(hào)字段特征“組成字符為數(shù)字”和(5)中姓名字段特征“組成字符為漢字”兩個(gè)特征為分詞依據(jù),判定“張”左側(cè)處是兩字段的分界線,從而正確提取出第一字段值“200102”。
繼續(xù)對(duì)剩余字符串分割并提取姓名字段,當(dāng)檢查至“張 曉”子串中的空格時(shí),對(duì)左右兩側(cè)字符類型判定,均屬于漢字,由于此處不符合(5)中姓名字段特征“組成字符為漢字”和(6)中年齡字段特征“組成字符:數(shù)字”的要求,故此處不作為分割點(diǎn)。
繼續(xù)處理至“1982-01-02”的第一個(gè)字符時(shí),會(huì)判定字符“1”的左側(cè)為姓名和年齡字段的分界線,因?yàn)榇宋恢脙蓚?cè)左邊為漢字右邊為數(shù)字,符合(5)中姓名字段特征“組成字符為漢字”和(6)中年齡字段特征“組成字符:數(shù)字”的要求,因此正確分割和提取出姓名字段值“張 曉”(進(jìn)一步可以通過去空格操作還原為“張曉”)。剩余部分由于沒有噪音,可以通過純粹的空格分詞處理得到正確分詞。
同理,利用圖7所示過程,可以對(duì)諸如圖2中第2、4和5中“多余空格”這樣的噪音進(jìn)行處理,達(dá)到正確分詞的目的。也可以進(jìn)一步利用“工號(hào)是6位數(shù)字”這個(gè)特征對(duì)諸如第4、6行中工號(hào)字段值“20010 2”和“200,102”中多余空格和‘,’噪音進(jìn)行消除。
3.3 輸入法噪音處理
考慮輸入法、鍵盤位置以及相似字符等的影響,可能會(huì)產(chǎn)生形似、音同音似等錯(cuò)誤輸入問題,如圖8所示,分別是形似和同音字錯(cuò)誤。借助于年齡字段特征“組成字符:數(shù)字”以及字母‘l’與數(shù)字字符‘1’形似的知識(shí),可以推理此處是錯(cuò)將數(shù)字1輸入為字母l,因此可作出相應(yīng)的修改或者修改建議;對(duì)于圖中職務(wù)字段值“科運(yùn)”,可利用知識(shí)(7)有關(guān)職務(wù)字段的特征“值域:{科員、副科長(zhǎng)、科長(zhǎng)、副處長(zhǎng)、處長(zhǎng)}”以及拼音“keyuan”和“keyun”的前綴相似這個(gè)特征,推斷出“科運(yùn)”應(yīng)該修改為“科員”的結(jié)論,從而消除這樣的噪音帶來的語音影響。
4 不可處理噪音
上面介紹的方法所能夠處理的噪音必須在模板知識(shí)能夠包含的噪音范圍之內(nèi),但有的噪音不在該范圍之內(nèi),因此不能夠被發(fā)現(xiàn)或處理,這樣的噪音就屬于不可處理噪音范圍。
如圖9(a)所示是從圖2中節(jié)選出的第3、5、7行文本記錄,這些記錄中出現(xiàn)的噪音完全改變了字段語義、文本語法結(jié)構(gòu),以及違反了分割的基本知識(shí)。圖9(b)給出了按照上述處理步驟得到的結(jié)果,可以看出,其分詞和去噪結(jié)果錯(cuò)誤不可用。
對(duì)于此類噪音,需要研究更具針對(duì)性的算法,比如采用類似數(shù)據(jù)庫中引用完整性的思維,或者參考文獻(xiàn)[7]中的思路,幫助發(fā)現(xiàn)類似“張曉”錯(cuò)打?yàn)椤袄顣浴边@樣的噪音。
而對(duì)于類似記錄7中這種嚴(yán)重的記錄結(jié)構(gòu)和語義錯(cuò)誤問題,可能就需要通過人工處理方式來進(jìn)行噪音處理。
5 結(jié)束語
本文分析了噪音對(duì)半結(jié)構(gòu)化文本數(shù)據(jù)的自動(dòng)分詞問題帶來的影響,同時(shí)提出了一種基于語法模板結(jié)構(gòu)知識(shí)的自動(dòng)分詞方法。該方法在把語法模板轉(zhuǎn)化為可用的分詞知識(shí)前提下,依照字段數(shù)量、字段順序、字段構(gòu)成特征等比較對(duì)象,對(duì)帶噪音的記錄進(jìn)行分詞判定。通過初步的實(shí)驗(yàn)發(fā)現(xiàn),該方法具有較好的抗噪音效果,能有效提高分詞的正確率。當(dāng)然由于文中方法依賴于構(gòu)成半結(jié)構(gòu)化文本數(shù)據(jù)的語法模板信息,其能夠處理的噪音范圍也會(huì)受所在模板信息充分度和語法模板結(jié)構(gòu)本身的影響,因此對(duì)于那些語法結(jié)構(gòu)簡(jiǎn)單、相鄰字段特征差別不明顯、模板蘊(yùn)含信息不充分的帶噪音數(shù)據(jù),其分詞效果提高不明顯。進(jìn)一步,還需要研究模板自動(dòng)獲取技術(shù)及其中深層規(guī)則挖掘技術(shù),從而使得該方法具有更好的抗噪性和分詞準(zhǔn)確率。
參考文獻(xiàn)
[1] 裴松,武彤.擴(kuò)展哈弗曼前綴編碼實(shí)現(xiàn)XML數(shù)據(jù)與關(guān)系數(shù)據(jù)轉(zhuǎn)換[J].微型機(jī)與應(yīng)用,2013,32(17):56-59.
[2] 李亞紅,趙冬玲.半結(jié)構(gòu)化數(shù)據(jù)的形式化描述及數(shù)據(jù)抽取方法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(4):145-148.
[3] 安增文,王超,徐杰鋒.基于機(jī)器學(xué)習(xí)的網(wǎng)頁正文提取方法[J].微型機(jī)與應(yīng)用,2010,29(12):4-6.
[4] 張雨佳,蘇中濱,吳華瑞,等.半結(jié)構(gòu)化數(shù)據(jù)的動(dòng)態(tài)樹存儲(chǔ)模型研究[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(5):86-89.
[5] 王偉鈞,馬曉凱.基于證券行業(yè)半結(jié)構(gòu)化數(shù)據(jù)的抽取技術(shù)[J].成都大學(xué)學(xué)報(bào),2008,27(2):127-130.
[6] 王海濤,曹存根,高穎.基于領(lǐng)域本體的半結(jié)構(gòu)化文本知識(shí)自動(dòng)獲取方法的設(shè)計(jì)和實(shí)現(xiàn)[J].計(jì)算機(jī)學(xué)報(bào),2005,28(12):2010-2017.
[7] 李春雨.基于詞典和語素的交集型歧義消除模型[J].微型機(jī)與應(yīng)用,2013,32(4):12-14.