欢迎来到知嘟嘟! 联系电话:13336804447 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13336804447
知嘟嘟经纪人
收藏
专利号: 2015109698969
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2023-12-11
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

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)表格文档数据抽取流程;

表格文档的数据抽取流程如图1所示,包括逻辑结构抽取、文档预处理、数据抽取、数据组织和大数据分析等主要步骤,在该流程中,包括一个数据字典,其作用是存储文档的标题区,作为判定标题区与数据区的基本依据,各模块的功能如下:●逻辑结构抽取:抽取表格文档的标题区,并建立它们之间的逻辑关系,将结果保存在逻辑结构库中;

●文档预处理:将表格文档解析为数据流,并将数据流中存在的冗余信息、无用信息去掉;

●数据抽取:根据抽取规则从数据流中抽取出标题区和数据区;

●数据组织:根据结构化数据模型将标题区和数据区组织成结构化数据集;

●大数据分析:使用MapReduce并行编程模型对结构化数据集进行分析;

(2.2)表格文档的逻辑结构抽取;

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

表格文档的逻辑结构可以定义为一个五元组TableStru=集合,其中,●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对数据集进行分析。