CN105630916B - 一种大数据环境下非结构化表格文档数据抽取与组织方法 - Google Patents
一种大数据环境下非结构化表格文档数据抽取与组织方法 Download PDFInfo
- Publication number
- CN105630916B CN105630916B CN201510969896.9A CN201510969896A CN105630916B CN 105630916 B CN105630916 B CN 105630916B CN 201510969896 A CN201510969896 A CN 201510969896A CN 105630916 B CN105630916 B CN 105630916B
- Authority
- CN
- China
- Prior art keywords
- data
- character string
- header area
- multivalue
- form document
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000000605 extraction Methods 0.000 claims abstract description 17
- 238000010276 construction Methods 0.000 claims description 17
- 239000000284 extract Substances 0.000 claims description 13
- 239000011159 matrix material Substances 0.000 claims description 13
- 230000008520 organization Effects 0.000 claims description 11
- 238000007405 data analysis Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000013075 data extraction Methods 0.000 claims description 6
- 238000013499 data model Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 238000011430 maximum method Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 claims description 2
- 238000000547 structure data Methods 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 7
- 238000011160 research Methods 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- PEDCQBHIVMGVHV-UHFFFAOYSA-N Glycerine Chemical compound OCC(O)CO PEDCQBHIVMGVHV-UHFFFAOYSA-N 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Machine Translation (AREA)
Abstract
本发明专利涉及一种大数据环境下非结构化表格文档数据抽取与组织方法。首先,分析了非结构化表格文档的结构特征和数据流特征,定义了数据抽取规则;其次,给出了非结构化表格文档数据抽取流程与抽取算法;再次,给出了一种将抽取结果转换为结构化数据的组织方法;最后,给出了基于MapReduce并行编程模型对所得到的结构化数据集进行分析的方法。本方法能够为大数据环境下挖掘非结构化表格文档蕴藏的知识提供技术支持。
Description
技术领域
本发明专利涉及一种大数据环境下非结构化表格文档数据抽取与组织方法。首先,分析了非结构化表格文档的结构特征和数据流特征,定义了数据抽取规则;其次,给出了非结构化表格文档数据抽取流程与抽取算法;再次,给出了一种将抽取结果转换为结构化数据的组织方法;最后,给出了基于MapReduce并行编程模型对所得到的结构化数据集进行分析的方法。本方法能够为大数据环境下挖掘非结构化表格文档蕴藏的知识提供技术支持。
背景技术
随着办公自动化的广泛应用,表格文档被广泛应用于企事业和政务日常事务处理中,如调查表、业绩表、考核表、职称评审表、审批表、申请书等,这些表格通过办公自动化软件(如Word、WPS、Excel等)编辑而来。由于可编辑的表格文档安全性较低、可移植性也较差,在正式发布或提交之前,往往将其转换为安全性高、可移植强的只读格式的文档,如PDF格式。通过解析这些文件可知,其数据流已不包含可编辑模式下的制表符,仅包括空格和换行符分隔符。
将不包含特殊制表符的表格文档称为非结构化表格文档,这些文档往往从Word表格、HTML表格、Excel表格等半结构化表格文档转换得到,其主要特征包括:(1)非结构化:不同于Word表格、HTML表格、Excel表格等半结构化表格文档的数据流中含有特殊的制表符,非结构化表格的数据流中往往不包含特殊的制表符,数据仅以空格或换行作为分隔符,是一种较典型的非结构化数据流;(2)样式不固定:非结构化表格与实际应用紧密相关,不同应用设计的表格样式往往不同,导致表格样式灵活多样,没有固定的样式;(3)数据混杂:非结构化表格中的数据从类别上可以分为标题区和数据区,从形式上又可以进一步分为单值区域和多值区域,横向排列和纵向排列兼而有之,数据较为混杂;(4)价值稀疏:表格文档往往包含了多方面的数据,这些数据混合在一起,价值提取的目标数据仅仅是某一局部的数据,价值相对稀疏。
大数据背景下,企事业单位和政务部门已积累或快速产生海量的非结构化表格文档,其中存储着丰富的有价值的数据,对这些海量非结构化表格文档分析具有重要的实际意义,而数据抽取和数据组织是实现价值提取的关键步骤。数据抽取的目标是从非结构化表格文档中抽取出完整的语义数据,而数据组织的目标是对抽取的数据通过某种逻辑结构组织起来,为下一步数据分析奠定基础。
国内许多学者和研究机构对非结构化表格文档的数据抽取和组织也进行了相关的研究。张伯(北京工业大学,2010)已对此做了初步研究,提出了一种基于文字流的表格识别技术,设计并实现了针对某类表格的识别系统,但该技术不适用于处理合并单元格,而且对于表格列间距过大和竖排表格的识别存在偏差;刘力(中南大学,2010)提出了针对基金项目申报书的信息抽取方法,该方法基于模板技术和文本定位算法,解决了科技文档重要数据抽取的问题,但对于一些缺少部分或全部信息的文档及各主题的内在结构无法进行抽取,抽取的是单值属性;万里鹏(西南交通大学,2013)设计了一种非结构化到结构化数据转换系统,解决了文本发明档等非结构化文档转化为结构化数据的问题,但不支持PDF文档以及结构复杂的Word文件、Excel文件;冯亚丽(云南师范大学学报,2012)提出了一种基于规则库的非结构化数据转换方法,解决了非结构化数据格式转换的统一性问题,但格式转换的正确率不高;邹波(华中科技大学,2008)开发了一种海量非结构化数据组织管理系统,解决了海量非结构化数据组织的问题,但属性的自动化获取有待改进。
发明内容
为挖掘海量非结构化表格文档中蕴藏的潜在知识,克服现有数据抽取技术的不足,本发明提出一种面向非结构化表格文档的数据抽取与组织方法,具有较高的灵活性和较高的抽准率。
由于现有的数据抽取技术缺乏灵活性,也无法抽取结构复杂的表格文档。为解决该问题,本发明专利给出了一种灵活性较高、准确率也较高的数据抽取方法,并将抽取的数据组织为适合于MapReduce并行编程模型分析的结构化组织模型,为数据分析奠定基础。
一种大数据环境下非结构化表格文档以下简称(“表格文档”)数据抽取与组织方法,包括以下步骤:
(1)定义表格文档的基本特征与抽取规则;
(1.1)定义表格文档的结构特征;
(1.1.1)将表格文档划分为单值区域和多值区域,单值区域的一个标题区对应一个数据区,即一对一关系;多值区域的一个标题区对应一个或多个数据区,即一对多关系;
(1.1.2)将表格文档中的数据划分为标题区和数据区。标题区是指数据的性质和类别,数据区是指数据实际取值,如“姓名”为标题区,“陈某”为数据区;
(1.2)定义表格文档的数据流特征;
先设表格文档单元格的每行字符串为一个五元组:
S=(V,L,N,E,F),其中
●V为该行字符串的值;
●L={s,m}表示该行字符串所属单元格为单行(s)或多行(m);
●N={s,m,null}表示该行字符串所属单元格的下一个单元格内容为单行(s)、多行(m)或者该行所属单元格为表格该行的最后一个单元格(null);
●E={s,h}表示该行字符串包括软回车(s)或硬回车(h);
●F={y,n}表示该行字符串是当前单元格的最后一行(y)或不是最后一行(n)。
再设表格文档单元格的每行字符串转换得到的数据流为一个二元组:
D=(V,A),其中
●V为该行字符串的值;
●A={s,e,se}表示转换后在V后新增的分隔符:空格s、换行e、空格及换行se。
则,表格文档单元格的每行字符串生成数据流的特征可以归纳如下:
1)S=(V,s,s,Null,Null)→D=(V,s)
2)S=(V,s,m,Null,Null)→D=(V,se)
3)S=(V,m,Null,h,Null)→D=(V,se)
4)S=(V,m,Null,s,n)→D=(V,e)
5)S=(V,m,Null,s,y)→D=(V,se)
6)S=(V,Null,null,Null,Null)→D=(V,se)
以上多元组中的Null值表示可以取对应元素取值集合中的任意值,这些规则是从非结构化数据流中抽取数据的重要依据;
(1.3)定义表格文档的数据抽取规则;
(1.3.1)区域划分规则:若标题区后是数据区,则该区域为单值区域;若标题区后是连续的标题区,则该区域为多值区域;
(1.3.2)单值区域规则:标题区和数据区是一对一的关系,且数据区位于标题区之后;
(1.3.3)多值区域规则:每行的标题区个数与数据区个数相同且顺序一致,一个标题区可以拥有多个数据区;
(1.3.4)正向最大匹配规则:从当前字符开始的最大字符串如果与数据字典中的某一字符串匹配,则该字符串为一个具有完整语义的标题区,在单值区域中介于两个标题区之间的字符串为数据区;
(2)表格文档数据抽取流程与算法;
(2.1)表格文档数据抽取流程;
表格文档的数据抽取流程如图1所示,包括逻辑结构抽取、文档预处理、数据抽取、数据组织和大数据分析等主要步骤,在该流程中,包括一个数据字典,其作用是存储文档的标题区,作为判定标题区与数据区的基本依据,各模块的功能如下:
●逻辑结构抽取:抽取表格文档的标题区,并建立它们之间的逻辑关系,将结果保存在逻辑结构库中;
●文档预处理:将表格文档解析为数据流,并将数据流中存在的冗余信息、无用信息去掉;
●数据抽取:根据抽取规则从数据流中抽取出标题区和数据区;
●数据组织:根据结构化数据模型将标题区和数据区组织成结构化数据集;
●大数据分析:使用MapReduce并行编程模型对结构化数据集进行分析;
(2.2)表格文档的逻辑结构抽取;
逻辑结构抽取的输入是一个不包含任何实际数据的非结构化表格文档,通过匹配数据字典,抽取表格文档的标题区,并建立逻辑关系,抽取的结果保存在逻辑结构库中;
表格文档的逻辑结构可以定义为一个五元组TableStru=<ID,TupleID,Title,Type,Parent>集合,其中,
●ID表示文档的标识;
●TupleID表示元组的标识;
●Title表示标题区;Type={Single,Multiple},表示标题区的类型,Single表示“单值区域”,Multiple表示“多值区域”;
●Parent表示该标题的父标题区;
(2.3)表格文档的单值区域数据抽取算法;
输入:非结构化表格生成的数据流
输出:结构化两元组集合
算法步骤:
步骤3.3.1:以空格作为分隔符对数据流stream进行切分,得到一个字符串列表wordList。
步骤3.3.2:按顺序对字符串列表wordList进行分析,将当前字符串currentWord与数据字典中的标题区进行匹配,得到本次匹配结果。
步骤3.3.3:利用正向最大匹配规则,将当前字符串currentWord与上次的字符串lastWord进行拼接得到一个拼接字符串contactWord,与数据字典中的标题区进行匹配,得到拼接字符串匹配结果。
步骤3.3.4:根据匹配结果执行不同的操作:
(i)若拼接字符串匹配成功,则拼接字符串作为标题区;
(ii)若拼接字符串匹配失败,上次匹配和本次匹配均成功,则上次标题区所对应的数据区为空;
(iii)若拼接字符串匹配失败,上次匹配成功,本次匹配失败,则本次字符串作为数据区内容;
(iv)若拼接字符串匹配失败,上次匹配失败,本次匹配成功,则输出一个包括标题区和数据区的结构化两元组;
(v)若拼接字符串匹配失败,上次匹配和本次匹配均失败,则拼接字符串作为数据区内容;
步骤3.3.5:将本次匹配结果作为上次匹配结果,将本次字符串currentWord作为上次字符串lastWord,并跳到步骤3.3.2;
(2.4)表格文档的多值区域数据抽取算法;
先将多值区域定义为一个(m+1)×n的矩阵:
,
其中m+1是多值区域的行数,n为多值区域的列数,aij是多值区域中的字符串值,当i=1时,aij表示标题区,当i>1时,aij表示数据区;
基于上述定义,从数据流中抽取多值区域的数据区算法如下:
输入:非结构化表格生成的数据流
输出:多值区域矩阵
算法步骤:
步骤4.2.1:将数据流stream转换为一个字符串列表wordList,按顺序将字符串列表wordList中的字符串与数据字典进行匹配,得到多值区域的数据区域mutiArea和多值区域矩阵dataArray的列数及其标题名称。
步骤4.2.2:以空格和换行符作为分隔符对多值区域的数据区mutiArea进行切分得到字符串列表mutiList,按顺序搜索字符串列表mutiList中的字符串是否含有空格,若有,则空格的前后内容分别是两个数据区的内容,并将它们填入多值区域矩阵dataArray对应位置,且对应位置不再填入字符串;若没有,则跳转步骤4.2.3。
步骤4.2.3:根据表格中的单元格内容是否包含硬回车执行不同的操作:
(i)若表格中的单元格内容仅是单行字符串或由软回车构成的多行字符串,按顺序将字符串列表mutiList中的字符串切分为若干个数据区,并依次写入多值区域矩阵的数据区的相应位置。
(ii)若表格中的单元格内容包含具有硬回车的多行字符串,按顺序将字符串列表mutiList中的字符串切分为若干个数据区,同时基于下述启发式规则合并相应数据区,并写入多值区域矩阵的数据区的相应位置。
常见的启发式规则有:(a)成对的符合一般属于同一数据区,如《》、()、“”、‘’等;(b)位于特殊符号两边的字符串一般也属于同一数据区,如-、/,;(c)含有年、月等语义含义的也属于同一数据区。
(3)将抽取结果组织为结构化数据集;
将抽取的结果保存在一种结构化数据模型中,该数据模型可以定义为一个六元组DataStru=(ID,TupleID,TitleArea,DataArea,Relation,Foreign),其中,
●ID表示文档的唯一性标识;
●TupleID表示元组的唯一性标识;
●TitleArea表示标题区的值;
●DataArea表示数据区的值,它既可以是标题区字符串也可以是数据区字符串;
●Relation={1,0},当值为1时,表示DataArea是TitleArea的子标题,当值为0时,表示DataArea是TitleArea对应的数据区;
●Foreign表示该标题区的父标题区;
根据该定义,将抽取的结果进行存储为结构化数据集;
(4)基于MapReduce对数据集进行分析;
MapReduce是一种非常流行的分布式并行计算模型,被广泛应用于海量数据的分析,可以利用MapReduce对上述得到的结构化数据集进行分析,在具体实施方式中将给出分析实例。
本发明的优点是:
本发明提出的非结构化表格文档数据抽取与组织方法适用于各类非结构化表格文档,能够对文档中的数据进行抽取,并组织为一种适合于MapReduce并行编程模型分析的结构化数据模型。方法的灵活性强和准确率高,这在分析海量非结构化化表格中具有很强的应用价值。
附图说明
图1非结构化表格文档数据抽取流程
图2非结构化表格文档及其生成的数据流
具体实施方式
结合图2给出的一个实际非结构化表格文档对本发明提出的一种大数据环境下非结构化表格文档数据抽取与组织方法的具体实施方式进行说明,步骤如下:(1)定义表格文档的基本特征与抽取规则;
(1.1)定义表格文档的结构特征;
(1.1.1)如图2所示,根据单值区域的一个标题区对应一个数据区规则,图2(a)为单值区域;根据多值区域的一个标题区对应一个或多个数据区规则,图2(b)为多值区域;
(1.1.2)如图2所示,图2(a)中“姓名”为标题区,“陈某”为数据区;图2(b)中“起止时间”为标题区,“2009.12.14-12.16”为数据区;
(1.2)定义表格文档的数据流特征;
根据图2中表格文档单元格字符串生成数据流的规律,有以下6种情况:
1)(“姓名”,s,s,s,y)→(“姓名”,s)
2)(“聘任职务”,s,m,s,y)→(“聘任职务”,se)
3)(“必修课,60学时”,m,null,h,n)→(“必修课,60学时”,se)
4)(“2005年6月于某学院**”,m,Null,s,n)→(“2005年6月于某学院**”,e)
5)(“毕业”,m,null,s,y)→(“毕业”,se)
6)(“数学”,s,null,s,y)→(“数学”,se)
(1.3)定义表格文档的数据抽取规则。
(1.3.1)根据区域划分规则,图2(a)为单值区域,图2(b)为多值区域;
(1.3.2)根据单值区域规则,图2(a)中标题区“姓名”和数据区“陈某”是一对一的关系,且数据区“陈某”位于标题区“姓名”之后;
(1.3.3)根据多值区域规则,图2(b)中标题区“起止时间”所在行的标题区个数与接下来每行的数据区个数相同且顺序一致,标题区“起止时间”拥有多个数据区;
(1.3.4)根据正向最大匹配规则,图2(a)中“教”和“龄”拼接成的字符串与数据字典中的标题区“教龄”匹配成功且为最长匹配。图2(a)中标题区“性别”和标题区“出生年月”之间的字符串“*”为标题区“性别”对应的数据区;
(2)表格文档数据抽取流程与算法
(2.1)表格文档数据抽取流程
根据前面定义的数据抽取流程进行抽取;
(2.2)表格文档的逻辑结构抽取
根据表格文档的逻辑结构模型,从图2抽取得到的逻辑结构库如下所示:
1)(1,1,“姓名”,Single,0)
2)(1,2,“推荐晋升(转评)职务”,Single,0)
3)(1,8,“其中”,Single,0)
4)(1,9,“中专”,Single,8)
5)(1,10,“中学”,Single,8)
6)(1,11,“小学”,Single,8)
7)(1,21,“起止时间”,Multiple,0)
8)(1,22,“培训项目”,Multiple,0)
9)(1,23,“组织单位”,Multiple,0)
10)(1,24,“学习情况”,Multiple,0)
(2.3)表格文档的单值区域数据抽取算法;
根据单值区域数据抽取算法,从图2(a)所示的单值区域表格文档抽取得到的结果如下所示;
1)(姓名,陈某)
2)(推荐晋升(转评)职务,**)
3)(单位,杭州某小学)
4)(性别,*)
5)(出生年月,XX年XX月XX日)
6)(参加工作时间,XX年XX月)
7)(教龄,19年)
8)(其中,null)
9)(中专,null)
10)(中学,null)
11)(小学,19)
12)(现任教年级,三年级)
13)(任教学科,数学)
14)(现专业技术职务任职资格,**)
15)(审定时间,2004年12月)
16)(聘任职务,**)
17)(资格证书号,XX-XX-XX-XX)
18)(聘任时间,XX年XX月)
19)(何时何校何专业毕业(肄业)及修业年限,1995年6月于杭州某学院普师专业毕业修业年限3年)
20)(最高学历(何年何校何专业毕业),2005年6月于杭州某学院**毕业)
(2.4)表格文档的多值区域数据抽取算法;
根据多值区域数据抽取算法,从图2(b)所示的多值区域表格文档抽取得到的多值区域矩阵如下所示;
(3)将抽取结果组织为结构化数据集。
根据抽取得到的结果保存在结构化数据模型中,得到的结构化数据集如下所示:
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)
9)(1,27,“起止时间”,“2009.12.14-12.16”,0,0)
10)(1,28,“培训项目”,“**”,0,0)
11)(1,29,“组织单位”,“浙江省某研究院”,0,0)
12)(1,30,“学习情况”,“必修课,60学时,成绩合格”,0,0)
13)(1,31,“起止时间”,“2009.12.14-12.16”,0,0)
14)(1,32,“培训项目”,“**”,0,0)
15)(1,33,“组织单位”,“浙江省某研究院”,0,0)
16)(1,34,“学习情况”,“必修课,60学时,成绩合格”,0,0)
(4)基于MapReduce的数据分析;
下面给出两个较为常见的MapReduce分析算法,一个是分析每个人发表的论文数,另一个是分析所有人的平均年龄;
(4.1)分析每个人发表的论文数。
其处理步骤为:先由Map函数对结果集中的行按文件标识进行重组,其输入为<行号,行字符串>,输出中间结果是<文件标识,{<行标识,标题区,数据区,关系,外键>}>;然后由Reduce函数根据前面的中间结果查找申报对象姓名并计算发表的论文数,方法是通过匹配“姓名”关键字得到姓名的值,通过匹配“论文名称”等关键字计算论文数量,最后将姓名和论文数量作为键值对输出。伪代码如下:
上述Map函数中定义的变量含义为:key为行号;value为行字符串,对应六元组;text为value用逗号切分得到的字符串列表;EmitIntermediate为输出中间结果,text的第0个元素作为key,第1个元素作为value;
上述Reduce函数中定义的变量含义为:key为文件标识;value为{<行标识,标题区,数据区,关系,外键>};number为计数变量,用于统计论文数;records为value用逗号切分得到的字符串列表;name为姓名值;Emit为输出结果,name作为key,number作为value;
(4.2)分析所有人的平均年龄;
其处理步骤为,先由Map函数按标题区对结果集重新组织,输入为<行号,行字符串>,输出中间结果为<标题区,{<数据区,关系,外键>}>键值对;然后由Reduce函数对中间结果通过匹配“出生年月”关键字得到具体的值,最后输出申报对象平均年龄。伪代码如下:
上述Map函数中定义的变量含义为:key为行号;value为行字符串,对应六元组;text为value用逗号切分得到的字符串列表;EmitIntermediate为输出中间结果,text的第2个元素作为key,第3个元素作为value;
上述Reduce函数中定义的变量含义为:key为标题区;value为{<行标识,标题区,数据区,关系,外键>};rows为计数变量,用于统计人数;sum为统计变量,用于计算总年龄;v为values集合中的一个元组;values为v用逗号切分得到的字符串列表;Emit为输出结果,age作为key,平均年龄值作为value。
Claims (1)
1.一种大数据环境下非结构化表格文档数据抽取与组织方法,包括以下步骤:
(1)定义表格文档的基本特征与抽取规则;
(1.1)定义表格文档的结构特征;
(1.1.1)将表格文档划分为单值区域和多值区域,单值区域的一个标题区对应一个数据区,即一对一关系;多值区域的一个标题区对应一个或多个数据区,即一对多关系;
(1.1.2)将表格文档中的数据划分为标题区和数据区;标题区是指数据的性质和类别,数据区是指数据实际取值;
(1.2)定义表格文档的数据流特征;
先设表格文档单元格的每行字符串为一个五元组:
S=(V,L,N,E,F),其中
●V为该行字符串的值;
●L={s,m}表示该行字符串所属单元格为单行(s)或多行(m);
●N={s,m,null}表示该行字符串所属单元格的下一个单元格内容为单行(s)、多行(m)或者该行所属单元格为表格该行的最后一个单元格(null);
●E={s,h}表示该行字符串包括软回车(s)或硬回车(h);
●F={y,n}表示该行字符串是当前单元格的最后一行(y)或不是最后一行(n);
再设表格文档单元格的每行字符串转换得到的数据流为一个二元组:
D=(V,A),其中
●V为该行字符串的值;
●A={s,e,se}表示转换后在V后新增的分隔符:空格s、换行e、空格及换行se;
则,表格文档单元格的每行字符串生成数据流的特征可以归纳如下:
1)S=(V,s,s,Null,Null)→D=(V,s)
2)S=(V,s,m,Null,Null)→D=(V,se)
3)S=(V,m,Null,h,Null)→D=(V,se)
4)S=(V,m,Null,s,n)→D=(V,e)
5)S=(V,m,Null,s,y)→D=(V,se)
6)S=(V,Null,null,Null,Null)→D=(V,se)
以上多元组中的Null值表示可以取对应元素取值集合中的任意值,这些规则是从非结构化数据流中抽取数据的重要依据;
(1.3)定义表格文档的数据抽取规则;
(1.3.1)区域划分规则:若标题区后是数据区,则该区域为单值区域;若标题区后是连续的标题区,则该区域为多值区域;
(1.3.2)单值区域规则:标题区和数据区是一对一的关系,且数据区位于标题区之后;
(1.3.3)多值区域规则:每行的标题区个数与数据区个数相同且顺序一致,一个标题区可以拥有多个数据区;
(1.3.4)正向最大匹配规则:从当前字符开始的最大字符串如果与数据字典中的某一字符串匹配,则该字符串为一个具有完整语义的标题区,在单值区域中介于两个标题区之间的字符串为数据区;
(2)表格文档数据抽取流程与算法;
(2.1)表格文档数据抽取流程;
表格文档的数据抽取流程包括逻辑结构抽取、文档预处理、数据抽取、数据组织和大数据分析的主要步骤,在该流程中,包括一个数据字典,其作用是存储文档的标题区,作为判定标题区与数据区的基本依据,各模块的功能如下:
●逻辑结构抽取:抽取表格文档的标题区,并建立它们之间的逻辑关系,将结果保存在逻辑结构库中;
●文档预处理:将表格文档解析为数据流,并将数据流中存在的冗余信息、无用信息去掉;
●数据抽取:根据抽取规则从数据流中抽取出标题区和数据区;
●数据组织:根据结构化数据模型将标题区和数据区组织成结构化数据集;
●大数据分析:使用MapReduce并行编程模型对结构化数据集进行分析;
(2.2)表格文档的逻辑结构抽取;
逻辑结构抽取的输入是一个不包含任何实际数据的非结构化表格文档,通过匹配数据字典,抽取表格文档的标题区,并建立逻辑关系,抽取的结果保存在逻辑结构库中;
表格文档的逻辑结构可以定义为一个五元组TableStru=<ID,TupleID,Title,Type,Parent>集合,其中,
●ID表示文档的标识;
●TupleID表示元组的标识;
●Title表示标题区;Type={Single,Multiple},表示标题区的类型,Single表示“单值区域”,Multiple表示“多值区域”;
●Parent表示该标题的父标题区;
(2.3)表格文档的单值区域数据抽取算法;
输入:非结构化表格生成的数据流
输出:结构化两元组集合
算法步骤:
步骤3.3.1:以空格作为分隔符对数据流stream进行切分,得到一个字符串列表wordList;
步骤3.3.2:按顺序对字符串列表wordList进行分析,将当前字符串currentWord与数据字典中的标题区进行匹配,得到本次匹配结果;
步骤3.3.3:利用正向最大匹配规则,将当前字符串currentWord与上次的字符串lastWord进行拼接得到一个拼接字符串contactWord,与数据字典中的标题区进行匹配,得到拼接字符串匹配结果;
步骤3.3.4:根据匹配结果执行不同的操作:
(i)若拼接字符串匹配成功,则拼接字符串作为标题区;
(ii)若拼接字符串匹配失败,上次匹配和本次匹配均成功,则上次标题区所对应的数据区为空;
(iii)若拼接字符串匹配失败,上次匹配成功,本次匹配失败,则本次字符串作为数据区内容;
(iv)若拼接字符串匹配失败,上次匹配失败,本次匹配成功,则输出一个包括标题区和数据区的结构化两元组;
(v)若拼接字符串匹配失败,上次匹配和本次匹配均失败,则拼接字符串作为数据区内容;
步骤3.3.5:将本次匹配结果作为上次匹配结果,将本次字符串currentWord作为上次字符串lastWord,并跳到步骤3.3.2;
(2.4)表格文档的多值区域数据抽取算法;
先将多值区域定义为一个(m+1)×n的矩阵:
,
其中m+1是多值区域的行数,n为多值区域的列数,aij是多值区域中的字符串值,当i=1时,aij表示标题区,当i>1时,aij表示数据区;
基于上述定义,从数据流中抽取多值区域的数据区算法如下:
输入:非结构化表格生成的数据流
输出:多值区域矩阵
算法步骤:
步骤4.2.1:将数据流stream转换为一个字符串列表wordList,按顺序将字符串列表wordList中的字符串与数据字典进行匹配,得到多值区域的数据区域mutiArea和多值区域矩阵dataArray的列数及其标题名称;
步骤4.2.2:以空格和换行符作为分隔符对多值区域的数据区mutiArea进行切分得到字符串列表mutiList,按顺序搜索字符串列表mutiList中的字符串是否含有空格,若有,则空格的前后内容分别是两个数据区的内容,并将它们填入多值区域矩阵dataArray对应位置,且对应位置不再填入字符串;若没有,则跳转步骤4.2.3;
步骤4.2.3:根据表格中的单元格内容是否包含硬回车执行不同的操作:
(i)若表格中的单元格内容仅是单行字符串或由软回车构成的多行字符串,按顺序将字符串列表mutiList中的字符串切分为若干个数据区,并依次写入多值区域矩阵的数据区的相应位置;
(ii)若表格中的单元格内容包含具有硬回车的多行字符串,按顺序将字符串列表mutiList中的字符串切分为若干个数据区,同时基于下述启发式规则合并相应数据区,并写入多值区域矩阵的数据区的相应位置;
常见的启发式规则有:(a)成对的符号一般属于同一数据区;(b)位于特殊符号两边的字符串一般也属于同一数据区;(c)含有年、月等语义含义的也属于同一数据区;
(3)将抽取结果组织为结构化数据集;
将抽取的结果保存在一种结构化数据模型中,该数据模型可以定义为一个六元组DataStru=(ID,TupleID,TitleArea,DataArea,Relation,Foreign),其中,
●ID表示文档的唯一性标识;
●TupleID表示元组的唯一性标识;
●TitleArea表示标题区的值;
●DataArea表示数据区的值,它既可以是标题区字符串也可以是数据区字符串;
●Relation={1,0},当值为1时,表示DataArea是TitleArea的子标题,当值为0时,表示DataArea是TitleArea对应的数据区;
●Foreign表示标题区的父标题区;
根据该定义,将抽取的结果进行存储为结构化数据集;
(4)基于MapReduce对数据集进行分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510969896.9A CN105630916B (zh) | 2015-12-21 | 2015-12-21 | 一种大数据环境下非结构化表格文档数据抽取与组织方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510969896.9A CN105630916B (zh) | 2015-12-21 | 2015-12-21 | 一种大数据环境下非结构化表格文档数据抽取与组织方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105630916A CN105630916A (zh) | 2016-06-01 |
CN105630916B true CN105630916B (zh) | 2018-11-06 |
Family
ID=56045849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510969896.9A Active CN105630916B (zh) | 2015-12-21 | 2015-12-21 | 一种大数据环境下非结构化表格文档数据抽取与组织方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105630916B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126752A (zh) * | 2016-08-19 | 2016-11-16 | 广州慧睿思通信息科技有限公司 | 一种支持结构化与非结构化数据导入的装置与方法 |
CN107133208B (zh) * | 2017-03-24 | 2021-08-24 | 南京柯基数据科技有限公司 | 一种实体抽取的方法及装置 |
CN108664458B (zh) * | 2017-03-28 | 2022-06-14 | 中科云投科技股份有限公司 | 一种pdf文件表格解析方法及系统 |
CN108170697B (zh) * | 2017-07-12 | 2021-08-20 | 信号旗智能科技(上海)有限公司 | 一种国际贸易文件处理方法、系统以及一种服务器 |
CN107665237B (zh) * | 2017-08-18 | 2020-11-27 | 北京海兰信数据科技股份有限公司 | 数据结构分类装置、非结构化数据的发布订阅系统及方法 |
CN107832676B (zh) * | 2017-10-16 | 2024-02-02 | 平安科技(深圳)有限公司 | 表格信息换行识别方法、电子设备及计算机可读存储介质 |
CN107741924B (zh) * | 2017-10-26 | 2020-02-21 | 南京大学 | 一种计算机处理复杂表单的方法 |
CN108170557B (zh) * | 2018-01-24 | 2022-11-25 | 百度在线网络技术(北京)有限公司 | 用于输出信息的方法和装置 |
CN110852044B (zh) * | 2018-08-20 | 2023-09-15 | 上海颐为网络科技有限公司 | 一种基于结构化的文本编辑方法和系统 |
CN109960727B (zh) * | 2019-02-28 | 2023-04-07 | 天津工业大学 | 针对非结构化文本的个人隐私信息自动检测方法及系统 |
CN112329407B (zh) * | 2019-08-05 | 2024-07-23 | 珠海金山办公软件有限公司 | 一种在文档的表格中添加数据的方法、装置及电子设备 |
CN110543732B (zh) * | 2019-09-05 | 2023-10-27 | 大连交通大学 | 一种基于区域导航码的自由格式有限元模型数据读取方法 |
CN111462327B (zh) * | 2020-03-12 | 2022-12-13 | 成都飞机工业(集团)有限责任公司 | 三维造型软件三维检验模型非结构化数据解析方法 |
CN111859863A (zh) * | 2020-06-03 | 2020-10-30 | 远光软件股份有限公司 | 一种文档的结构转换方法、装置、存储介质及电子设备 |
CN111695330B (zh) * | 2020-06-30 | 2023-10-27 | 望海康信(北京)科技股份公司 | 生成表格的方法、装置、电子设备及计算机可读存储介质 |
CN111863268B (zh) * | 2020-07-19 | 2024-01-30 | 杭州美腾科技有限公司 | 一种适用于医学报告内容提取与结构化方法 |
CN112861486A (zh) * | 2021-04-25 | 2021-05-28 | 成都淞幸科技有限责任公司 | 半结构化文件的数据集成方法、装置、设备及存储介质 |
CN113536751B (zh) * | 2021-06-30 | 2023-09-22 | 北京百度网讯科技有限公司 | 表格数据的处理方法、装置、电子设备和存储介质 |
CN113836292B (zh) * | 2021-09-15 | 2024-01-09 | 灵犀量子(北京)医疗科技有限公司 | 生物医学文献摘要的结构化方法、系统、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0816617A (ja) * | 1994-06-28 | 1996-01-19 | Hitachi Ltd | 文書検索方法及び装置 |
CN101556606A (zh) * | 2009-05-20 | 2009-10-14 | 同方知网(北京)技术有限公司 | 一种基于Web数值表格抽取的数据挖掘方法 |
CN102193940A (zh) * | 2010-03-11 | 2011-09-21 | 龙旗科技(上海)有限公司 | 一种对二维表格进行特征分析和数据提取的方法 |
CN103838796A (zh) * | 2012-11-27 | 2014-06-04 | 大连灵动科技发展有限公司 | 一种网页结构化信息抽取方法 |
CN105045769A (zh) * | 2015-06-01 | 2015-11-11 | 中国人民解放军装备学院 | 一种基于结构识别的Web表格信息抽取方法 |
-
2015
- 2015-12-21 CN CN201510969896.9A patent/CN105630916B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0816617A (ja) * | 1994-06-28 | 1996-01-19 | Hitachi Ltd | 文書検索方法及び装置 |
CN101556606A (zh) * | 2009-05-20 | 2009-10-14 | 同方知网(北京)技术有限公司 | 一种基于Web数值表格抽取的数据挖掘方法 |
CN102193940A (zh) * | 2010-03-11 | 2011-09-21 | 龙旗科技(上海)有限公司 | 一种对二维表格进行特征分析和数据提取的方法 |
CN103838796A (zh) * | 2012-11-27 | 2014-06-04 | 大连灵动科技发展有限公司 | 一种网页结构化信息抽取方法 |
CN105045769A (zh) * | 2015-06-01 | 2015-11-11 | 中国人民解放军装备学院 | 一种基于结构识别的Web表格信息抽取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105630916A (zh) | 2016-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105630916B (zh) | 一种大数据环境下非结构化表格文档数据抽取与组织方法 | |
Pal et al. | An approach to automatic text summarization using WordNet | |
Singh et al. | PROSPECT: a system for screening candidates for recruitment | |
Sun et al. | A review of unsupervised keyphrase extraction methods using within-collection resources | |
Ameen et al. | Creation of ontology in education domain | |
US8239425B1 (en) | Isolating desired content, metadata, or both from social media | |
Jayaram et al. | A review: Information extraction techniques from research papers | |
Hachey et al. | Datasets for generic relation extraction | |
Dias et al. | A method for the identification of collaboration in large scientific databases | |
D’Silva et al. | Development of a Konkani language dataset for automatic text summarization and its challenges | |
Rezaei et al. | Event detection in twitter by deep learning classification and multi label clustering virtual backbone formation | |
Csanády et al. | LlamBERT: Large-scale low-cost data annotation in NLP | |
He et al. | Using Mind Map as Learning Tool in'Data Structure'Teaching | |
Andrews et al. | Knowledge discovery through creating formal contexts | |
Paraschiv et al. | Analyzing the semantic relatedness of paper abstracts: An application to the educational research field | |
Pietranik et al. | A method for ontology alignment based on semantics of attributes | |
Zhang et al. | Personal attributes extraction based on the combination of trigger words, dictionary and rules | |
Bauer et al. | Metadata generation for learning objects: An experimental comparison of automatic and collaborative solutions | |
Yu et al. | Exploring user feedback of a e-learning system: a text mining approach | |
Cabanac | In praise of interdisciplinary research through scientometrics | |
Wang et al. | Analysis of Scratch Project with Process Data | |
Sharkey et al. | Deconstruct and Reconstruct: Using Topic Modeling on an Analytics Corpus. | |
Chahardehi | Components of an Automatic Single Document Summarization System in the News Domain | |
Comabella et al. | JAD at eHealth-KD Challenge 2021: Simple Neural Network with BERT for Joint Classification of Key-Phrases and Relations. | |
Huang et al. | CSEC: A Chinese Semantic Error Correction Dataset for Written Correction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |