APP下载

非结构化表格文档数据抽取与组织模型研究

2016-11-18张元鸣陆佳炜

浙江工业大学学报 2016年5期
关键词:字符串数据流结构化

张元鸣,陈 苗,陆佳炜,徐 俊,肖 刚

(1.浙江工业大学 计算机科学与技术学院,浙江 杭州 310023;2.浙江工业大学 机械工程博士后流动站,浙江 杭州 310014)



非结构化表格文档数据抽取与组织模型研究

张元鸣1,2,陈 苗1,陆佳炜1,徐 俊1,肖 刚1,2

(1.浙江工业大学 计算机科学与技术学院,浙江 杭州 310023;2.浙江工业大学 机械工程博士后流动站,浙江 杭州 310014)

针对现有文档数据抽取方法无法抽取多值属性且灵活性不高的问题,提出了一种面向非结构化表格文档的数据抽取方法与组织模型.在分析文档结构特征和数据流特征的基础上,定义了数据流生成基本规则,给出了一个基于规则的数据抽取流程,包括逻辑结构抽取、文档预处理、数据抽取和数据组织等主要步骤,设计实现了单值区域与多值区域数据抽取算法;从文档中抽取的数据被组织成适合于MapReduce分析的结构化数据模型,该模型能够为大数据分析提供模型支持.实验结果表明:该抽取方法具有较高的准确率与召回率,数据组织模型也能够有效地支持大数据分析.

非结构化表格文档;数据抽取;结构化数据模型;数据分析

随着办公自动化的深入实施,表格文档被广泛应用于企事业和政务日常事务处理中,如调查表、业绩表、考核表、职称评审表、审批表和申请书等,这些表格通过办公自动化软件(如Word,WPS,Excel等)编辑而来.由于可编辑的表格文档安全性较低、可移植性也较差,在正式发布或提交之前,往往将其转换为安全性高、可移植强的只读格式的文档,如PDF格式.通过解析这些文件可知,其数据流已不包含可编辑模式下的制表符,仅包括空格和换行符分隔符.将不包含特殊制表符的表格文档称为非结构化表格文档,这些文档往往从Word表格、HTML表格和Excel表格等半结构化表格文档转换得到,具有以下特征:1) 非结构化.不同于Word表格、HTML表格和Excel表格等半结构化表格文档的数据流中含有特殊的制表符,非结构化表格的数据流中往往不包含特殊的制表符,数据仅以空格或换行作为分隔符,是一种较典型的非结构化数据;2) 样式不固定.非结构化表格与实际应用紧密相关,不同应用设计的表格样式往往不同,导致表格样式灵活多样,没有固定的样式;3) 数据混杂.非结构化表格中的数据从类别上可以分为标题区和数据区,从形式上又可以进一步分为单值区域和多值区域,横向排列和纵向排列兼而有之,数据较为混杂;4)价值稀疏.表格文档往往包含了多方面的数据,这些数据混合在一起,价值提取的目标数据仅仅是某一局部的数据,价值相对稀疏.

大数据背景下,海量的非结构化表格文档存储着丰富的有价值的数据,对海量非结构化表格文档分析具有重要的实际意义,而数据抽取和数据组织是实现价值提取的关键步骤[1].数据抽取的目标是从非结构化表格文档中抽取出完整的语义数据,而数据组织的目标是对抽取的数据通过某种逻辑结构组织起来,为数据分析奠定基础.在分析非结构化表格文档结构特征和数据流特征的基础上,提出了一种基于规则的数据抽取方法,并将数据抽取结果组织为适合于MapReduce并行编程模型分析的结构化数据模型,所提出的方法已经在大量非结构化表格文档中进行了实验,具有较高的数据抽准率和召回率,数据组织模型也能满足基于MapReduce的分析需求.

1 相关研究

一般地,电子文档可以分为半结构化文档和非结构化文档,学术界已对两类文档数据抽取方法进行了相关研究.

半结构化文档的数据抽取主要是利用文档中固有的特殊制表符(分隔符)进行数据抽取.潘小燕[2]将最大嫡模型应用于表格数据的抽取,利用DOM Tree模型提取表格数据;宋强等[3]提出了一种非标记化表格抽取算法,实现了非标记化表格数据抽取;王允富[4]提出了一种基于指令系统的Excel表单数据抽取模型,实现了Excel表单数据的自动抽取和自动加载;黄豫清等[5-6]提出了基于XML的数据抽取方法,能够抽取Web中的数据;李澎林等[7]设计了一种基于双字Hash和List相结合的三层词典数据结构,改进最大匹配分词算法提高了抽取的准确度和效率.一般地,对半结构化数据抽取的研究主要是对单元格内的数据进行抽取,不再对同一单元格内的数据再次切分,因此实现较为容易.

非结构化文档的数据抽取主要是对文档中包含的实体属性、关键词等的抽取,抽取的准确性依赖于分词技术和实体识别技术.宋艳娟[8]开发了一种对HTML和PDF抽取的系统,能够抽取科研论文中的重要数据;霍焰[9]设计了一套实体抽取算法,可以抽取业务工作中有用的实体;王云鹏[10]开发了一个基于非结构化数据的抽取与分析系统,并以可视化的方式展示数据抽取结果;CHANG等[11]利用关系表中的属性值对实体集合进行划分,以从中抽取相关实体;刘端阳等[12-13]提对关键词和评论观点的提取方法进行了研究.

非结构化表格文档是一种特殊的非结构化文档,形式上具有半结构化文档的特征,但数据流实际上是非结构化的,其数据抽取既不同于半结构化文档的数据抽取,也不同于非结构化文档的数据抽取.张伯[14]提出了一种基于文字流的表格识别技术,设计并实现了针对某类表格的识别系统,但该技术不适用于处理合并单元格的情况,而且也无法抽取表格列间距过大和竖排表格的情况;刘力[15]提出了针对项目申报书的数据抽取方法,该方法基于模板技术和文本定位算法,该方法仅适用于抽取单值属性的数据;ZHOU等[16-17]将启发式规则应用于列划分和对表格特征进行细化,解决了表格内容抽取的问题,但不适用于存在特殊列结构的表格.

在非结构化数据组织方面,万里鹏[18]设计了一种非结构化到结构化数据转换系统,该系统不支持PDF文档以及结构复杂的文本文件、Word和Excel等格式的文档;冯亚丽等[19]提出了一种基于规则库的非结构化数据转换方法,对非结构化数据进行了统一转换,不足之处在于正确率不高;邹波[20]开发了一种海量非结构化数据组织管理系统,能够对海量非结构化数据进行组织和管理;PENG等[21-22]将XML应用于文档结构的提取和匹配,较好地实现了对表格文本数据的转换和组织.

数据抽取和数据组织是实现海量非结构化表格文档数据分析的关键步骤,在对大量非结构化表格文档进行分析比较的基础上,给出了一种实现简单、准确率高的数据抽取方法,并针对MapReduce设计了一种分布式环境下的结构化数据组织模型,为下一步的数据分析奠定了良好的基础.

2 非结构化表格文档特征分析

非结构化表格文档从形式上看与半结构化表格(如Word表格,Excel表格等)基本相同,但是其生成的数据流却是非结构化的,图1中除了文档中的数据以外,原来的表格线全部被空格和换行符所替换,真实的数据与这些空格和换行符混为一体.

从数据类别看,非结构化表格文档中的数据可分为标题区和数据区,标题区表示数据的性质和类别,数据区表示数据实际取值,如“姓名”为标题区,“陈建伟”为数据区.数据抽取的任务是提取表格中的所有标题区和数据区,数据组织的任务是要建立标题区和数据区的语义联系,以及相关标题区之间的语义关系.

