当前位置:首页 期刊杂志

基于构件理解的文档格式优化方法

时间:2024-07-29

王 娟,李 宁,郝海利

(北京信息科技大学 网络文化与数字文化传播重点实验室,北京 100101)

0 引言

流式文档在日常办公和文献出版等领域中应用广泛,但流式文档格式复杂,排版形式多样,使用时难免会出现各种错误[1]。据统计,错误主要分为标题逻辑结构错误、排版格式错误以及文档构件错误。其中,文档构件错误占了较大比重[2]。文档构件是指形如图片、表格、文本段等具有相对独立语义和独立功能的文档组成成分[3]。对文档构件进行纠错有利于文档的规范化,从而使其更好地被计算机理解[4]。文档格式优化,即在文档理解的基础上,根据排版要求,将文档调整为规范化格式。以往通过手工对文档进行格式调整的方法,工作量大且难以发现各种错误。因此,本文从文档构件的理解出发,针对文档构件可能存在的多种错误情况,采取不同的查错纠错方法,以此达到文档格式优化的目的[5]。

本文方法主要针对的是学术论文。学术论文等结构性较强的文档往往由多种基本单元组成,如标题、摘要、关键词、章节、图表等。要进行文档格式优化,首先需要计算机正确理解文档结构,这是本文方法的前提。文档结构理解即基于文档的格式和内容来理解文档各部分的作用[6],其包含两方面内容:首先,计算机需要识别出文档的各个构件,例如图片、表格、文本段等;其次,计算机还要识别文档中各构件之间的逻辑关系,例如各级标题之间的嵌套关系。在文档结构理解中,典型的有基于规则的方法和基于机器学习的方法。基于规则的方法较多地使用规则(模板)对文档的构件和结构进行识别[7]。通过将待测文档与模板进行比较,识别出待测文档的文档构件和结构[8]。徐东风等[9]通过预先设定文档标准格式,实现了本科生毕业论文格式与标准文档的格式检测和匹配。但是,基于规则的方法存在一定缺陷,例如,需要人工提取特征,未能充分利用文档构造规律等。机器学习的方法常采用序列标注模型,将文档段落以及各个构件的前后依赖关系看成序列数据,通过序列标注模型进行逻辑标签序列的识别。雷洋等[10]使用基于CRF(conditional random field)的序列标注方法,将文档结构理解看作序列标注问题,在特征模板之上建立CRF训练模型,并通过监督学习方法实现文档结构识别。基于序列的方法可以结合多种特征,特别是上下文特征,还可以在一定程度上实现容错,但难以找到最优结构。除了序列标注方法外,还有基于神经网络的机器学习方法。张真等[11]根据流式文档特点,提出一种基于双向LSTM(long short-term memory)的文档结构识别方法,从文档单元的格式、内容与语义方面筛选关键特征,在此基础上,使用双向LSTM神经网络构建识别模型,实现了18种逻辑标签的识别。

本文利用张真等[11]的文档结构识别的结果,实现基于构件的文档格式优化方法。构建了文档纠错语料库,统计文档结构出错的规律,针对不同的错误,采用不同的方法进行查错分析,并给出相应的纠错建议,从而达到文档格式优化的目的。

1 排版错误的分类

在研究基于构件理解的文档格式优化方法之前,首先对流式文档排版错误的规律进行分析。本课题所在的项目组标注了相当数量的文档语料,这些文档语料主要来自于多家学报的学术论文的初稿,本研究对语料的排版错误进行了统计。

参照文档结构理解的方法,我们构造了一个文档构件集合,将错误分为4种类别,即:构件的缺失、冗余、乱序和误用。缺失,即文档中缺少必要的构件;乱序,即文档中的构件顺序错误;冗余,即文档中出现多余的文档构件;误用,即文档中构件使用错误。表1是文档构件序列中的错误类型及其正确示例。

表1 错误类型及其正确示例

对语料库中的纠错语料进行细分类及概率统计,结果如表2所示。

表2 错误细分类及概率统计

对文档构件的特点进行分析,发现:除了中文论文名称、作者姓名、单位等构件只会在论文头部出现之外,其余的文档构件都会在正文中多次出现;不同位置的文档构件错误表现形式往往不同。针对文档构件错误的特点,本文采取不同的方法进行处理。例如文档局部构件的结构错误采用语法规则与统计相结合的方法处理;文档列表、标题、公式等构件的编号内容采用规则的方法处理。

