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