从表格的结构特征看,可分为单值区域和多值区域,单值区域的一个标题区对应一个数据区,即一对一关系;多值表格的一个标题区对应一个或多个数据区,即一对多关.图1为程序自动生成的单值区域表格文档,单值区域的标题区与数据区紧密相联.

姓 名陈建伟推荐晋升(转评)职务小中高单 位杭州市新福小学性别男出生年月1976年12月14日参加工作时间1995年7月教龄19年其中中专中学小学现任教年级三年级19任教学科数学现专业技术职务任职资格小学教师审定时间2004年12月聘任职务小学高级教师资格证书号05011-004-2010-21221聘任时间2004年12月何时何校何专业毕业(肄业)及修业年限1995年6月于杭州师范学院普师专业毕业修业年限3年最高学历(何年何校何专业毕业)2005年6月于杭州师范学院数学本科毕业

图1 单值区域表格文档结构特征

表1为多值区域表格,多值区域的一个标题区对应多个数据区,数据区在数据流中被切分成多行.

为了说明表格文档中单元格对应生成的数据流特征,先定义表格文档的内容和其生成的数据流,然后给出生成规则:

设表中单元格的每行字符串为一个六元组,即

S=(V,L,N,E,F,LC)

其中:V为该行字符串的值;L={s,m}表示该行所属单元格为单行(s)或多行(m);N={s,m}表示该行所属单元格的下一个单元格内容为单行(s)或多行(m);E={s,h}表示该行包括软回车(s)或硬回车(h);F={y,n}表示该行为当前单元格的最后一行(y)或不是最后一行(n);LC={y,n}表示该行所属单元格为表格该行的最后一个单元格(y)或者不是最后一个单元格(n).

再设表格中单元格的每行字符串转换得到的数据流为一个二元组,即

D=(V,A)

其中:V为该行字符串的值;A={sp,e,se}表示转换后在V后新增的分隔符,sp为空格,e为换行,se为空格及换行.

则表格中单元格的字符串根据不同情况生成的数据流规则为

S=(V,s,s,Null,Null,Null)→D=(V,sp)

S=(V,s,m, Null,Null,Null) →D=(V,se)

S=(V,m,Null,h, Null,Null) →D=(V,se)

S=(V,m,Null,s,y,Null) →D=(V,se)

S=(V,m,Null,s,n,Null) →D=(V,e)

S=(V,Null,Null,Null,Null,y) →D=(V,se) 以上多元组中的Null值表示可以取对应元素取值集合中的任意值,这些规则是从非结构化数据流中抽取表格标题区与数据区的重要依据.

3 数据抽取流程及算法

为了提高数据抽取的准确度和灵活性,提出了一种基于规则的非结构化表格文档抽取方法,数据抽取流程如图2所示,包括逻辑结构抽取、文档预处理、数据抽取、数据组织和大数据分析等主要步骤,在该流程中,包括一个数据字典,其作用是存储文档的标题区,作为判定标题区与数据区的基本依据.

图2 非结构化表格文档数据抽取流程Fig.2 The data extraction process of unstructured form document

3.1 逻辑结构抽取

逻辑结构抽取的任务是识别表格的标题区,并建立标题区之间的逻辑关系.一般地,非结构化表格的各标题区不是孤立的,而是存在一定的语义联系,如基本信息中包括姓名、性别和年龄等,工作经历中包括起止时间、工作单位和工作岗位等,需要针对这些标题区域构建较为统一的逻辑结构,为后面的数据抽取提供框架.定义了一个五元组表示表格的逻辑结构:

定义1 非结构化表格逻辑结构可以表示为一个五元组TableStru= 集合,其中,ID表示文档的标识;TupleID表示元组的标识;Title表示标题区;Type ={Single, Multiple},表示标题区的类型,Single表示“单值区域”,Multiple表示“多值区域”;Parent表示该标题的父标题区.

逻辑结构提取的输入是一个不包含任何实际数据的非结构化表格文档,通过匹配数据字典,抽取表格各标题区,并建立逻辑关系,抽取的结果保存在逻辑结构库中.