2 排版格式的查错与纠错

2.1 基于XML的文档排版规则描述

本文使用XML Schema语法来描述文档构件组成文档的规则[12]。主要研究针对学术论文的格式优化,所设计的Schema反映了学术论文的排版规范。

假设文档结构识别后的文档构件序列为C={中文论文名称,姓名,单位,中文摘要,…,一级标题,图片,图题,文本段},将该序列与文档的Schema进行有效性验证,从而发现不规范的文档构件。除标题之外,还设计了每个构件的Schema,描述相关的元素以及关系约束。利用Schema对各个构件进行检查,得到错误信息后,再采用统计与规则相结合的方法提供纠错建议,修改完成后,对文档构件序列再次进行验证检查。

2.2 基于统计的局部内容查错与纠错

对文档的构件进行划分,将中文论文名称、姓名、单位、中文关键词、中文摘要、英文论文名称、英文摘要、英文关键词、文本段以及邮箱等归类为头部元素;将一级标题、文本段、列表、图片、图题、表题、表格、公式、二级标题、三级标题等归类为正文元素。

在Schema验证后得到错误的构件时,针对这两种类型的元素所产生的错误情况,采用不同的方法来进行处理。头部元素采用基于统计与规则相结合的方法,为其构造备选项集合,从中选择备选项后继续进行验证;正文元素中的文档局部构件采用自然语言处理中的接续关系的思想进行查错,并采用规则的方法进行纠错。除此之外,还采用规则的方法处理文档中的标号错误。

2.2.1 备选项集合

建立备选项集合主要针对的是头部元素的纠错。本研究参考了文本校对技术中的概率统计方法,将其应用到流式文档构件的查错和纠错之中。

假设P(Ui|U1U2…Ui…UN)表示文档构件序列C=U1U2…Ui…UN中某个构件Ui出现的概率,概率值越大就表明该构件Ui出现在其位置的可能性越大。分析已有的纠错语料库,将其中常见的文档构件的错误类型利用极大似然规律对概率值进行求解[13]。首先计算先验概率:

(1)

则条件概率P(Ui|C)的极大似然估计为

(2)

利用上述方法将文档中存在的错误构件替换为另一构件。替换的准则为替换后的文档构件序列需符合Schema规范。首先,构建备选项集合(Aset,alternative set)。一个文档构件序列中的某一构件Ui所对应的备选项集合A(V)由文档理解的结果和其在文档语料库中所对应的统计概率经过排序后所得,如式(3)所示。

(3)

式中vi为某一构件Ui的备选项。例如,A(中文关键词)={文本段,英文关键词,邮箱,二级标题,三级标题}中,等式左侧是错误构件,在本例中是中文关键词,等式右侧为其对应的备选项集合。本文所使用的备选项集合如表3所示。

表3 备选项集合

2.2.2 基于接续关系的构件查错

基于接续关系的构件查错方法主要应用于正文元素。本文采用N-Gram模型(N=2),如式(4)所示[14]。

wt-2,wt-1)

(4)

通过统计文档纠错语料库中符号wi-1和符号串wi-1wi的出现次数R(wi-1)、R(wi-1wi)来估计条件概率[15],如式(5)所示。

(5)

将上述理论应用于文档构件查错纠错中。对待检测的文档构件序列C=U1U2…Ui…UN,通过计算构件之间的条件概率来体现接续关系。根据语料统计得出阈值,超过阈值则说明构件之间存在接续关系,否则,则认为构件之间不存在接续关系,即构件可能出现错误。本文得到的构件之间的条件概率如表4所示,所设定的阈值为0.8。

表4 部分构件条件概率

表4中,图片构件在前、图题构件在后时,转移概率大于0.8,说明两者存在接续关系。本文将此方法与基于概率统计的方法相结合,对文档构件序列进行综合判断。

2.2.3 统计与规则相结合的纠错方法

综合上述方法,首先将流式文档进行结构识别以及构件识别,得到一个文档构件序列C=U1U2...Ui...UN,将该序列对应的XML文件与2.1节所定义的Schema进行有效性验证,再分析得到的错误信息。其中,若错误为2.2.1节中备选项集合中出现的属于头部元素的文档构件Ui,则尝试用备选项集合中的构件进行替换;若错误为2.2.2节中属于正文元素的具有接续关系的文档构件,则使用规则的方法进行纠错;纠错完成后,再次进行Schema验证,若仍存在错误信息则继续对文档构件进行纠错,直至到达所设置的循环次数,或者验证通过,则算法结束。

