摘 要: 随机噪音会引起半结构化数据结构和语义的变化,从而造成半结构化数据提取或向结构化自动转换障碍,为此本文在分析噪声对半结构化文本数据带来的影响基础下,提出了一种基于语法模板结构知识的自动化分词处理思路和方法,可以提高带噪音的半结构化文本数据自动分词准确性,可为类似问题提供参考。
关键词: 半结构数据;分词;模板;噪音
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.