3.2 单值区域数据抽取

数据抽取是基于表格的结构特征和数据流特征,提取表格中的数据区并建立与标题区的语义联系.根据表格的结构特征,定义以下数据抽取规则:

定义2 若标题区后是数据区,则该区域为单值区域;若标题区后是连续的标题区,则该区域为多值区域.

定义3 标题区和数据区是一对一的关系,且数据区位于标题区之后.

定义4 从当前字符开始的最大字符串如果与数据字典中的某一字符串匹配,则该字符串为一个具有完整语义的标题区,在单值区域中介于两个标题区之间的字符串为数据区.

根据区域划分规则可以将数据流划分为单值区域和多值区域;根据单值区域规则和正向最大匹配规则可以抽取出标题区,如果在两个标题区之间的字符串不为空,则是一个数据区.

单值区域数据抽取的算法是以空格作为分隔符对数据流进行切分,得到一个字符串列表;按顺序对字符串列表进行分析,将当前字符串与数据字典中的标题区进行匹配;利用正向最大匹配规则,将当前字符串与上次的字符串进行拼接得到一个新的字符串,与数据字典中的标题区进行匹配;根据匹配结果执行不同的操作:1) 若拼接字符串匹配成功,则拼接字符串作为标题区;2) 若拼接字符串匹配失败,上次匹配和本次匹配均成功,则上次标题区所对应的数据区为空;3) 若拼接字符串匹配失败,上次匹配成功,本次匹配失败,则本次字符串作为数据区内容;4) 若拼接字符串匹配失败,上次匹配失败,本次匹配成功,则输出一个包括标题区和数据区的结构化多元组;5) 若拼接字符串匹配失败,上次匹配和本次匹配均失败,则拼接字符串作为数据区内容,根据以上匹配结果即可抽取出数据区;最后,将生成的多元组集合输出到文件中.

3.3 多值区域数据抽取

根据多值区域的数据流特征,定义多值区域抽取规则.

定义5 每行的标题区个数与数据区个数相同且顺序一致,一个标题区可以拥有多个数据区.

根据多值区域规则,将多值区域定义为一个(m+1)n的矩阵,即

其中:m+1为多值区域的行数;n为多值区域的列数;aij为多值区域中的字符串值,当i=1时,aij为标题区,当i>1时,aij为数据区.

多值区域数据抽取方法是根据前述定义的数据流生成规则,将抽取的字符串与多值区域矩阵的元素建立对应关系,其基本策略是:若表格中的单元格内容仅是单行字符串或由软回车构成的多行字符串,可以通过空格和换行符对多值区域的数据区进行切分,并依次填入多值区域矩阵.若表格中单元格内容包含具有硬回车的多行字符串,在这种情况下数据流中将产生冗余的空格和换行符,此时可按照空格和回车符识别数据区的个数,同时基于启发式规则进行抽取,常见的启发式规则有:1)成对的符合一般属于同一数据区,如《》,(),“”,‘’等;2)位于特殊符号两边的字符串一般也属于同一数据区,如-,/等;3)含有年、月等语义含义的也属于同一数据区.根据这些启发式规则,合并相应数据区.

多值区域数据抽取的算法是将数据流转换为一个字符串列表,按顺序将字符串列表中的字符串与数据字典进行匹配,得到多值区域矩阵的列数及其标题名称,再以空格和换行符作为分隔符对多值区域的数据区进行切分,搜索切分后的字符串是否含有空格,若有,则空格的前后内容分别是两个数据区的内容,并将它们填入矩阵对应位置,且对应位置不再填入字符串,接下来基于前述的抽取规则和语义规则对切分后的字符串切分为若干个数据区,写入多值区域矩阵的数据区的相应位置;最后,将多值区域矩阵转换为一个多元组集合输出到文件中.

以上算法中所采用的启发式规则适用于含有特殊字符或者特殊汉字的数据区抽取,对于纯文字的数据区,由于没有数据区划分的规则,准确抽取较为困难,这个问题将在实验与分析一节中进一步讨论.

