郝海利,李 宁,田英爱,耿 思
(北京信息科技大学 计算机学院,北京 100101)
随着社会的信息化发展,日常工作和生活中会产生各种各样的文档,其中流式文档涵盖了大量的信息。与普通文档相比,流式文档在文本内容之上附加有特定的格式信息。文档格式中具有相对独立语义和独立功能的子结构称为文档构件,不同的文档构件具有不同的格式信息,且文档构件之间存在层层嵌套的关系。例如在一篇学位论文中,各部分的标题使得整篇论文层次分明,标题通过排版格式又很好地和正文内容区分开来。流式文档格式信息的提取有助于计算机更好地理解文档,有利于对流式文档进行自动排版等,因此具有广泛的应用价值。在过去的流式文档构件识别研究中通常采用基于模板的方法[1],对于文档标题的识别一般采用正则匹配的方式[2],局限性较大,且人工制定的模板难以描述复杂的文档结构。因此本文为更深层次地理解文档,挖掘流式文档各构件的特征从而尽可能准确地识别包括标题在内的更多的文档构件。文档构件包含大量的语义信息(如题目,标题等),本文从构件的格式特征和内容特征两方面来分析,分别计算2种特征下的构件得分,再通过加权计算得出最终的构件识别结果,最终利用文档排版规则重构文档逻辑结构。
文档理解包括版式文档理解、流式文档理解等。学术届已对版式文档理解进行了大量的研究[3]。版面理解主要针对固定的版式文档,对版面内元素的区域和位置关系进行自动分割和判断,然后将版面的物理结构映射为逻辑结构。文献[3]为了得到正确版面结果提出了基于SVM学习模型算法,解决了传统版面分析算法中普遍存在的无法准确得出最佳参数的问题。还有一些版式研究针对特定格式内容[4],例如表格和图形。Web页面包含大量半结构化的信息[5],Web文档理解主要应用于Web信息抽取。文献[6]采用启发式方法,按照各个部分的字体大小和缩进距离推导出页面上的层次结构。文献[7]提出一种基于集成学习和二维关联边条件随机场的Web数据语义自动标注方法。流式文档同样是半结构化数据,国内外研究中对于其构件识别的方法也有所不同。文献[8]则是采用基于规则和模板的方法识别构件。
本文研究流式文档理解过程中的文档构件识别。文档构件包含文本具有的内容特征,还具有流式文档在编辑时特有的格式特征,特征选择影响着构件识别的结果,以及之后结构识别的准确率。在版式文档理解中,通常采用图像特征识别文本角色,如OCR识别技术。而在构件识别中常用到的特征有内容特征、格式特征、对象特征等。如阚运奇[9]通过“摘要”、“目录”及序号“x.x”、“x.x.x”等关键字的检测来判断文档构件的逻辑标签。基于内容特征的方法简单快速,但是往往依赖于文档类型进而导致通用性差。基于VSM的方法[10]充分利用了文档的格式特征,但是由于格式中存在多种特征,包括定性分量(如字体)和定量分量(如字号),在去量纲化时难以找到恰当的变换方法和权重。彭欣[11]结合了拼写校正中的N-Gram索引和模式识别中的隶属度识别文档构件,较好地解决了上述问题,但是该方法未能充分利用有助于结构识别的内容特征。
版面理解的重点是判断区域的上下文关系和层次结构,基于图像理解文档内容。版面分析的方法可以归为3类,包括自顶向下、自底向上及混合方法。自顶向下的方法[12]从整个文档图像开始迭代分割成更小的区域,当所有得到的区域都对应于该文档所描述的基本单元(如字,行等)时停止分割,缺点是无法处理复杂版面;自底向上的方法[13]从文档图像像素开始,将像素聚集成字、行及文本块等这样的单元,缺点是计算开销大,易出现错误;混合方法就是融合上述2种方法,是开发性能优越版面分析系统必选的策略。流式文档结构识别的方法与版面分析的方法类似。由模板的结构规则推导出待测文档结构属于自顶向下的方法;从识别出的文档构件推导出文档结构属于自底向上的方法。为了达到更好的识别效果,本文将2种方法结合起来分析文档的整体结构。
综合分析基于内容特征和格式特征的文档构件识别的优势和劣势,结合版式文档在结构理解中的方法,本文提出一种融合内容特征和格式特征来识别构件、自顶向下和自底向上结合来识别结构的流式文档理解方法。
文档排版规则就是基于文档构件描述文档结构。文档构件可以按格式功能点划分、按特定文档的逻辑结构划分以及按修辞结构理论划分等等。本文以段落为单位并按照各段落所表示的功能对文档构件进行划分。
文档一般是树形结构,文档的构造规则是通过层次化的关系描述文档的结构,包括文档构件出现的先后顺序、出现的次数以及嵌套结构等。XML Schema是一种定义词汇表的方法,便于表示树形的信息结构,可以清楚地描述文档的排版规则。因此本文采用基于XML Schema的排版规则来描述文档不同语义构件组成文档的规则。排版规则主要用于描述文档构件及其特征,其次用来分析文档逻辑结构是否正确。本文以文档中较常见的学位论文为例,采用XML Schema表示的排版规则,如图1所示。
图1 基于XML Schema的论文排版规则
排版规则中除了表示文档结构外,还要描述各个构件的排版格式,分为格式特征和内容特征。格式特征包括字体、字号、字形、对齐方式、首行缩进、段前段后间距和行距等信息;内容特征包含该构件中的关键字(如摘要、关键词)或者是该构件的特定格式(如章节的编号格式)。文档的排版规则是分层次进行描述的,文档根据下层的排版规则识别各个构件,结合格式特征和内容特征对文档构件进行识别。文档构件识别结果通过上层排版规则的引导,采用自顶向下和自底向上相结合的方法进行识别,最终得到文档的逻辑结构。其过程如图2所示。
图2 基于排版规则的文档理解方法
在构件识别过程中,首先建立格式向量表示字体等构件格式特征,提取文档构件中关键字等内容特征作为内容向量,分别计算待识别构件2种特征与候选构件的得分并对其加权计算,得出候选的构件标签。
在流式文档中,基本的排版元素是句和段落;除此之外,还包括图表和其他对象等等。因此,文档构件可分为2类:1)基本构件,指的是以文字段落为基本单元的文本类构件,如摘要,标题等;2)特殊构件,指的是非文字内容或者由复杂内容组成的构件,如图片和表格。文档构件蕴含着多种特征,一般从格式特征、内容特征和对象特征3个方面进行分析。
1) 格式特征。不同的文档构件其排版格式一般不同,这有助于区分不同的文档构件。比如,字体、字号较为醒目的段落一般为标题段落。本文选择经常用来设置构件的特征进行分析,包括字体、字号、字形、对齐方式、首行缩进、行距和段前、段后间距。以一般的学位论文为例,一级标题的格式为(字体:宋体;字号:三号;字形:加粗;对齐方式:居中;首行缩进:0字符;行距:1.5行;段前间距:0行;段后间距:0行)。因此,根据段落的格式信息可以初步判断出该段落所对应的构件。
2) 内容特征。通过对文档内容进行分析,发现文档有其固定的文档格式,包含特定的关键字,有特定的章节编号格式等。
① 关键字信息。如毕业论文的文档构件中包含“关键词”,“目录”,“致谢”,“附录”等关键词,这些文档构件只包含这些关键词,不包含其他文字,并且独立成段。除此之外,在图片下面出现以“图”或“Fig”后跟数字的形式开头的段落一般为图题,在表格上方出现以“表”或“Table”后跟数字的形式开头的段落一般为表题。
② 特定的章节编号格式。主要用于判断论文的标题级别。比如,一级标题的编号格式是“第n章XXX”或“NXXX”,二级标题的编号格式是“N.NXXX”,其中n可以用汉字(一,二,三…)或阿拉伯数字(1,2,3…)表示,N只能用阿拉伯数字表示。
3.2.1 基于格式特征的构件识别
本文在文献[11]基于格式索引的文档构件识别方法基础上,扩展了可识别构件的种类如图题、表题和列表。根据流式文档构件的格式信息,本文采用8个区分度较高的格式特征,包括字体、字号、字形、对齐方式、首行缩进、行距和段前、段后间距。根据格式信息建立标准模板文档和待测文档的词典,词典中记录待查文档和模板文档中每个格式特征在其各自文档中出现的值,每个值对应不同的构件,通过计算待识别段落在各个构件上的得分,其得分最高的构件则为该段落所对应的构件。基于格式特征识别构件的具体算法如下所示。
Algorithm:Component Recognize1. Let c be the component to be identified2.Let c be the component set3.Let f be a feature4.Let F be the feature set5.Let dw be the words of document dic that will be identified6.Let w be the words of standard document7.for each c ∈ C8. for each f ∈ F9. for each dw ∈ dicc10. if Vf(c) = dw and s(dw,w)=max{(s(dw,dw's branches))}11. scoref(c)= s(dw,w)∗ e(c,dw's index)∗ w(c,f)12.score(c)=∑ scoref(ci)13.if score(ci)=MAX(score(c))14.return ci
其中Vf(c)是构件c在某个特征上所取的值,s(dw,w)是待测文档词典中的词汇dw和标准文档词典中的词汇w间的隶属度,e(c,dw’sindex)是构件c在待测文档词汇dw中的出现次数,w(c,f)是构件c在特征f上的权重,scoref(c)是构件c在某个特征f上的得分,score(c)是构件c在所有格式特征上的总得分。
3.2.2 基于内容特征的构件识别
不同的文档构件其所具有的内容特征不同,本文综合利用多种内容特征来识别文档构件,主要用到5个特征。按照特征对文档构件识别的贡献度从大到小的排序为:对象特征,关键字,章节编号格式,标点符号和句数限制。
基于内容特征进行文档构件识别时,对待识别段落提取内容特征,并将其表示成一个向量,然后将该向量与标准模板中所有构件的向量进行异或操作,即对向量归一化。标准模板中各个构件的向量表示如表1所示。各个特征分量中的0表示该构件不具备该特征;当具备该特征时,用其所拥有的具体特征来表示,如一级标题的级别为1,则其章节编号特征为1。当该构件为多句时,句数限制为0;为单句时,则为1。
表1 标准模板中各个构件的向量表示
最后计算待识别段落在各个构件中的得分,选出得分最高的作为该段落所对应的构件。其计算公式如下:
R=a×w1+b×w2+c×w3+
d×w4+e×w5
(1)
式中:R为构件得分;a、b、c、d、e分别为对象特征分量、关键词分量、章节编号格式分量、标点符号分量、句数限制分量;w1~w5为各个特征分量的权重。对于权重设置,本文借鉴贪心算法的思想,把整个问题分解为多个阶段,通过一系列局部最优解的选择,达到整体的最优解。按照各个内容特征对文档构件识别的贡献度依次调整各个特征的权重,使识别结果达到最优。
3.2.3 基于融合特征的构件识别
在基于格式特征来识别文档构件中,当2个不同的文档构件的排版格式相同时,如学位论文中摘要和一级标题设置的排版格式相同,这时识别之后会有两个候选构件,将影响到后面的文档结构识别结果。基于内容特征来识别文档构件,比较适用于有特定结构的文档,一旦文档内容中没有出现相对应的内容特征时,将会影响其识别结果,甚至会出现无法识别的情况。因此,本文综合考虑格式特征和内容特征,对其特征的得分加权计算,选出得分最高者作为该段落最终的结果,方法如下:
S=FS×w6+CS×w7
(2)
式中:S为最终的得分;FS为基于格式特征识别的得分;CS为基于内容特征的得分;w6、w7分别为其权重,本文通过实验结果确定了其权重大小,依次为0.5、0.5。
文档构件识别完成以后,便可分析构件之间的逻辑关系,确定文档结构。在文档排版规则的引导下,从根节点开始按照自顶向下、从左到右逐个遍历语法树,并自底向上识别文档构件,向上归约,最终推导出一棵符合语法的文档逻辑结构树。首先读取XML Schema文件,采用深度优先遍历算法,自顶向下、从左到右的顺序访问其下的每一个节点;然后从每个元素结构中获得其引用的复杂类型或简单类型,并对其进行分析。复杂类型中又包含新的元素和新的简单、复杂类型,需要一直迭代进行处理,直到找到叶子节点为止。
基于排版规则对文档结构进行层次化分析的过程,可类比于句法分析的过程。文档结构识别算法是以段落为单位进行识别的,为了避免连续重复对同一个状态进行判断,本文将文档中连续出现的同一个角色的段落合并为一个段落进行处理。文档结构是具有层次的,可以将其细分为若干个子结构,并且语法树中的非叶子节点表示一个子结构。在对文档进行层次化分析时,为了能够确保每个层次的结构识别的准确性,本文将不同层次的识别结果分别以XML形式存储,并调用相应层次的Schema进行验证,验证成功后将其合并到上层结构的XML文件中,最终获得XML形式的整体文档结构的分析结果。
本文进行了两方面的实验,一是基于融合特征的文档构件识别实验;二是该方法与其他方法的比较。在基于特征识别文档构件的过程中,本文采用北京信息科技大学的300篇学位论文作为实验数据集。由于文档的保密性等要求,目前该数据集在GitHub(https://github.com/COSLab)上只公开了部分文档。实验均在windows10系统下运行,CPU主频3.30 GHz,内存8 GB,开发平台Visual Studio 2013,算法实现采用C#,Java语言。本实验采用准确率P、召回率R和F值来评测文档构件识别的结果:
(1)
(2)
(3)
式中:A为待评测逻辑标签识别正确的个数;B为待评测逻辑标签识别错误个数;C为错误识别为待评测逻辑标签个数。具体数据均通过实验分析获得。
本文在基于格式特征的文档构件识别的基础上,加入了内容特征和对象特征对文档构件进行识别,识别结果如表2所示。
表2 文档构件识别结果 %
由表2可知,结合多种特征识别文档构件算法的准确率和召回率都较高,说明本文方法既可以准确地识别出该段落所对应的构件,也可以尽可能多地找到某个文档构件的候选段落。其中图题和表题的准确率较低,是因为图题和表题是基于关键字“图”或“表”进行内容特征识别,但是由于文档撰写者在编写图题或表题时往往直接写编号不写标签,因此导致原本属于图题或表题的段落被误判断为正文。
将结合多种特征的文档构件识别算法与基于VSM的文档构件识别算法[10]、基于格式索引的文档构件识别方法[11]、基于Random Forest的方法[14]在上述同一实验集上测试的比对结果如表3所示。
表3 四种文档构件识别算法的结果 %
从表3中可以看出,基于VSM的构件识别算法的准确率最低,其原因在于该算法只能与预先设定的逻辑标签进行对比,不能与任意的一个逻辑标签进行对比,从而导致效果较差。基于Random Forest的构件识别算法的准确率低于基于格式索引的构件识别算法的准确率,其原因在于该方法使用机器学习算法,模型结果的准确率取决于数据特征的选取。基于格式索引算法可以将段落与任意一个逻辑标签进行对比,并无需预先设定逻辑标签。结合多种特征的构件识别算法相对于以上方法,进一步提高了文档构件识别的准确率。
识别文档构件之后,要对构件之间的逻辑关系进行识别。采用相同的实验集来验证文档结构识别的效果,评价指标选用正确率来评价文档结构识别的效果。将本文的结构识别方法与基于有限状态自动机[15]的方法和基于有向图[16]的方法进行比较。其结果如表4所示。
表4 文档结构识别实验结果 %
由表4可以看出,由于前文中构件识别的准确率提高了,使得文档整体结构的识别率也得到了提高。
本文在分析国内外文档理解方法的基础上,提出一种基于融合特征和语法规则的文档理解新方法。该方法根据文档构件包含的各种信息,融合格式特征和内容特征作为文档构件识别特征,提高了构件识别准确率;采用自顶向下和自底向上相结合的方法确定构件之间的逻辑关系,形成文档逻辑结构,为之后的文档格式优化工作打下基础。实验结果表明,该方法比其他几种基于特征识别构件的方法准确率高,结构识别的准确率也高于其他2种方法。但是综合利用多种特征识别文档结构时,各种特征的权重是人工通过实验进行统计的。为了更准确的识别文档构件,可利用机器学习大量训练语料找到合适的权重,这也是今后在文档构件识别中要研究的重点。