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