4 数据组织模型及数据分析

4.1 数据组织模型

数据抽取的任务是从非结构化数据流中抽取出标题区与数据区,而数据组织的任务则是将这些数据组织起来,生成结构化数据,为数据分析奠定基础.

在抽取算法中已经说明将提取的数据区连同标题区输出一个结构化多元组,该多元组作为一种结构化数据模型用来组织标题区、数据区以及它们之间的关系,下面给出该结构化数据模型的定义:

定义6 结构化数据模型可以表示为一个六元组DataStru=(ID,TupleID,TitleArea,DataArea, Relation,Foreign),其中,ID表示文档的惟一性标识;TupleID表示元组的惟一性标识;TitleArea表示标题区的值;DataArea表示数据区的值,它既可以是标题区字符串也可以是数据区字符串;Relation={1,0},当值为1时,表示DataArea是TitleArea的子标题,当值为0时,表示DataArea是TitleArea对应的数据区;Foreign表示该标题区的父标题区.

根据以上定义,从非结构化表格文档中抽取得到的多元组集合可以保存在分布式文件中,为数据分析奠定基础.为了说明如何利用得到的数据集,下一节将给出基于MapReduce并行编程模型的数据分析算法.

单值区域表格抽取得到的结构化数据集如下所示:

1. (1,1,“姓名”,“陈建伟”,0,0)

2. (1,2,“推荐晋升(转评)职务”,“小中高”,0,0)

3. (1,8,“其中”,“中专”,1,0)

4. (1,9,“其中”,“中学”,1,0)

5. (1,10,“其中”,“小学”,1,0)

6. (1,11,“中专”,“”,0,8)

7. (1,12,“中学”,“”,0,9)

8. (1,13,“小学”,“19”,0,10)

多值区域表格抽取得到的结构化数据集如下所示:

1. (1,27,“起止时间”,“2009.12.14—16”,0,0)

2. (1,28,“培训项目”,“建筑抗震与设计对策”, 0,0)

3. (1,29,“组织单位”,“浙江省建筑设计研究院”, 0,0)

4. (1,30,“学习情况”,“必修课,60学时,成绩合格”,0,0)

5. (1,31,“起止时间”,“2009.12.14—16”,0,0)

6. (1,32,“培训项目”,“岩土工程设计安全度”, 0,0)

7. (1,33,“组织单位”,“浙江省建筑设计研究院”, 0,0)

8. (1,34,“学习情况”,“必修课,60学时,成绩合格”,0,0)

4.2 基于MapReduce的数据分析

MapReduce是一种非常流行的分布式并行计算模型,被广泛应用于离线海量数据的分析.该模型主要包括Map过程、Reduce两个过程,MapReduce节点接收数据片段,执行用户自定义的Map过程,输出(Key,Value)键值对集合,经过混洗和排序,把具有相同Key值的中间结果进行归并,将归并的结果传输给Reduce节点,最后执行用户自定义的Reduce过程,生成输出结果.

分析的数据来自某省专业技术资格(职务)评审综合表,内容涵盖申报对象的基本数据、教学数据、论文数据、项目数据和获奖数据等,根据前面的数据抽取和数据组织方法将这些文档转换为一个结构化数据集,数据集中的每行包括六个字段:文件标识、行标识、标题区、数据区、关系和外键.下面给出两个较为常见的MapReduce分析算法,一个是统计每个申报对象发表的科技论文数,另一个是统计所有申报对象的平均年龄.

//key:行号

//value:行字符串,对应六元组

Map(String key,String value,Content content):

text =value.split(“,”,2)

EmitIntermediate(text[0],text[1])

//key:文件标识// values: {<行标识,标题区,数据区,关系,外键>}

Reduce(String key,Iterator values,Content content):

int number=0

for each v in values:

records = v.split(“,”)

if(record[1]="姓名")then

name=record[2]

if(record[1]="论文名称")then

