基于双向LSTM网络的流式文档结构识别
2020-01-16田英爱
张 真,李 宁,田英爱
(北京信息科技大学 a.网络文化与数字传播北京市重点实验室; b.计算机学院,北京 100101)
0 概述
流式文档由若干基本单元构成,每个单元在文章中都具有不同的作用,如标题、摘要、表格等。文档结构识别就是对每个单元对应的逻辑标签进行识别,这是诸多应用的基础。例如,排版格式优化任务以往需要人工处理,费时费力,如果计算机能够判断出每个单元的逻辑标签,进而分析出文档的逻辑结构,便可以自动地按照某种规则对其进行排版,保证文档排版质量并大幅提高效率。此外,文档结构识别对于一些自然语言处理应用,如文档分类、结构化检索、文档理解等,也有重要的作用。
以往的文档结构识别主要针对版式文档领域,流式文档结构识别的相关研究较少。现有的流式文档结构识别主要应用规则化方法或机器学习方法,识别效果不够理想。此外,由于所建立的规则或方法与文档类型高度相关,一旦文档类型改变,需要重新建立规则或识别模型,其泛化能力有限。针对上述问题,本文提出一种基于双向长短期时间记忆(Long Short-Term Memory,LSTM)网络的结构识别方法,通过提取内容、格式和语义特征,构建双向LSTM神经网络识别模型,提高识别结果的准确性。
1 相关研究
目前,国内外已有很多针对固定版式文档的版面分析方法[1],其目标是研究版面各区域与逻辑标签之间的关系,其与流式文档的结构识别有一定的联系。文献[2-4]从文档中提取出格式与内容特征,形成文档的特征表示。另有研究发现,在格式与内容特征之外,增加文本内容的语义特征也能改善文档结构识别结果。例如,文献[5]利用循环神经网络学习文档的排版格式、内容和语义特征,并用n-gram进行表示,文献[6]使用word2vec模型学习文档的语义特征,通过构建前馈神经网络识别较短篇幅文档的逻辑结构。在版面理解方面也已出现一些较成熟的产品,例如方正飞翔软件[7]通过版式分析,将文档表示成可扩展标记语言(XML)形式的流式文档,进而得到与不同模板相对应的排版结果。然而,流式的XML文档有可扩展、半结构化和自描述的特点[8],而版面分析主要解决规范出版物的版面区域标注问题,文档的逻辑结构识别并非其主要目标,加之流式文档的结构远比版式文档复杂,并且经常带有排版错误,因此,版面分析方法不能直接应用于流式文档的结构识别。
流式文档的结构识别方法主要包括基于规则的方法和基于机器学习的方法。在基于规则的方法中,文献[9-10]通过比较待测文档和标准模板来识别文档的逻辑标签,文献[11-13]利用文档的排版格式与文字内容来匹配预先确定的规则,以判断文档结构。由于流式文档的结构通常非常复杂,因此基于规则的方法需要构造大量的规则,并且对于排版不够规范的文档,其容错能力较差。基于机器学习的方法应用学习模型构造逻辑标签分类器,该方法不需要大量规则且容错能力较强。例如,文献[14]利用字体、字号等8项排版特征,通过支持向量机(Support Vector Machine,SVM)和随机森林构造文档结构识别模型,文献[15]在格式特征的基础上增加了内容特征,使用条件随机场(Conditional Random Field,CRF)学习文档特征,并构造识别模型。基于机器学习的方法较为灵活,其基础是特征提取,而现有方法大多仅采用格式和内容特征,特征数量较少,因此识别准确率不高。
如果将流式文档中的每个部分看作一个基本排版单元,将流式文档的结构看作这些基本单元组成的一个序列,则文档结构识别可看作一个序列标注的问题。然而,现有的机器学习方法很少考虑文档单元之间的长距离依赖关系,对识别准确率造成影响。
本文采用能够处理序列数据的循环神经网络(Recurrent Neural Network,RNN)构建流式文档结构的识别模型。由于RNN是一个随序列而运作的神经网络,因此其能够很好地处理序列数据,并从中学习有效特征。LSTM作为RNN的一个变种,有效解决了序列之间的长期依赖问题。近年来,LSTM得到广泛应用,例如,文献[16]针对英文标注任务,利用LSTM将文本序列元素与模型输入相对应,并通过隐藏层的记忆模块学习上下文信息,取得了较好的结果,文献[17-18]应用双向LSTM网络结构,从正向和逆向分别学习特征,文献[19]将机器翻译看作序列标注任务,使用LSTM解码目标语句。本文基于内容、格式和语义特征构建文档结构特征,使用双向LSTM学习文档单元的上下文关系,以提高对文档的结构识别能力。
2 基于LSTM的文档结构识别方法
文档结构识别的主要目标是寻找各个单元与文档逻辑标签之间的对应关系。本文定义逻辑标签集合S={论文名称,作者姓名,作者单位,中文摘要,中文关键词,英文摘要,英文关键词,一级标题,二级标题,三级标题,四级标题,文本段,图,图题,表题,表,公式,程序代码}。
文档结构识别框架包括文档特征提取和模型构造2个部分,其关键在于,提取的特征能够反映不同类型文档单元之间的差异,同时,需要利用文档单元之间的上下文关系构建文档结构识别模型,总体框架如图1所示。可以看出,在特征表示方面,本文将排版格式、文档内容和文本语义特征相结合作为文档单元的特征,在识别模型构建方面,本文基于LSTM并充分利用各文档单元之间的上下文关系进行文档结构识别。
图1 文档结构识别模型总体框架
Fig.1 General framework of the document structure recognition model
2.1 文档结构特征提取
文档单元特征选取是识别文档单元逻辑标签的关键。为了提高机器学习的效率,本文没有将排版后的文档图像传输给模型学习,而是通过人工选取相关特征,再利用标注后的学习样本训练模型。在选取特征时,本文从不同类型文档单元间的差异性出发,选取区分度最高的特征,主要包括格式特征、内容特征和语义特征,具体说明如下:
1)格式特征
格式特征体现文档单元在排版格式上的差异,主要包括:
(1)字号:当前单元的字体大小。
(2)标点:当前单元是否含有标点符号。
(3)句数:当前单元是否为单句。
(4)字形:当前单元是否加粗。
(5)大纲级别:当前单元的大纲级别。
(6)对齐方式:当前单元的对齐方式。
(7)Word对象:当前单元是否为“图”“表”“公式”。
在以往研究中,一般会用到字号、标点、句数、字形和大纲级别等格式特征,而对齐方式与Word对象为本文新引入的特征。由于图题、表题等文档单元有特定的居中、左对齐、两端对齐的规律,而正常排版的图片、公式以及表格对象等在Word中有明确的对象类型,因此引入这些特征能够提高相关文档单元的识别能力。
此外,本文在对一些特征进行编码时,使用了更有效的相对特征。例如,以往研究在表示字号时一般直接将其映射到[0,1]区间,而本文采用相对字体大小的概念,即以出现频率最高的字号为基础,用字号的差值表示各文档单元的字体大小,从而有效地确定标题级别。
2)内容特征
内容特征体现当前单元在文本上的差异,主要包括:
(1)编号:文档单元首部或者尾部的编号值。
(2)关键词:是否含有“摘要”“图”“表”等关键词。
(3)编号位置:编号在尾部还是首部。
(4)特殊符号:是否含有“@”等特殊符号。
以往研究关注较多的是编号和关键词特征,然而,文档单元的编号位置和特殊符号也有重要的作用,例如公式的编号位置一般居于段尾,邮件地址中通常含有“@”符号。
3)语义特征
文本是构成文档的基本内容,文本的语义对于文档的逻辑结构判断能起到辅助作用。通过文本的语义特征不仅可以判断标题和正文之间的关联关系,还可以判断文档的修辞结构。在面向文档结构识别的神经网络中,通常采用词袋模型将文本内容直接输入到网络中进行学习,由于文本内容的数据量庞大,学习文本的规律性存在一定的困难,并且机器学习的负担较重。文献[20]提出一种doc2vec方法,将可变长度的段落文本表示为固定长度的特征向量,从而有效降低特征维度。该方法在训练过程中,随机采样段落中的上下文词汇,采用无监督算法学习可变长度的段落文本,将长文本压缩为固定长度的向量,并通过上下文关系捕获段落的语义信息。本文在文献[20]的基础上,用doc2vec对段落文本进行编码并将其表示为一个向量,从而对文档中的长文本进行概括,并保留其语义信息。
流式文档本质上是可编辑的XML,Word对象模型为开发人员提供了丰富的软件开发工具包,非常简单易用。本文基于Word对象模型提取文档特征,由于流式文档的格式内容并非规范化的,因此在提取文档特征时可能出现以下2种错误:
1)文档单元内部的格式不一致,例如,某个单元中同时含有8号字和16号字,Word对象模型无法确定字号特征。针对该问题,本文选择文档单元中占比最大的字号作为最终特征。
2)提取的内容特征并非当前文档单元实际所需要的特征。例如,某文档单元的逻辑标签为正文,但是含有“表”关键词,会对文档单元识别结果产生影响。因此,本文结合关键词一般只出现在段首的特点,在提取特征的过程中,只在段首位置提取关键词,尽量减少上述情况的出现。
图2以本文输入特征为例,给出字号、标点、句数、字形、关键词、对齐方式6项特征。其中,字号特征经过标准化处理,图片没有字号因此标记为0。标点、句数、字形特征为bool值,例如,标签为“论文名称”的段落无标点,句数为单句,字形加粗,则其标点、句数、字形特征分别为False、False、True,最终将False值设置为0,True值设置为1。关键词与对齐方式特征属于离散特征,因此,需对其进行one-hot离散化处理。
图2 流式文档特征提取示例
2.2 文档结构识别模型
流式文档结构识别可以看作是文档单元上的序列标注问题,由此,本文基于LSTM网络构建结构识别模型,如图3所示。在图3中,网络的第1层对高维的输入向量进行降维,第2层为循环层,从正向和逆向学习文档中每一段的状态向量,最后通过状态向量预测该段的逻辑标签。
图3 基于双向LSTM神经网络的文档结构识别模型
Fig.3 Document structure recognition model based on bidirectional LSTM neural network
LSTM在传统的RNN模型的基础上重新设计了隐藏层节点的记忆模块,引了输入门it和输出门ot用于调节输入数据的信息和记忆单元的状态信息,利用遗忘门ft清理学习过程中的无用信息,从而有效利用长距离的序列信息。此外,通过LSTM的隐藏节点来发现各个段落局部之间的相互关系。
(1)
ft=σ(wf[xt,ht-1])+bf
(2)
it=σ(wi[xt,ht-1])+bi
(3)
(4)
(5)
计算输出门的值ot,并根据ot与ct得到LSTM的输出及隐藏状态ht,具体公式如下:
ot=σ(wo[xt,ht-1])+bo
(6)
ht=ot×tanh(ct)
(7)
Pt=Softmax(Wp·ht+bp)
(8)
3 实验结果与分析
3.1 实验数据与评价指标
针对文档结构识别,目前还没有公开的流式文档语料库,因此,本文构建了一个由1 365篇学术论文、82 763个文档段落组成的语料库。这些文档来源于学位论文和多个学报,如食品科学技术学报、北京信息科技大学学报、北京邮电大学学报等,鉴于文档的保密要求,本文在github上公布了其中68篇数据(具体网址为https://github.com/COSLab)。将这些文档按照4∶1的比例随机划分为训练集和测试集,由于存在逻辑标签数量分布不平衡的问题,简单采用精准率P、召回率R和F值作为评价指标是不够的,因此需要同时采用宏平均和微平均来衡量文档结构识别方法的性能。
3.2 结果分析
将文献[14-15]方法与本文方法进行对比。文献[14]从流式文档中提取格式特征,在此基础上搭建Random Forest、SVM、KNN和NB 4种不同的机器学习模型进行文档结构识别,本文选择其中表现最好的Random Forest进行对比实验,在重现其方法时选择原文中的特征处理方式,参数tree的值设置为其论文中表现最优的100。文献[15]在提取格式特征与内容特征的基础上,使用CRF、MEMM、HMM对文档段落进行分类,本文同样选择其表现最好的CRF进行对比。3种方法的识别结果对比如表1所示,其中F值的最优值加粗表示。
表1 3种方法的识别效果对比
由表1可以得出以下结论:
1)本文方法总体上优于其他2种方法,在18类逻辑标签识别的F值中,本文方法对其中14个标签取得了最优值,F值的宏平均和微平均也优于其他2种方法,说明本文方法所提取的特征集合和构建的双向LSTM模型能更好地完成文档结构识别任务。
2)在程序代码识别方面,文献[14]使用的Random Forest识别效果较好,比本文方法高0.06。在中文摘要、中文关键词、公式的识别方面,文献[15]的识别效果最好,其中,中文摘要和中文关键词识别的F值比本文方法高0.01,公式识别的F值比本文方法高0.05。
3)程序代码识别是一个难点,其F值最高仅为0.50,同时,三级标题和公式这2类逻辑标签的识别性能较差。图4给出了识别错误的样例,可以看出,96%的公式被误识别为图片和正文,其原因是用户在编辑流式文档时,公式常使用图片形式呈现,并且公式可能和正文处在同一段落,难以进行区分。对于三级标题的错误识别,其中70%被误识别为二级标题,这是因为二级标题与三级标题的差异较小,此外,83%的程序代码被误识别为正文与公式,其原因在于程序代码的数量较少,而正文的数量较多,造成数据不平衡,并且程序代码作为单行出现时与公式较为相似。
图4 文档结构分类错误情况
4)相比于不考虑上下文信息的Random Forest,本文方法的识别准确率提升较为明显,在姓名、单位、一级标题、文本段、图片和表题的识别任务上,本文方法的F值都高出0.10以上,对于一级标题的识别,本文方法的F值比文献[14]的Random Forest高出0.22。
将本文方法与方正飞翔软件进行对比,随机选出15篇论文进行识别,结果如表2所示。可以看出,在18类逻辑标签中,本文方法对其中15类的识别效果优于方正飞翔,其F值的宏平均与微平均比方正飞翔高0.08。此外,方正飞翔软件在“图”“图题”“表”上的识别效果较好,但是本文方法在这3类标签类别的识别结果上仅比方正飞翔的F值低0.02。
表2 本文方法与方正飞翔软件的识别效果对比
表3给出不同输入特征对文档结构识别效果的影响。可以看到,在文档结构识别中,格式和内容特征起到主要作用,语义特征起到辅助作用,将三者结合可以达到最好的识别效果。
表3 不同特征对识别结果的影响
4 结束语
本文针对流式文档结构识别的目标,结合流式文档的特点,提出一种基于双向LSTM网络的文档结构识别方法。从文档单元的格式、内容与语义方面提取关键特征,将文档结构识别看作序列标注问题,并使用双向LSTM网络构建识别模型,以充分利用神经网络的泛化学习能力和文档单元之间的相互关联。实验结果表明,该方法能够有效区分不同文档单元的类型,其文档结构识别能力优于文献[14-15]的方法,也优于方正飞翔软件。然而,本文方法与文档排版格式优化和文档理解等的应用需求还有一定的差距,下一步考虑对模型的容错识别能力进行改善,同时在目前识别的18类逻辑标签的基础上,增加页眉、页脚、引用、公式符号和表格单元等标签,以提高文档结构识别的准确性。