2.3 基于规则的编号查错方法

2.3.1 编号分类

文档中经常出现编号错误,与其他构件不同,编号错误比较适合采用基于规则的方法进行纠错。将编号种类分为标题标号、公式编号以及列表编号。各类编号的典型形式如表5所示。

表5 三类编号的一般形式

2.3.2 编号获取

要对编号进行查错,首先要获取编号。而文档中编号方式分为两种:手动编写编号与自动编写编号。不同的编号方式需要采用不同的方式获取编号。本文通过Word对象模型中的列表项属性来判断编号的编写形式。如果是手动编写的编号,可以利用正则表达式来匹配编号信息;如果是自动编写的编号,则可以通过列表项属性将编号的各项信息提取出来。部分编号的正则表达式如表6所示。

2.3.3 编号查错算法

获取到编号信息后,首先要对信息进行整理。为此定义了两个用于描述编号信息的集合。

定义1编号集合(NS,number set),是编号描述信息的集合。其中,ns∈NS为编号项。编号拥有一个属性集合,为NP(number property)。

表6 编号正则表达式

定义2编号属性集合NP,主要描述所获得的编号的各种属性信息。表7为编号属性集合中的概念及其含义。

表7 编号属性

在获取到编号后,将编号列表作为编号查错算法的输入,通过判断编号的类型,决定采用哪种编号查错方法。例如,若编号类型为公式编号,则采用公式编号的查错方法;若编号类型为列表编号,则采用列表编号的查错方法;而对于标题编号,当存在多个层级的编号时,需要将各级编号进行分割,逐一判断。例如,对于标题编号1.2.3,存在三级编号,需要将三级编号分割为3个数值1、2、3后再依次判断。对编号的检查完毕后,输出编号的错误信息。

3 实验

3.1 实验数据及评测方法

本文的文档语料库收集了100篇来自某学报已经发表的学术论文的初稿。实验采用的评价指标为准确率、召回率和F度量,三者的定义如下:

(6)

(7)

(8)

除此之外,本研究还根据查错结果进行了一定程度的纠错,纠错以批注的方式在原文档中给出相应建议。对纠错建议进行评价的指标使用的是纠错准确率(CorrectingRate),定义如下:

(9)

3.2 实验结果及分析

以一篇文档为例,图1为文档构件查错纠错示例,图2为编号查错示例。

表8为文档构件查错纠错实验结果。除内容构件误用错误类型纠错准确率为90%外,其他6种错误类型的纠错准确率可以达到100%。

表8 文档构件查错纠错实验结果 %

表9为文档构件编号查错实验结果。在针对5种错误类型的编号查错中,除标题编号顺序错误的纠错率为80%外,其他错误类型的纠错准确率都可以达到100%。

表9 文档构件编号查错实验结果 %

本文方法在各种错误类型的查错中,纠错准确率都可以达到80%以上,但绝大部分召回率偏低。针对召回率偏低的原因进行分析可知:首先,学术论文格式多样,可能无法检查到不在规则范围内的错误;其次,本研究的实验语料库是基于文档结构识别的结果,文档结构识别的差错会影响纠错的结果。例如文档结构识别可能将表题识别成文本段,这将影响后续对表题的查错与纠错,降低召回率。

4 结束语

本文提出了一种文档构件查错纠错方法:利用Schema对文档局部构件进行语法检查,根据得到的错误信息,采用统计与规则相结合的方法得出纠错建议;针对文档局部构件,采用统计与规则相结合的方法进行纠错;针对文档标题、公式以及列表的编号采用规则的方式进行纠错。该方法在100篇的实验数据集上总体准确率接近100%,F度量总体可以达到70%以上。

本文方法只针对文档的局部构件查错,针对文档全局逻辑结构的查错与纠错,采用了基于语法的方法,不在本文展开。针对目前本方法存在的召回率较低的问题,将尝试构造更多的规则应用于文档构件的查错中,例如,针对不同类型的文档构建针对性的纠错规则;同时采用更好的文档结构识别模型。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!