number++

Emit(name, number)

为了统计所有申报对象的平均年龄,先由Map函数按标题区对结果集重新组织,输入为<行号,行字符串 >,输出中间结果为<标题区,{<数据区,关系,外键>}>键值对;然后由Reduce函数对中间结果通过匹配“出生年月”关键字得到具体的值,最后输出申报对象平均年龄,实现的算法如下:

//key:行号

//value:行字符串,对应六元组

Map(String key,String value,Content content):

text=value.split(“,”,4)

EmitIntermediate(text[2],text[3])

//key:标题区

//values: {<数据区,关系,外键>}

Reduce(Stringkey,Iteratorvalues,Contentcontent):

if(key=“出生年月”)then

introws=0

doublesum=0

foreachvinvalues:

values=v.split(“,”)

rows++

sum+=nowDate-ParseDate(values[0])

Emit(age,sum/rows)

5 实验与分析

将所提出的数据抽取与数据组织方法应用于某省专业技术资格(职务)综合表文档的处理,这些文档通过某省申报与评审云平台[23]提交,为了防止文档被篡改在提交时都已经转换成PDF格式的文档,是典型的非结构化表格文档,具有3个显著特点:1) 文档格式多样,不同申报系列具有不同的格式,如高校教师系列、教授级高工系列、高级经济师系列等100余个评审系统的综合表文档几乎都不相同;2) 文档内数据丰富,包括了申报对象的基本数据、教学数据、科研数据、获奖数据、工程项目等多种类别的数据;3) 文档体量较大,每年提交的文档近十万份,数据逐年叠加.

表2 非结构化表格文档基本信息Table 2 The basic information of unstructured form document 个

为了方便说明问题,从中选取了高校教师综合表、教授级高工综合表、高级经济师综合表等典型的10种类型的综合表进行数据抽取,每种类型包括200份文档,总计2 000份文档,表2给出了这些文档的单值标题区、单值数据区、多值标题区、多值数据区的统计数据,表中的信息点表示标题区或数据区.

两个常见的评价数据抽取方法的指标是准确率与召回率.准确率用于度量抽取出来的数据中正确的比例,召回率用于度量数据被正确抽取出来的比例.一般情况下,召回率和准确率相互影响,对于同一次抽取的结果,随着召回率的提高,准确率呈下降趋势,随着准确率的提高,召回率呈下降趋势,为了综合评价这两个指标,通常还计算召回率R和准确率P的加权几何平均值Fβ.其计算公式分别为

其中β为召回率和准确率的相对权重,取值一般为1/2,1,2.β=1时,二者同样重要;β>1时,准确率更重要一些;β<1时,召回率更重要一些.

5.1 单值区域抽取结果

用单值区域抽取算法对上述2 000份文档的单值区域进行抽取,得到了如图3所示的实验结果,根据该图可以发现其准确率、召回率和加权几何平均值F1(β=1)值都非常高,其中准确率最大值为99.91%,最小值为99.42%,平均值为99.64%;召回率最大值为99.90%,最小值为99.23%,平均值为99.50%;F1最大值为99.90%,最小值为99.38%,平均值为99.57%.这表明该算法对单值区域的数据抽取非常有效,其原因在于单值标题区与数据区相邻,且标题区与数据区一一对应,结构较为清晰,实现较为容易.

图3 单值区域数据抽取结果Fig.3 The data extraction results of single-value area

造成单值标题区及数据区抽取出错的原因主要来源于用户修改了综合表中已经定义好的标题区,这使得该标题区在数据字典里无法正确匹配,从而导致系统无法正确抽取.如有些申报对象将标题区的“联系电话”修改为了“手机号码联系电话”,这一修改导致单值数据区“手机号码联系电话”抽取出错.

5.2 多值区域抽取结果

