论文引用格式:Li Y Q, Du J, Hu P F and Zhang J S. 2023. A method of radical form and hierarchical structure based handwritten Chinese character error correction. Journal of Image and Graphics, 28(08):2382-2395(引用格式:李云青, 杜俊, 胡鹏飞, 张建树. 2023. 结合部首字形和层级结构的手写汉字纠错方法. 中国图象图形学报, 28(08):2382-2395)[0 引 言汉字具有极多的种类和复杂的内部结构,对于初学者而言,学习汉字相当困难,很容易在书写汉字时出错。因此,手写汉字纠错任务应运而生,并逐渐受到学术界的关注(Li等,2022)。手写汉字纠错包含评估和纠错两个子任务,评估指的是判断给定的手写汉字是否被正确书写,纠错则意味着定位手写汉字的错误位置,并提供用户本意书写的正确字。本文沿用Li等人(2022)的设定,将手写汉字错误大致分为笔画级错误、部首级错误和结构混乱3类。笔画级错误指增加、删除或错用某个笔画;部首级错误指对部首的添加、删除或错用;结构混乱是指正确的部首按照错误的结构顺序进行组合。图1展示了3种错误类型的示例,每一对示例中,右侧为错字,左侧为相应的正确字。从图1可以看出,手写汉字的错误往往发生在部首或结构中,表明纠错模型应具备建模汉字内部首、结构的能力,而不能简单地将手写汉字视为一个整体。10.11834/jig.220906送排稿.F001图13种常见错字类型Fig.1Examples of three common misspelled error types((a) stroke level errors; (b) radical level errors;(c) structure disorder)有关手写汉字识别的研究已经有数十年的历史,研究人员提出了一系列卓有成效的模型(Zhang 等,2018)。然而,手写汉字纠错任务与常见的手写汉字识别任务(蒋伟峰和刘济林,2001)有较大区别,主要体现在以下3个方面。1)正确汉字的种类是有限的,但错误汉字的形式是无穷无尽、不可预计的,这要求模型具有较好的泛化性。在本文中,训练集只包含正确的手写汉字样本,而测试集中除了正确的手写汉字样本外,还包含错字样本。模型应该具有迁移学习的能力,可以处理未知的错字样本。因此,手写汉字纠错任务可以视为广义零样本学习任务。与零样本学习相比,广义零样本学习任务的测试集包含可见种类与不可见种类,对应手写汉字纠错任务场景下的正确字与错字,更具有实用性与挑战性。2)错字与正确字具有极高的相似性。这要求模型具备捕获细粒度特征的能力。同时,这也带来了“偏置”(Chao等,2016)问题。也就是说,由于训练集仅仅包括可见正确字,模型在测试时,倾向于将未知的错字样本误分类为某个可见正确字。3)手写汉字纠错任务除了要识别汉字类型外,还需要向用户提供对应的正确字,这是汉字识别任务未曾研究的。为了更好地区分相似的错字与正确字,本文提出了层级部首网络(hierarchical radical network, HRN),以精确捕获包含部首信息的细粒度图像特征,挖掘部首形状结构上的相似性。具体来说,本文使用二次注意力机制,计算每个部首在图像上的响应度,进而得到每个部首出现在图像中的得分。此外,为了区分高度相似的正确字与错字,本文使用部首注意力机制,为不同的部首得分赋予不同权重,体现出不同部首具有不同的重要性,使模型更关注于汉字的某几个关键部首。最后,考虑到汉字具有的层级结构特性,本文借鉴了基于概率解码的思路,对部首的层级位置进行建模。为了验证HRN的有效性,本文在内部的手写汉字数据集上进行实验,并复现了若干已有的模型,包括部首分析网络(radical analysis network,RAN)(Zhang等,2018)、部首计数网络(radical counter network,RCN)(Li等,2020)、层级分解表征(hierarchical decomposition embedding,HDE)(Cao等,2020)和树结构分析网络(tree-structure analysis network,TAN)(Li等,2022)。该数据集包含401 400幅手写汉字图像,涵盖7 000类常见正确字与570类错字。同时,数据集中也包含每幅图像对应的汉字级别标签与部首级别标签。实验结果表明,HRN在手写汉字纠错任务上,超过了现有的其他优秀模型。此外,为了验证模型的泛化性,在大型自然场景数据集CTW(Chinese text in the wild)(Yuan等,2019)上进行实验,并与其他主流方法进行对比,包括整字模型和部首模型,验证了HRN在复杂自然场景下仍然具有较好的鲁棒性与实用性。本文主要贡献如下:1)提出层级部首网络,通过注意力机制与层级编码向量,精确地建模汉字内部结构与部首特征;2)针对错字与正确字之间的高度相似性,提出的二次注意力机制与部首注意力机制能够精确捕获包含部首信息的细粒度图像特征,挖掘部首形状结构上的差异性;3)在手写汉字数据集上的实验结果表明,HRN超过了现有的其他优秀模型,特别是针对错字的识别与纠错。1 相关工作由于手写汉字识别与手写汉字纠错具有一定相关性,本文首先调研了手写汉字识别领域的发展情况。考虑到手写错字的数量无穷无尽、形式不可预测,纠错任务属于广义的零样本学习任务,也调研了广义零样本学习领域的发展。1.1 手写汉字识别与纠错汉字的组成是高度层级化的,每个汉字均可分解为一系列部首,每个部首均可分解为一系列笔画(Chang,1973)。因此,从建模方式的角度,针对汉字识别的研究工作可大体分为基于整字建模和基于部首建模两大类。而深度学习的兴起,使得端到端训练成为主流,逐渐替代了传统方法(张睿 等,2002)。本文重点关注基于深度学习的方法。对于整字建模的方法,Cireşan和Meier(2015)首次将多列深度神经网络成功应用于汉字识别任务。之后,日本富士通的研究小组使用基于卷积神经网络(convolutional neural networks,CNN)的方法在2013年的ICDAR(International Conference on Document Analysis and Recognition)大赛(Yin 等,2013)中获得了冠军。Zhong等人(2015)将传统的八方向特征与GoogLeNet框架(Szegedy 等,2015)相结合,取得了非常高的准确率,识别效果超过了人类表现。随后,人们提出了越来越多的结合深度学习模型和传统的特定领域知识的方法。Yang等人(2016)在图像送入CNN前增加一个领域知识层,包括变形变换、非线性归一化和提取八方向特征等。Luan等人(2018)为利用Gabor特征的尺度方向不变性,将Gabor滤波器加入到CNN设计中。为了缓解手写汉字识别中的书写风格差异性大的问题,Zhang等人(2017)在预先训练的CNN中添加了一个自适应层,以适应新的书写风格。此外,Zhong等人(2015)提出了在常规CNN框架的基础上加入多层池化层,用于多字体字符识别。Tang等人(2018)捕获了汉字的骨架特征,以辅助基于CNN的分类器。上述方法均属于基于整字建模的思路,但在实际应用场景下,由于汉字数量庞大,孤僻字缺乏足够的分类数据来优化模型,长尾问题始终存在。在实际应用时,使用基于整字的分类器很难获得良好的分类性能,而基于部首建模的识别思路具有更大的优势。Yan等人(2017)提出一种部首提取网络,利用部首检测分支得到每个部首大概位置,部首分类分支判断部首类别,再结合整字分类分支的全局特征对汉字进行分类。该网络摆脱了部首模板和烦琐的手动分割策略,实现了直接利用整字监督进行端到端训练。Wang等人(2017)通过检测位置相关的部首来识别汉字,并利用多标签学习来监督残差网络训练,在印刷体数据集上验证了模型的有效性,且具备未知类别识别能力。但是该方法将不同位置的相同部首指定为不同类别,大幅增加了输出的冗余性,且这种方式不易迁移到文本行识别上,可拓展性和鲁棒性较差。Zhang等人(2018)提出部首分析网络(radical analysis network,RAN),用部首序列对汉字进行建模。该方法借鉴编码—解码的模型框架,将输入汉字图像映射为部首按照一定顺序组成的一维序列,已在印刷体、手写体和自然场景数据集上证明了模型的先进性。随着互联网教育的发展,帮助学生自动识别出错字并进一步纠错,引起了工业界的关注,手写汉字纠错任务应运而生。得益于手写汉字识别的长足发展与工业界的急切需求,相关研究一经问世便引起了学术界的关注。手写汉字纠错需要定位错误的具体位置,且难以搜集所有的错字形式,因此往往采用基于部首建模的思路。Li等人(2022)提出树结构分析网络(tree-structure analysis network,TAN),将一个汉字分解为一棵部首树,然后利用分解结果对给定汉字的正确性进行判断,如果是错字,就在正确字集合中,找出距离给定图像最相近的汉字,作为对错误的修正。1.2 广义零样本学习零样本学习旨在训练一个模型,能够根据可见类别样本识别未知类别。在该任务中,要求训练集和测试集的类别不相交。广义零样本学习是对零样本学习任务的拓展,其测试集中同时包含可见类别和未知类别,该设定与实际应用更加贴合,因而更具有实用性。现有对图像广义零样本分类的研究主要可分为两个方向,即基于编码的方法和生成式方法。基于编码的方法旨在学习一种图像特征和类别语义向量之间的映射关系,这种映射可以用于预测未知类别,测试时常常通过比较被测试图像特征和所有类别原型表征之间的相似度来进行识别。近些年,针对不同编码方式的研究有很多。基于图的方法(Zhao等,2017)的优势在于能够保留潜在空间中特征的几何结构,将一个类别表示为一个节点,并通过边建立不同节点之间的关系。基于元学习的方法(Verma等,2020)利用一些辅助任务来帮助提取更有效的特征。基于成分学习的方法(Sylvain等,2019)将未知类别看做部分相关可见类别的结合,通过对可见类别的属性分析来表示未知类别。不同于前面几种方式,基于注意力的方法将输入图像划分为一些区域,并利用注意力机制学习到更多局部特性,在提取图像特征阶段获取更具有区分性的特征,这种方式更适用于细颗粒度类别的分类。Xie等人(2019)提出注意力区域嵌入网络,设计显著区域嵌入分支来学习不同区域的相关性,并利用新型的阈值函数抑制无关区域,设计二阶压缩嵌入分支来提取不同区域特征之间的二阶表象差异,两分支共同作用来获取更有区分性的特征。Zhu等人(2019)提出语义指导的多注意力定位模型,并结合图像整体特征和局部关键特征来获取丰富的信息,另外借助三元组损失函数来增大类间距离,减少类内距离,使学习到的特征更具有区分性。Guo等人(2018)设计堆叠注意力层来逐步过滤无关区域,学习到关键的局部特征。Huynh和Elhamifar(2020)在提取语义图像特征之外,设计了一种属性注意力模块,用学习到的属性权重对相应的属性语义向量进行调整。与此同时,另一个研究方向是通过生成特征来解决训练样本不平衡、训练数据中缺少未知类别的问题。多数研究基于生成对抗网络(Goodfellow 等,2014)和变分编码器(Kingma 等,2013)来生成未知样本,并取得了不错的效果。Xian等人(2018)提出带有分类损失的条件Wasserstein GAN(generative adversarial network),利用未知类别标签的语义信息生成未知的特征。在变分编码器的基础上,Verma等人(2018)提出结合鉴别器,设计一种反馈驱动机制将生成的范例映射到相应的类属性空间,进而帮助生成器生成更有区分性的样例。Schonfeld等人(2019)通过设计分布对齐和交叉对齐损失函数,学习图像和类属性的共享交叉模态潜在特征。考虑到生成模型在训练时容易对已知类别过拟合,导致可见和未知类别的特征和空间重叠,Chen等人(2021)利用基于熵的校准,最小化可见类别和未知类别重叠区域的不确定性。2 层级部首网络在对汉字的分析中,最重要的就是部首和结构信息。每个部首所包含的信息主要体现在其字形结构上,不同部首由于形体构成的不同,具有不同的相似性。例如,“己”和“已”在字形上很相似,那么它们在表征空间内的位置应该很相近。部首信息的合理利用可以帮助增大相似字之间的区分性,对汉字相关任务的解决至关重要。结构就是指整个字的二维空间构成方式,如上下结构代表整个字由上半部分和下半部分组成。由于汉字的结构构成具有层级性,因此对汉字进行层级分解建模对于汉字的表征也很重要。本节从部首字形的角度出发,挖掘了部首形状结构上的相似性,并借鉴细粒度零样本图像分类模型的思想(Huynh和Elhamifar,2020),引入了一种层级部首网络(HRN),通过注意力模块捕获包含部首信息的细粒度图像特征,增大相似字之间的区分性;另外,结合汉字本身的层级结构特性,借鉴树结构分析网络中的基于概率解码的思路,对部首的层级位置进行建模。如图2所示,层级部首网络主要由基于卷积神经网络的编码器和两个注意力模块组成。为了获得包含部首字形信息的表征,在模型输入阶段送入字典中的所有部首,通过弱监督的方式,仅利用汉字的部首编码来监督嵌入层提取部首的字形信息,并通过二次注意力模块计算每个部首在图像特征上的响应度,进而得到部首字形得分,然后利用部首注意力模块计算每个部首在不同汉字图像中的重要性,最后,综合部首树的层级编码,得到输入图像属于每个汉字的概率得分。10.11834/jig.220906送排稿.F002图2层级部首网络框架图Fig.2Architecture of the hierarchical radical network2.1 编码器网络的输入包括给定汉字图像I和字典中的所有部首R={r1,r2,⋯,rM}两部分。图像I经过编码器提取视觉特征B∈RH×W×C,其中H,W,C分别代表视觉特征的高度、宽度和通道数。部首经过嵌入层,得到部首的表征向量V={v1,v2,⋯,vn}。具体为B=CNN(I) (1)vi=Emb(ri) (2)式中,vi∈RD,B=bii=1R,CNN代表卷积神经网络,Emb代表嵌入层。这表示视觉特征B可以分为R个区域,以便后续的注意力模块提取局部显著性区域。本文中, R在数值上等于H×W。2.2 二次注意力模块为了更好地对相似字进行区分,模型需要捕获到细微而具备区分性的局部特征,部首作为汉字的基本构成单元,部首的不同对应着不同的汉字,因此采用二次注意力模块使每个部首聚焦到整个图像的最相关区域,进而计算每个部首的字形得分来衡量每个部首在图中出现的可能性。具体来说,对于部首ri,计算它对于图像区域j的注意力权重,即α(ri, bj)=exp(viTWαbj)∑k=1Rexp(viTWαbk) (3)式中,Wα∈RD×C为网络的可学习参数,是用来度量每个部首表征向量与每个区域视觉特征之间的兼容性。综合图像的所有区域,可以得到ri的部首注意力特征hi,具体为hi=∑j=1Rα(ri, bj)bj (4)式中,hi代表与部首ri相关的视觉特征。层级部首网络的目标是计算图像属于每个汉字的概率得分sc。为此,本文进一步计算部首字形得分ei来衡量输入图像中包含每个部首的可信度,即ei=viTWehi (5)式中,We∈RD×C是将部首注意力特征嵌入到部首表征向量空间的嵌入矩阵。当一个部首出现在输入图像中时,其视觉特征会映射到与部首表征向量距离相近的位置,部首字形得分输出值大;反之,两向量则距离较远,对应较小的可信度。2.3 部首注意力模块由于所有汉字共享一定数量的部首,在一些字中,部分部首是相同的,只有个别部首是不同的,越相似的汉字包括的相同部首越多。因此,一个汉字中包括的所有部首的重要性不同,差异性部首应该受到更多的关注。为了帮助模型关注到重要的部首,本文利用部首注意力模块进行选择。具体来说,基于上述模块得到的部首视觉特征 hi,可以计算出部首ri的重要性得分βi,具体为βi=fsigmoid(viTWβhi) (6)式中,Wβ∈RD×C。这里使用sigmoid函数分别计算每个部首的重要性,这样可以允许多个差异性部首的重要性得分趋1,其余部首重要性得分趋于0。另外,部首重要性得分βi与式(5)中的部首字形得分ei产生了互补的作用,即ei捕获部首ri是否在输入图像中出现, βi起到了类似于门控机制的作用,可以决定ei对最终预测结果的影响程度。2.4 层级编码综合以上两个模块的输出e和β,可以得到输入图像的所有部首得分,每1维对应1个部首,值的大小对应该部首属于输入图像的可信度。Li等人(2020)直接计数部首的个数,以此来识别不同的汉字。但这种方法没有充分利用汉字的层级结构,且容易造成混淆,即不同的汉字可能有完全相同的部首与结构,例如“旮”与“旯”。因此,本文设计了层级编码,对部首在整个汉字中的层级位置信息进行建模,以获取汉字的准确信息。具体来说,首先对每个部首ri进行one-hot编码,得到其编码向量oi,然后结合每个部首在部首树中的层级位置,设置一个衰减系数λ,部首所在的层级深度越深,权重衰减越严重,该部首对整个字的影响越小。另外,为了区分同一层的左右两个部首节点,赋予左右节点不同的系数1+γ (Cao等,2020)。左节点对应γ=-a,右节点对应γ=a。如果是根节点,则γ=0。由此可以得到汉字c的层级编码向量,具体为Sc=∑i=1noi×λdi×(1+γi) (7)式中,Sc∈Rn,n为部首个数,di表示部首ri在部首树中所处的层数。表1展示了以λ=0.6,γ=0.25为例,一些按照上述编码规则生成的层级编码向量。10.11834/jig.220906送排稿.T001表1汉字的层级编码向量示例Table 1Examples of hierarchical encoding vectors of Chinese characters汉字日九刀口其他日0010000旮100.750.45000旯100.450.75000昭0.7510.4500.270.450注:,分别代表上下结构,左右结构。至此,结合部首字形得分e、部首重要性得分β和汉字的部首层级编码Sc,可以计算输入图像属于某个汉字类别c的输出概率得分,即pc=∑i=1nei×βi×sic (8)式中,ei,βi,sic∈R,n为部首个数,下标i表示第i个部首。pc∈R,表示该样本属于汉字类别c的概率。3 实验设计与结果本节首先介绍模型训练和测试细节,然后对模型中的各个模块以及一些重要参数的选择进行实验,并分别在汉字识别和汉字纠错两个任务上验证模型效果,最后通过可视化分析,进一步剖析模型有效的原因。3.1 数据集与评价指标本文使用Li等人(2022)提出的手写汉字数据集。该数据集包含约40万个样本,有5 500个正确字和570个常见错字。所有标签均由人工注释,包括正确性、字级标签和部首级标签。对于错字还注释了其对应的理想字。按照图1的分类标准,570个错字中包括了234个笔画级错误、320个部首级错误以及16个结构混乱。仿照真实的应用场景,所有错字样本仅出现在测试集,以验证模型的泛化能力。5 500个正确字划分为训练类和验证类两部分,且互不相交。其中训练集中的每个汉字包含50个书写人的样本,验证集的每个汉字包含200个书写人的样本。考虑到这是一个广义零样本学习任务,测试集由2 000个可见正确字和570个未知错字组成,这些正确字是从训练类中随机选择的,测试集中的每个字都包括20个书写人的样本。具体的划分情况如表2所示。10.11834/jig.220906送排稿.T002表2手写汉字数据集的统计划分情况Table 2Statistical division of the handwritten Chinese character dataset手写汉字总和训练集验证集测试集类别6 0705 0005002 000 + 570样本401.4 k250 k100 k40 k + 11.4 k本文使用F1分数、准确率和修正率3项指标对模型在纠错任务中的两个子任务的表现进行全面评估。1) F1分数。在评估任务中,需要对给定的汉字图像判断正确性,即判断其属于正确字还是错字,判别结果将会影响后续的操作。如果是错字,就进入修正模块进行纠错,如果是正确字则无需后处理。为了评价模型评估正确性的能力,可以分别计算两个类别的精确率(precision)和召回率(recall),然后计算F1分数。2) 准确率。现有的常用正确字有几千类,错字类别更是多到无限,除了对正确性进行二分类判断外,模型对字的具体类别的区分能力十分重要。而且对于后续的修正环节来说,对给定汉字具体类别的预测是必不可少的。因此,对正确字和错字分别统计其分类准确率,以对模型分类能力进行评判。3) 修正率。在经过正确性的判断后,需要对错字进行修正。本文设置了修正率来直观地反映模型的纠正能力。为了纠正错字,模型不仅需要正确地预测汉字类别,还要能够推测出理想字,也就是用户打算书写的正确字,这样才是成功地对错字进行了纠正。假设错字测试集为Na,Nc表示其中可以正确分类的样本集合,Nr表示其中可以正确找到理想字的样本集合。那么,修正率CR计算为CR=Nc⋂NrNa (9)3.2 训练和测试细节3.2.1 训练细节如图3所示,本文定义了10种常见的部首空间结构(Zhang等,2018),包括上下结构、左右结构、左上包围结构、右上包围结构、左下包围结构、下包围结构、上包围结构、左包围结构、全包围结构和重叠结构。通过这些空间关系,任一汉字可以被拆分为部首的组合。10.11834/jig.220906送排稿.F003图310种常见部首结构的图形表示Fig.3Graphical representation of 10 radical structures在训练过程中,假设对于给定图像I,其汉字的one-hot标签为y,本模型使用交叉熵函数作为损失函数,具体为L=-∑i=1myilogpi (10)对于不同的任务,考虑到数据量的差异,使用了不同配置的DenseNet(Huang 等,2017)模型作为编码器。在针对汉字纠错任务的实验中,DenseNet主要由3个密集块和2个转换层组成,每个密集块包括22个瓶颈层,瓶颈层的增长率为24。在第1个密集块之前,增设了一个大小为7 × 7、步长为2的卷积层。输入图像大小被规整到统一的64 × 64像素。在识别任务上,考虑到CTW 数据集的复杂性和丰富性,使用了包括4个密集块和3个转换层的DenseNet网络,每个密集块包括22个瓶颈层,瓶颈层的增长率设置为24。转换层汇总每个密集块的特征输出,并以0.5的比率进行特征通道数衰减。同样地,图像在送入第1个密集块前,先经过一个大小7 × 7、步长为2的卷积层。模型训练时,采用Adam优化器,在汉字识别任务中,学习率设置为10-4;在汉字纠错任务中,学习率为5 × 10-4。模型中使用dropout来缓解过拟合,丢弃概率为0.2。3.2.2 测试细节在推理阶段,给定一幅汉字图像和所有候选汉字集合C,根据其部首树表达,可以得到所有候选汉字的层级编码S以及模型输出的部首字形得分e、部首重要性得分β,然后结合3个模块的输出,计算属于每个候选字的概率pc,选择概率值最大的类别作为预测汉字c,具体为pc=∑i=1nei×βi×sic (11)c=argmaxc∈Cpc (12)通过以上步骤即可得到预测的汉字。对于手写汉字纠错任务,还需要判断其是否为正确字及进行纠错。如果预测汉字c在错字集合中,那么就判定输入图像中为错字。接下来,在正确字中找到与其最接近的汉字,作为其理想字。具体来说,候选汉字集合C由正确字集合Cr和错字集合Cm组成,在使用式(12)计算出每个候选字的概率后,再在错字集合Cm中寻找理想字c^,即c^=argmaxpcc∈Cm (13)3.3 消融实验从原理上,本模型中的二次注意力模块可以通过定位部首相关区域来计算每个部首是否在图中出现;部首注意力模块可以判断每个部首的重要程度;层级编码可以对部首树中的结构信息进行建模。本文设计了一系列消融实验和关键参数的对比实验,所有实验均在基于汉字纠错任务的手写汉字数据集上进行,并以分类准确率指标为衡量标准。如表3所示,在HRN模型的基础上,依次去掉层级编码和二次注意力模块进行实验。可以看到,如果在编码时不考虑部首的层级结构,而是直接用部首个数代替,正确字测试集上的准确率下降了0.4%,错字测试集上下降了3.4%。如果进一步地去掉二次注意力模块,只保留部首注意力模块,缺少了对细粒度特征的捕获,模型对相似度高的错字的区分能力显著下降,在错字测试集的分类准确率下降了8.2%。从这些实验可以看出,3个子模块的设计相互补充,逐步提高模型的整体性能。10.11834/jig.220906送排稿.T003表33个模块的消融实验Table 3Ablation experiments with three modules部首注意力二次注意力层级编码正确字错字√--94.656.2√√-94.764.4√-√94.762.2√√√95.167.8注:加粗字体表示各列最优结果,“√”表示采用,“-”表示未采用。%除此之外,在进行层级编码时,有两个关键参数,即层级衰减系数λ和左右节点系数γ,实验对这两个参数的选择进行了详细对比。由于部首所处的层级深度越深,其对整个字的影响越小,所以在实验时设置了λ≤1,并以0.2为取值间隔进行实验,同时固定系数γ=0.25,并以分类准确率为衡量指标。该系数对验证集和测试集的影响如表4所示,可以看到,相比于不考虑层级影响(λ=1),适当的衰减系数给模型在验证集、正确字测试集和错字测试集上的性能都带来了一定程度的提升,按照验证集性能最大化的标准,选定λ=0.6,此时,正确字测试集的性能不下降,且错字测试集上的准确率提升了2.8%。10.11834/jig.220906送排稿.T004表4层级衰减系数λ对分类精确度的影响Table 4The effect of hierarchical decay coefficient λ onclassification accuracyλ验证集正确字测试集错字测试集0.290.6093.2066.900.491.3094.2068.700.692.0095.1067.800.891.0094.9068.60189.8095.0065.00注:加粗字体表示各列最优结果。%系数1+γ能够为左节点和右节点带来区分性,γ值的选取同样会对模型产生不同的影响。考虑到γ∈a,-a,对a的不同取值进行了若干实验。如表5所示,在固定λ=0.6的前提下,设置了不同的a值,并观察验证集和两个测试集的性能表现。其中,a=0相当于编码时不区分左右节点,可以看到,当a取值很小时( 0.1),模型在两个测试集上的性能变化也很小;当a取值合适时( 0.5),模型在错字测试集上的性能带来了不同程度的提升;随着a取值进一步增大,模型性能开始下降。综上,以验证集的准确率为参考,选定a=0.25,这时错字集的准确率相比于a=0提升了1.3%。表5 节点系数取值 a 对分类精确度的影响Table 5 The effect of node coefficient a onclassification accuracy/%10.11834/jig.220906送排稿.T005a验证集正确字测试集错字测试集091.6095.0066.500.0591.4094.9066.900.191.8095.0068.200.2592.0095.1067.800.591.8094.0065.800.7591.4094.1064.30注:加粗字体表示各列最优结果。3.4 汉字识别任务的实验为验证模型在汉字识别任务上的表现,基于以上介绍的参数配置,在大型自然场景数据集CTW上与其他主流方法进行对比实验,包括整字模型和部首模型,具体包括AlexNet(Alex network)(Krizhevsky等,2012)、ResNet(residual network)(He等,2016),Inception-v4(inception-v4 network)(Yuan等,2019)、DenseRAN(radical analysis network with densely connected architecture)(Wang等,2018)、FewshotRAN(few-shot radical aggregation network)(Wang等,2019)、HDE(hierarchical decomposition embedding)(Cao等,2020)和Stroke-based(Chen等,2021)。结果如表6所示。10.11834/jig.220906送排稿.T006表6与其他手写汉字识别方法的准确率对比Table 6Comparison with other handwritten Chinese character recognition methods on accuracy模型类型准确率AlexNet整字模型76.43ResNet50整字模型79.46ResNet152整字模型80.94Inception-v4整字模型82.28DenseNet整字模型79.88RCN部首模型84.12M-RCN部首模型84.93DenseRAN部首模型85.56FewshotRAN部首模型86.78JSRAN部首模型87.57HDE部首模型89.25Stroke-based笔画模型85.29HRN部首模型88.08注:加粗字体表示最优结果。%从表6可以看出,在CTW数据集下,整字模型与笔画模型的性能普遍低于部首模型。与多任务学习网络M-RCN相比,本文提出的HRN额外增加了对部首在汉字中的层级位置信息的利用,而且通过二次注意力模块的设计,捕获了细粒度部首特征,而非单纯提取汉字图像的全局特征。因此HRN模型的识别率进一步提升了大概3%。此外,与基于编码—解码框架的部首分析网络DenseRAN相比,也有大概2.5%的提升。不过,HRN的识别率与HDE(Cao等,2020)相比,下降了1.17%。这显示HRN在处理包含遮挡、形变和透视等场景的自然场景汉字识别上尚有不足。错误案例如图4所示。HRN设计的目的是解决错字识别问题,那么与针对正确字识别设计的HDE和RAN等模型相比,希望减少HRN学到的正确字部首序列的“偏置”信息。在正确字识别的场景下,当某个部首因遮挡、形变等无法识别时,HDE和RAN等可通过累计的“偏置”信息,预测出正确的部首,而这恰恰是希望HRN避免的。该实验效果证明了HRN模型具有不错的鲁棒性和实用性。10.11834/jig.220906送排稿.F004图4HRN在CTW数据集上的错误案例Fig.4Failed examples of HRN in the CTW((a) input; (b) prediction; (c) ground truth)3.5 汉字纠错任务的实验与识别任务相比,纠错任务更能检验模型对汉字的建模能力,因为该任务中同时包括已知正确字和未知错字两个测试集,且错字相似度高,导致错字测试集难度更大。除了分类准确率外,在纠错任务中还设置了修正率指标,对模型的汉字表征能力进行评价,越精准的表征可以对汉字之间的距离度量得越准确,进而能够更好地为错字找到对应理想字,提高模型修正率。实验首先统计了基于部首建模的识别和纠错模型的F1分数,对模型评估汉字正确性的能力进行对比。如表7所示,从正确字和错字测试集上的F1分数上来看,HRN模型都能取得最好的性能,尤其是与此前效果最好的模型TAN相比,有了进一步的明显提升,正确字集提升了0.014,错字集提升了0.077。同时,RAN模型更倾向于做出错字的判断,导致正确字测试集上的精确率略高于TAN模型,但是本文提出的HRN模型可以在6项指标上全面超过RAN模型,展现出优越的判别能力。10.11834/jig.220906送排稿.T007表7与其他手写汉字纠错方法在F1分数上的对比Table 7Comparison with other handwritten Chinese character error correction methods on F1 score模型正确字测试集错字测试集精确率召回率F1精确率召回率F1RCN0.8650.9970.9260.9720.4520.617HDE0.8760.9950.9320.9670.5050.663RAN0.9010.9520.9260.7960.6510.716TAN0.8970.9970.9440.980.60.744HRN0.9220.9970.9580.9820.7050.821注:加粗字体表示各列最优结果。同时,统计了模型在两个测试集上的分类准确率以及在错字集上的修正率,结果如表8所示。可以看出,HRN模型在正确字集上的分类准确率高于TAN模型0.5%,在错字集上的准确率高出将近10%,特别是在错字集的修正率上,明显提升了15.3%。这是由于TAN的树结构分析网络需要完全地解码出每个部首,尽管解码器中的语言模型被弱化,但之前的解码结果对后续解码仍有影响,“偏置”问题仍未得到很好地解决。而层级部首网络利用层级编码向量来表征一个字,不存在解码部首之间相互影响的问题,且两个注意力模块的设计实现了对细粒度部首特征的捕获,建模更精细,对相似度高的错字有更好的效果。表8 与其他手写汉字纠错方法在准确率和修正率上的对比Table 8 Comparison with other handwritten Chinesecharacter error correction methods onaccuracy and correct rate/%10.11834/jig.220906送排稿.T008模型准确率修正率正确字测试集错字测试集错字测试集RCN92.4042.4022.10HDE92.1047.2032.90RAN92.3045.60-TAN94.6058.0038.70HRN95.1067.8054.00注:加粗字体表示各列最优结果, “-”表示缺少相关数据。此外,通过具体分析错字测试集中的样本,并与现有性能最好的模型TAN进行对比,可以更加直观地理解错字集上的分类准确率和修正率的提升原因。图5分别展示了两模型对相同错字样本的分类结果以及查找到的理想字集,图中最左侧一列是错字的编号名称。可以看到,第1个例子中,E001字的错误仅是由多余的一个笔画造成的,也可以视为两个相似部首的区别,TAN模型未能很好地区分这两个部首,导致将该字错分为相似正确字“丧”,而HRN模型较好地学习到了部首字形表征,并通过注意力机制定位到错误部首,捕获了该部首的细粒度特征,在识别时,可以正确地区分两个相似部首,进而实现该字的正确分类。在第3个例子中,由于将部首“广”写成了“宀”,生成了错字E31F。尽管TAN和HRN模型都能正确地识别出该错字,但是TAN模型的预测理想字集中未能包括“庭”字,而HRN模型则预测“庭”字为距离次近的理想字。10.11834/jig.220906送排稿.F005图5TAN和HRN模型的修正效果对比Fig.5Comparison of results of TAN and HRN3.6 可视化分析本文重点引入了二次注意力模块,在输入阶段利用嵌入层学习所有部首的表征向量,并利用该表征对图像中的相关区域进行定位,这里的表征向量是否学习到了部首的字形结构信息,以及该模块学习到的注意力权重的分布情况,对后续部首重要性的学习、乃至最终对汉字类别的预测至关重要。上述实验结果已经证明了本文提出的HRN模型的有效性,为进一步剖析模型有效的原因,在汉字纠错任务的数据集上对部首表征空间的分布进行分析,并对二次注意力模块学习到的注意力权重进行可视化。为了验证模型学习到的部首表征向量中包含了部首的字形结构信息,通过t-SNE(t-distributed stochastic neighbor embedding)算法(Maaten和Hinton,2008),将每个部首表征vi可视化,如图6所示。从图中可以看到,字形越相似的部首,在特征空间中的距离也会越小。例如,“千”、“干”、“于”的字形非常接近,“自”、“白”的字形也非常接近,它们在图中的距离也非常近。但“千”与“自”的字形差别较大,因此它们在图中的距离也较远。由此可以得出结论:部首表征向量的确包含了其字形结构信息,字形上越相似的部首,它们的表征向量距离越小;反之,字形上差异越大的部首,在表征空间内的距离越远。这样贴合部首字形的表征为后续注意力模块捕获部首位置奠定了良好的基础,准确的部首表征也有助于模型判断部首类别,进而更好地区分相似字。10.11834/jig.220906送排稿.F006图6通过t-SNE得到的HRN部首特征的可视化Fig.6t-SNE visualization of radical features learned by HRN有了良好的部首表征,对二次注意力模型学习到的部首注意力分布情况进行了可视化。图7展示了错字测试集中的几个样例,最左侧一列是原始图像,下面的标注是其名称编号,图中的红色区域代表模型学习到的空间注意力的概率分布,颜色越深的地方注意力权重越大,每个注意力图下面的标注是模型对应的预测部首。这些样例都是从测试集中的随机抽取的错字,在训练集中从未出现过,因此可以认为这些样本的注意力分布情况能够真实地反映该模块的表现。可以看到,错字E095总共由3个部首和2个结构组成,对于上下结构,注意力机制定位到了整个汉字上半部分和下半部分的中间空白区域,对于部首“匕”,注意力机制也较精准地捕获到了其在图中的相关区域。错字E050的错误是由多了一个笔画撇造成,识别的关键在于部首“yi”,可以看到,注意力模块较好地定位到了该部首的位置。综上,在未知测试集上,注意力模块仍能很好地捕获了每个部首的对应位置,从而帮助模型正确识别出汉字类别,这些可视化结果证明了二次注意力模块的有效性。10.11834/jig.220906送排稿.F007图7二次注意力模块的第1次注意力结果的可视化Fig.7Visualization of the results of the first attention mechanism in the double-attention module4 结 论本文从部首字形角度出发,引入了一个层级部首网络(HRN),通过注意力机制学习每个部首的表征与图像视觉特征相关区域,进而捕获包括部首字形信息的细粒度特征,这种方式能够对相似部首进行更好的区分,进而能够检测到错字中的细微错误。通过在自然场景数据集下的识别实验,证明了该模型具有实用性。在手写汉字数据集上的纠错实验结果表明,该模型在错字分类准确率和修正率上取得了显著提升。在识别和纠错两个任务下的实验,验证了该模型学习到的汉字表征更加精准,具有很强的鲁棒性和泛化性。本文模型尚存在不足之处。首先,面对缺少训练样本的相似错字时,现有方法仍存在“偏置”问题,模型仍然倾向于将未知的错字样本误分类为某个可见正确字。其次,本文的研究内容都是基于孤立的汉字数据集,可以达到的性能有限。今后可以考虑将现有方法拓展到文本行识别和文本行纠错任务上,并利用上下文可提供的信息,进一步提高识别和纠错任务的性能,增加系统的实用性。

使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,

确定继续浏览么?

复制成功,请在其他浏览器进行阅读