一种基于机器学习的表格抽取方法
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于机器学习的表格抽取方法。
背景技术
表格作为一种展现数据的形式,被广泛使用。数据量如此之大,可谓一个矿藏。然而,普通的人工编辑与整理,过于耗时费力。随着大数据技术的发展,通过计算机软件自动抽取与数据清洗可以极大地提高工作效率,是大势所趋。然而,文献中的表格是为了方便人类阅读而设计的,计算机识别表格是一大挑战。
发明内容
基于背景技术存在的技术问题,本发明提出了一种基于机器学习的表格抽取方法。
本发明提出的一种基于机器学习的表格抽取方法,包括:
S1、对原始xml文件进行预处理,获得预先选择的自动提取工具可识别的新xml文件;
S2、将新xml文件通过自动提取工具进行识别并转换成python可识别的二维列表;
S3、将表格标题和脚注从二维列表中分离出来,然后识别跨列子标题,并把子标题填充到对应的列;
S4、通过机器学习,区分出表头所在行的范围,然后合并表头;
S5、对跨行数据进行合并,获得最终表格数据。
优选的,步骤S1中,对原始xml文件进行预处理的方法包括:
S11、在xml表格的开头添加一个标记文本;
S12、识别标题并标记,且将标记后的标题移动到xml表格开头顺延部位;
S13、将xml表格中的上标标签内容转换成LaTeX的形式;
S14、对xml表格中的脚注进行标记,并将标记后的脚注放到xml表格的顺延位置;
S15、提取xml表格中的列宽属性并进行标记;
S16、对处理后的xml文件使用原文件名进行命名后存储为新xml文件。
优选的,步骤S3中,提取脚注的方式为:首先查找脚注标记,然后提取脚注标记之间的内容。
优选的,步骤S3中,识别跨列子标题的方式为:首先根据添加的单元格宽度标记对表格数据进行校正直至所有行长度相同,然后识别跨列子标题。
优选的,步骤S15中,两个单元格宽度标记行之间的内容就是上一个单元格宽度标记行的作用行数范围;
步骤S3中,识别跨列子标题,并把子标题填充到对应的列的方法具体包括:
S31、获取表格中每一列的列宽作为基准值,根据基准值获取跨列单元格的起始位置与具体跨列范围;
S32、对于跨列的单元格,判断它是不是一个子标题,如果是,则向右填充。
优选的,步骤S2中,转换成二维列表过程中,保留空值,使得不同行单元格数量一致。
优选的,步骤S2中,自动提取工具采用chemdataextractor。
优选的,在合并跨行数据时,首先识别同一条数据的开始行和结束行,再将开始行至结束行进行合并。
优选的,识别一条数据的开始行和结束行时:通过化学物质的名称的独特结构,在结合结构式所在列发生的切分,找到开始行和结束行。
本发明提出的一种基于机器学习的表格抽取方法,通过数据预处理修正XML文件,以便于计算机正确提取出表格所有内容;利用最新的机器学习技术自动识别表头,完成表头跨行校正;实现跨列单元格自动校正;完成表格标题与脚注提取和分离;通过智能识别合并被分割成多行的化合物结构式合并。
本发明实现了基于机器学习从格式为xml的文件中抽取清洗表格内容,保证了对xml文件信息的精确和完整的抽取。
附图说明
图1为本发明提出的一种基于机器学习的表格抽取方法流程图;
图2为对原始xml文件进行预处理的方法流程图。
具体实施方式
参照图1,本发明提出的一种基于机器学习的表格抽取方法,包括以下步骤:
S1、对原始xml文件进行预处理,获得预先选择的自动提取工具可识别的新xml文件。
本步骤中,对xml文件的预处理,包括增删表格的标签,以利于表格识别软件读取;把隐含单元格宽度具体展现出来;修改上标的表现形式,以便于纯文本展示;为标题、脚注打上标记,便于后续处理。
S2、将新xml文件通过自动提取工具进行识别并转换成python可识别的二维列表。具体的,本实施方式中,自动提取工具采用chemdataextractor。
本步骤中,在表格转换成二维列表过程中,保留空值,使得不同行单元格数量一致,以保证表格的行列信息,避免表格数据错位。
S3、将表格标题和脚注从二维列表中分离出来,然后识别跨列子标题,并把子标题填充到对应的列。本步骤中,通过分离标题和脚注,避免了影响后期处理。具体实施时,可在xml文件中设置的特定标记提取表格标题。
且本实施方式中,提取脚注的方式为:首先查找脚注标记,然后提取脚注标记之间的内容。识别跨列子标题的方式为:首先根据添加的单元格宽度标记对表格数据进行校正直至所有行长度相同,然后识别跨列子标题。
S4、通过机器学习,区分出表头所在行的范围,然后合并表头。
S5、对跨行数据进行合并,获得最终表格数据。
有的表格,一个单元格中的数据过于长而放不下的时候,会被切分成多行,所以普通数据也存在跨行的现象。本步骤S5中,通过把被切分开的数据合并起来,进一步保证了读取表格数据是对信息的完整获取。
具体的,本实施方式中,在合并跨行数据时,首先识别同一条数据的开始行和结束行,再将开始行至结束行进行合并。具体实施时,识别一条数据的开始行和结束行时:通过化学物质的名称的独特结构,在结合结构式所在列发生的切分,找到开始行和结束行。
实施例1
本实施例中,自动提取工具采用chemdataextractor。为了保证chemdataextractor识别更精准,本实施例中,步骤S1对原始xml文件进行预处理的方法具体包括以下步骤,具体可参照图2。
S11、在xml表格的开头添加一个标记文本。标记文本的添加,可避免表格内容被忽略,为后期的表格识别做辅助,方便chemdataextractor读入整个表格。
S12、识别标题并标记,且将标记后的标题移动到xml表格开头顺延部位;
S13、将xml表格中的上标标签内容即<sub>标签中的内容转换成LaTeX的形式。如此,保证了对上标的统一处理便于后期处理和识别,避免信息丢失和信息谬误。
S14、对xml表格中的脚注进行标记,并将标记后的脚注放到xml表格的顺延位置。具体的,本步骤中,可根据<entry>标签的id属性判断脚注。
S15、提取xml表格中的列宽属性并进行标记。如此,可避免被隐藏的列宽导致表格的列错位的情况,保证对表格的精确识别。
S16、对处理后的xml文件使用原文件名进行命名后存储为新xml文件。
实施例2
实施例1的步骤S15中,两个单元格宽度标记行之间的内容就是上一个单元格宽度标记行的作用行数范围。
本实施例的步骤S3中,识别跨列子标题,并把子标题填充到对应的列的方法具体包括:
S31、获取表格中每一列的列宽作为基准值,根据基准值获取跨列单元格的起始位置与具体跨列范围。
S32、对于跨列的单元格,判断它是不是一个子标题,如果是,则向右填充。
实施例3
本实施例中的步骤S4中,通过机器学习,区分出表头所在行的范围,然后合并表头。
具体的,本实施例中,根据表头是文字,内容是数字的特征,利用表头与内容的区别通过机器学习识别。
本实施例中,机器学习的目标为:判断相邻两个单元格是否相似。
本实施例中,机器学习特征包括:
a)两个字符串(即:同一列相邻单元格)是否有相同的前缀
b)相同的后缀
c)是否都是化合物
d)比较两个字符串的编辑长度来判断他们的差别大小
e)它们的长度区别
f)它们包含数字的数量差别
g)它们包含字母数量的差别
h)它们是否都是有特定的格式等等。
i)这一列平均每一个单元格包含的字母数量
j)一列包含的化合物数量
k)一列包含的字母数量
l)一列是否有数字的比率
m)一列是否有字母的比率
本实施例中,通过特征标记数据,训练随机森林模型,预测与调参,后得到满意的模型,即得到用于预测表格表头的模型。
具体的,通过统计所有列相邻行之间的相似关系数据,表头与数据内容不相似,以此来达到识别表头的目的,具体可通过以下公式进行体现。
comp=|ratio(d)-ratio(w)|
其中,ratio(d)是一个单元格内的数字比率,x是该单元格的数字个数,l为该单元格总字符长度。ratio(w)是一个单元格内的字母比率,y是该单元格字母的个数。comp是数字和字母比率之差。r(d)是一列中有数字的单元格比率,x′是一列中含数字的单元格数目,l′是一列单元格总数。r(w)是一列中有字母的单元格比率,y′是一列中含数字的单元格数目。f是一列中化合物比率,z是一列中化合物的数目。
本实施例中,识别出表头后,把表头的相邻行进行合并得到完整的表头。以上所述,仅为本发明涉及的较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。