用多值区域抽取算法对上述2 000份文档的多值区域进行抽取,实验结果如图4所示.由于多值标题区结构较为复杂,一个标题区对应多个数据区,分属于不同标题区的多个数据区紧密相连,一旦一个数据区抽取出错将会导致抽取出错连锁效应,所以在对多值标题区和数据区抽取时,其出错的概率比单值标题区和数据区抽取出错概率要大,其准确率、召回率和加权几何平均值F1(β=1)值相比单值标题区和数据区抽取有所下降.其中准确率最大值为95.26%,最小值为93.85%,平均值为94.54%;召回率最大值为94.42%,最小值为92.83%,平均值为93.32%;F1最大值为94.36%,最小值为93.54%,平均值为93.92%.

图4 多值区域数据抽取结果Fig.4 The data extraction results of multi-value area

导致多值区域数据抽取出错的主要原因有以下几个:

1) 包含硬回车的数据区.若数据区的第一行字符串后有一个硬回车,则将无法判定后边的一行字符串是属于当前单元格还是属于后面一个单元格,同时该数据区也不含有特殊字符,也无法利用启发式规则.

2) 包含冗余空格的数据区.若数据区的数据之间包含冗余的空格,也可能会误将这些字符串分割为两个数据区.

3) 没有横向表格线的数据区.若表格的各数据区之间没有横向表格线,则此时会将其当成一个数据区来处理,导致不正确的抽取结果.

上述3种情况是导致多值数据区域抽取出错的主要原因,可以看出这些错误都是由于填写表格不太规范导致的,这也是多值区域数据抽取算法今后需要进一步改进的地方,使数据抽取更加智能和准确.

6 结 论

非结构化表格文档是一类被广泛应用的文档类型,具有非结构化、样式不固定、数据混杂和价值系统等特征,海量的这类文档中存储着丰富的有价值的数据,而数据抽取与数据组织是实现数据分析的重要步骤.为此,提出了一种面向非结构化表格文档的数据抽取方法与组织模型,在分析文档结构特征以及数据流特征的基础上,给出了详细的数据抽取流程和数据抽取算法,并将数据抽取的结果组织成一种适合于分布式环境下MapReduce处理的结构化数据模型,大量实验表明所提出的方法具有很高的准确率与召回率,具有较强的实际应用价值.

[1] 孟小峰,慈祥.大数据管理概念、技术与挑战[J].计算机研究与发展,2013,50(1):146-169.

[2] 潘小燕.半结构化文本中的表格信息抽取技术的研究[D].哈尔滨:哈尔滨工业大学,2007.

[3] 宋强,徐鹏,李涓子.半结构化文档中非标记化表格的抽取[J].计算机工程,2005,31(18):81-83.

[4] 王允富.半结构化文本信息抽取方法研究及应用[D].镇江:江苏科技大学,2014.

[5] 黄豫清,戚广志.从WEB文档中构造半结构化信息的抽取器[J].软件学报,2000,11(1):73-78.

[6] HAMMER J, GARCIA M H, CHO J, et al. Extracting semistructured information from the web[C]// Workshop on Management of Semistructured Data. Berlin:Springer,2002:18-25.

[7] 李澎林,张献力,李伟.基于双字Hash机制的交通信息分词算法研究[J].浙江工业大学学报,2014,42(6):596-600.

[8] 宋艳娟.基于XML的HTML和PDF数据抽取技术的研究[D].福州:福州大学,2005.

[9] 霍焰.基于非结构化文档数据的抽取与分析系统的数据抽取[D].天津:天津大学,2011.

[10] 王云鹏.非结构化文档数据抽取与分析系统的设计与实现[D].天津:天津大学,2011.

[11] CHANG C C,HE B,LI C,et al. Structured databases on the web: observations and implications[J]. ACM sigmod record, 2004,33(3):61-70.

[12] 刘端阳,王良芳.基于语义词典和词汇链的关键词提取算法[J].浙江工业大学学报,2013,41(5):545-551.

[13] 张健,钱杰,徐茂兴.网络评论观点抽取的研究[J].浙江工业大学学报,2010,38(4):415-419.

[14] 张伯.基于PDF文字流的表格识别技术的研究[D].北京:北京工业大学,2010.

[15] 刘力.科技文档信息抽取与格式化技术研究[D].长沙:中南大学,2010.

[16] ZHOU J. Table structure recognition based on robust block segmentation[C]//The International Society for Optical Engineering. United States: SPIE, 1999, 3305:22-32.

[17] NEVES L,CARVALHO J M,FACON J,et al. A table-form extraction with artefact removal[C]// Symposium on Applied Computing. Korea:ACM,2007:622-626.

[18] 万里鹏.非结构化到结构化数据转换的研究与实现[D].成都:西南交通大学,2013.

[19] 冯亚丽,张汝坤.基于规则库的非结构化数据格式转换技术研究[J].云南师范大学学报,2012,32(2):58-61.

[20] 邹波.海量非结构化数据的组织研究与实现[D].武汉:华中科技大学,2008.

[21] PENG T,SUN L Y,BAO H. Research of unstructured data transformation based on XML[C]//Internet Technology and Applications. Wuhan:IEEE,2010:1-4.

[22] MANSURI I R, SARAWAGI S. Integrating unstructured data into relational databases[C]// International Conference on Data Engineering. Atlanta:IEEE,2006:29-29.

[23] ZHANG Y M,NI K,LU J W,et al. DOGCP: a domain-oriented government cloud platform based on paas[C]// International Conference on Cyber Security and Cloud Computing. New York:IEEE,2015:115-120.

(责任编辑:刘 岩)

Research on data extraction and organization model for unstructured form document

ZHANG Yuanming1,2, CHEN Miao1, LU Jiawei1, XU Jun1, XIAO Gang1,2

(1.College of Computer Science and Technology, Zhejiang University of Technology, Hangzhou 310023, China;2.Post-Doctoral Research Center of Mechanical Engineering, Zhejiang University of Technology, Hangzhou 310014, China)

In order to improve the flexibility of data extraction from complex unstructured form document, this paper proposes an extraction approach and a structured data model. The document structural features and data flow characteristics of unstructured form document are studied in details. A set of data flow generation rules are concluded. A data extraction process including logical structure extraction, document preprocessing, data extraction, and data organization, is designed. Two extraction algorithms for single-value area and multi-value area of document are implemented. The extracted data are organized into a structured data model that is designed to facilitate data analysis by MapReduce. Experimental results show that the proposed approach has great accuracy rate and recall rate. The structured data model also can effectively meet the requirements of data analysis by MapReduce.

unstructured form document; data extraction; structured data model, data analysis

2016-01-23

浙江省钱江人才计划D类项目 (QJD1302009);浙江省重大科技专项资助项目(2014C01408)

张元鸣 (1977—),男,河南濮阳人,副教授,博士,研究方向为大数据处理、服务计算和并行计算等,E-mail:zym@zjut.edu.cn.

TP391

A

1006-4303(2016)05-0487-08

每个申报对象发表的论文数,先由Map函数对结果集中的行按文件标识进行重组,其输入为<行号,行字符串>,输出中间结果是<文件标识,{<行标识,标题区,数据区,关系,外键>}>;然后由Reduce函数根据前面的中间结果查找申报对象姓名并计算发表的论文数,方法是通过匹配“姓名”关键字得到姓名的值,通过匹配“论文名称”等关键字计算论文数量,最后将姓名和论文数量作为键值对输出,实现算法如下:

猜你喜欢

字符串数据流结构化
促进知识结构化的主题式复习初探
改进的非结构化对等网络动态搜索算法
汽车维修数据流基础(上)
基于文本挖掘的语词典研究
结构化面试方法在研究生复试中的应用
汽车维修数据流基础(下)
左顾右盼 瞻前顾后 融会贯通——基于数学结构化的深度学习
基于数据流特性的MPTCP数据流调度算法研究
SQL server 2008中的常见的字符串处理函数
倍增法之后缀数组解决重复子串的问题