文本纠错:提升 OCR 任务准确率的方法
合合信息对于文本纠错:提升 OCR 任务准确率的方法理解
摘要:错字率是 OCR 任务中的重要指标,文本纠错需要机器具备人类水平相当的语言理解能力。随着人工智能应用的成熟,越来越多的纠错方法被提出。
近年来深度学习在 OCR 领域取得了巨大的成功,但 OCR 应用中识别错误时有出现。错误的识别结果不仅难以阅读和理解,同时也降低文本的信息价值。在某些领域,如医疗行业,识别错误可能带来巨大的损失。因此如何降低 OCR 任务的错字率受到学术界和工业界的广泛关注。合合信息通过本文来讲解文本纠错技术帮助更多人解决业务问题。通常文本纠错的流程可以分为错误文本识别、候选词生成和候选词排序三个步骤。文本纠错方法可包括基于 CTC 解码和使用模型两种方式,下面分别对这两种纠错方式进行介绍。
1.Beam Search
该方法是针对 CTC 解码时的一种优化方法,这是由于当使用贪心算法进行 CTC 解码时忽略了一个输出可能对应多种对齐结果,导致在实际应用中错字率会颇高,并且无法与语言模型结合。因而通过 Beam Search 的方法我们能够得到 top 最优的路径,后续也可以利用其他信息来进一步优化搜索结果。
1.1 prefix Beam Search[1]
由于有许多不同的路径在 many-to-one map 的过程中是相同的,当使用 Beam Search 时只会选择 Top N 个路径,这就导致了很多有用的信息被舍弃了,如图 1 所示,生成“a”路径的概率为 0.2·0.4+0.2·0.6+0.8·0.4=0.52,而生成 blank 的路径概率为 0.8·0.6=0.48,当使用最佳路径的搜索方式会倾向于选择 blank 的路径,而不是整体概率更大的 a 路径。所以就有了 Prefix Beam Search,其基本思想是,在每个 t 时刻,计算所有当前可能输出的规整字符串(即去除连续重复和 blank 的字符串)的概率。然后用 Beam Search 的方法,在每个时刻选取最好的 N 个路径,从而将每个时间点 t 上的搜索空间变为常数。在计算最优路径概率时,以 t=3 时刻,规整字符串为“a”为例,如图 2 所示。对于 t+1 时刻的可能情况有 6 种,可以看出在 Prefix Beam Search 中将规整后的字符串分为了以 blank 和非 blank 结尾的两种情况来计算 t+1 时刻的概率。通过 Prefix Beam Search 方法,解决了在 many-to-one map 过程所导致的结果相同而路径可能不同的问题,搜索结果是针对具有相同结果路径的排序,而不是单一路径的排序。
1.2 Vanilla Beam Search[2]
对于输出是一个大小为 T × (C + 1)的矩阵,进行解码时在每个时间步 t,每个 beam-labeling 都会被 t+1 时刻的所有可能的字符扩展,同时未被扩展前的 beam-labeling 也会被保留下来,这一搜索过程可以表示为如图 3 所示的树状结构。为避免搜索路径的指数增长,在每个时间步仅保留 N 个最佳的 beam-labeling。如果在 t 时刻两个 beam-labeling 相等,则会把二者的概率进行求和,然后删除其中一个来合并二者的路径。在这一过程中可以使用 character-level LM 的先验信息对 beam-labeling 可能的扩展进行打分。也可以引入一个词典,当出现词汇表外的单词(OOV)时,就可以删除相关的 beam,来保证解码后始终能够得到有意义的结果。
1.3 Word Beam Search[3]
VBS 工作在字符级别,不会从语义级别去判断解码的内容是否符合规则,而 WBS 方法可以综合前后几个字符的信息来获得当前字符的准确信息,在能够将解码后的单词限制在词典里的同时,还允许单词之间拥有任意数量的非单词字符,并且在解码中还可以使用 word-level LM 的先验信息,来提升对 CTC 解码的准确性。
在进行解码时,当 beam-labeling 被标记为单词状态时,使用根据词典预先构成的 prefix-tree,如图 4 所示,来约束解码的结果始终在词典中,当 beam-labeling 转换为非单词状态时,则不必受 prefix-tree 的约束进而能够实现非单词字符的解码,beam-labeling 状态的转换受将要扩展字符的影响,如果字符为词典字符(对英文来说词典字符可以定义为英文字母)则其状态为单词状态,字符为非词典字符则为非词典状态。通过 WBS 方法可以进一步降低解码时的错字率。
2. 基于深度模型的文本纠错
针对文本纠错,除了在解码时引入 Beam Search 和 LM 先验知识来降低错字率外,还可以通过深度学习的方法,使用经过训练的纠错模型来识别和纠正文本中出现的错误。
2.1 基于 Seq2Seq 模型的纠错
在 Confusionset-guided Pointer Networks for Chinese Spelling Check[4]文中,提出了使用混淆集和门控机制相结合的中文纠错模型,如图 5 所示。纠错模型使用的时 Encoder-Decoder 模式,编码器使用的是 BiLSTM,对中文文本按字符级别进行编码,解码器使用的是 LSTM,在解码器进行解码时,不仅接收上一个 token 的 embedding 的特征向量,还接受通过注意力机制将编码器的文本特征聚合成一个包含上下文信息的特征向量,从而达到基于语义信息的文本纠错。在解码器的每个时间 t 所生成的特征向量,一方面通过线性变换投影到 vocabulary 的向量空间用于生成候选字符,另一方面也会通过一个 Softmax 层构成的门控机制,用于决定当前时刻解码器的输出结果是否直接复制原始的文本字符。此外当门控机制不选择直接复制时,并且当要预测的字符出现在预先设定好的混淆集中的时候,解码器则会在混淆集中选择候选的字符,而不是在整个词典向量空间中选择。
2.2 FASPell[5]
虽然通过加入注意力机制 Seq2Seq 模型也能实现基于上下文信息的文本纠错,但是基于混淆集进行候选词的构造,很容易在少量数据上过拟合,而且只利用混淆集的方法也不够灵活,由于这一阈值是固定的导致字符之间的相似性没有被充分利用。
因而 FASPell 模型提出了基于预训练模型作为候选词生成器,并使用了置信度和相似度相结合的解码器实现不依赖混淆集的中文纠错,模型结构如图 6 所示。首先是在 Bert 模型上进行训练(也就是文中说的自降噪编码器 DAE),训练时将错误的 token 用 mask 代替,为了防止过拟合也会随机对正确的 token 使用 mask。通过训练编码器生成的候选词后经过一个 Confidence-Similarity Decoder,简单来说就是利用字符的字形和拼音相似度,再结合训练集上给出的置信度分布找出基于二者之间正确和错误字符的分界线。在测试时不再仅仅根据 Bert 模型所给出的置信度来挑选候选词,而是加上候选字符与原始字符的相似度信息共同决定最终的结果。
FASPell 虽然说该方法比 RNN 结构的纠错网络能够更快、更好的适用性、更加简单和更强大,少了混淆集但同时引入了字形相似度和拼音相似度,并且在解码时,决策边界的选择也需要根据训练集进行调整,当训练集分布与实际使用时数据的分布不同时决策边界有可能也需要调整,才能取得较为理想的结果。
2.3 基于注意力机制的 Seq2Seq 纠错模型
针对英文的纠错在 Denoising Sequence-to-Sequence Modeling for Removing Spelling Mistakes[6]一文中使用 Bert 的注意力机制代替了 RNN 结构,模型结构如图 7 所示。其中编码器使用了 6 层多头注意力结构,解码器与编码器结构相同,与 Seq2Seq 解码方式一样,按时间顺序生成纠错后的文本,为了实现这一过程,在解码时使用了 mask 机制,使得解码器在 t 时刻的只能看到 t 时刻之前的信息。
相比 RNN 结构的降噪模型,模型性能有所提升,由于没有使用预训练模型需要较大的训练集进行训练,而且在文中并没有提及具体的实验细节,编码器的特征是怎样送入解码器中的,文中也没有具体提及。
2.4 Soft-Masked BERT[7]
文中指出由于 Bert 是基于 mask 进行训练的一种无监督模型,导致其只能拟合被 mask 部分的 token 分布,并不能识别文本中的错误,因而在纠错算法中一般需要额外的模块指出文本中的错误,再将错误的文本 mask 掉再送入 Bert 模型进而得到正确的文本。而本文提出了一种 soft-masked 机制,送入 Bert 的文本不再被强制 mask 掉而是文本 token 的 embedding 和 MASK token 特征的加权和,如图 8 所示。具体做法是,使用一个 BiLSTM 模型用来判别文本中字符错误的概率,记为 p,在将文本送入 Bert 中时会对没给 token 的特征表示 ei与 MASK token 的特征 emask按照概率 p 进行加权,公式如下:
e i’ = p · e mask + (1 − p) · e i
在训练时将文本错误检测模块和纠错模块放在一起训练,并通过超参数λ来平衡两个任务的损失,通过实验验证,λ=0.8 时整个文本纠错模型达到最优,说明文本错误检测任务比纠正任务要容易。使用 soft-masked 机制,通过错误概率 p 控制文本 token 进入纠错模型中的信息量的方式,避免了文本错误检测时阈值的设计,缺点是该方法没有使用生成式的方案不太容易处理字符缺失的问题。
2.5 Chunk-Based[8]
鉴于大多数中文纠错模型都是针对具有相似字符形状或发音的文本纠错,对于没有字形相似和语音相似的错别字更正效果则一般,另一方面大部分纠错模型都是以 pipeline 的形式来实现的导致模型难以优化。针对以上缺点在 Chunk-based Chinese Spelling Check with Global Optimization 文中对纠错任务提出了改进,纠错流程如图 9 所示。
本文主要的贡献是扩展了混淆集,以前的混淆集主要是字形或发音相似的字符组成,而本中使用的混淆集中也包含了语义相近的词组。另一方面是关于模型的优化方法,是基于句子级别的优化,以往模型只是针对个别字符输出结果的优化,很少考虑整个语义上的最优结果。模型中的候选词是根据字形、语音和语义相似度生成的,其中语义相似度是由 FASPell 模型得到。具体做法是将文中定义的编辑距离、字形相似度、语音相似度、语义级别错字率等特征通过加权求和的方式来生成候选词的 top K。在选择候选词时,结合 Beam Search 方法考虑了句子级别整体最优解的情况。在进行模型优化时使用了 Minimum Error Rate Training (MERT)[9]方法,从而实现了文中所说的针对多特征组合排序的联合优化。
Chunk-based 方法虽然能提升纠错模型的表现,但似乎看起来又回到了基于规则进行文本纠错的方向(添加了人为定义的编辑距离,使用语义相近的词组对混淆集进行了扩展),只不过以往基于规则的纠错方法都不可微,各个特征之间的权重设计往往需要根据经验设计,本文则通过一个线性层将这些特征进行了加权,而不需要人为设计最佳的权重参数。
小结
本文针对 OCR 的文本纠错任务进行了简单介绍,分为对针对 CTC 解码时的纠错和使用纠错模型两种方式。前者一般是使用 Beam Search 来搜索最优的解码路径,并在搜索过程中引入 LM,使用相关语言的先验信息来进一步降低解码时的错字率,这样做的好处是相比于使用纠错模型的方法,不必引入额外的训练参数,实现起来较为简单,只是受 OCR 模型的限制,存在着性能提升的上限。后者则是针对解码后的文本进行纠错,经历了从基于 Seq2Seq 模型使用生成方式进行文本纠错,到使用预训练模型进行文本纠错的转变,纠错能力也有了很大的提升,显示了出巨大的发展潜力。
方案选择
对于文本纠错,合合信息的理解是:严格来说 Beam Search 只是对 CTC 解码的优化,存在着优化上限(Beam 长度为文本长度,找到全局最优解),只有当与基于统计 LM(n-gram)相结合时才有着一定的纠错能力,但往往是基于统计信息针对字词的纠错,对于语法和语义的纠错则能力有限。然而 Beam Search 作为一种优化算法,在 OCR 模型部署时并不会引入额外的参数,计算也不复杂,可以说是针对 CTC 解码优化的必备算法。针对中文和英文的不同特点,中文任务选择 VBS 而英文任务选择 WBS 较好。至于要不要引入 LM 的先验信息,可以视具体 OCR 任务决定。
当有必要使用纠错模型对 OCR 任务进行优化时,最为简单实现方式是 Soft-Masked BERT,不需要额外定义例如字形相似度、语音相似度等参数,并且对中英文都适用。但和 Chunk-Based 模型、FASPell 模型一样模型主体使用的预训练模型(Bert),纠错方式并不是生成式,模型一个输入 token 对应着一个输出 token,因此难以处理文本缺字和多字的问题。如果 OCR 结果缺字或多字的问题比较严重,优化方案可以将 Bert 模型改成与翻译模型类似的,基于注意力机制的 Seq2Seq 纠错模型。如果想进一步提升模型的纠错能力,Chunk-Based 模型是种不错的选择,混淆集的使用可以避免大部分常见的字形相似、拼音相似的错误,只是混淆集需要人工制作,编辑距离也需要人为定义,算是一种基于规则和深度学习相结合的纠错方式。
参考文献:
[1] Hannun A Y , Maas A L , Jurafsky D , et al. First-Pass Large Vocabulary Continuous Speech Recognition using Bi-Directional Recurrent DNNs[J]. computer science, 2014.
[2] Hwang K , Sung W . Character-Level Incremental Speech Recognition with Recurrent Neural Networks[C]// IEEE. IEEE, 2016.
[3] Scheidl H , Fiel S , Sablatnig R . Word Beam Search: A Connectionist Temporal Classification Decoding Algorithm[C]// 2018 16th International Conference on Frontiers in Handwriting Recognition (ICFHR). 2018.
[4] Wang D , Yi T , Zhong L . Confusionset-guided Pointer Networks for Chinese Spelling Check[C]// Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics. 2019.
[5] Hong Y , Yu X , He N , et al. FASPell: A Fast, Adaptable, Simple, Powerful Chinese Spell Checker Based On DAE-Decoder Paradigm[C]// Proceedings of the 5th Workshop on Noisy User-generated Text (W-NUT 2019). 2019.
[6] Roy S . Denoising Sequence-to-Sequence Modeling for Removing Spelling Mistakes[C]// 2019 1st International Conference on Advances in Science, Engineering and Robotics Technology (ICASERT). 2019.
[7] Zhang S , Huang H , Liu J , et al. Spelling Error Correction with Soft-Masked BERT[J]. 2020.
[8] Bao Z , Li C , Wang R . Chunk-based Chinese Spelling Check with Global Optimization[C]// Findings of the Association for Computational Linguistics: EMNLP 2020. 2020.
[9] Franz Josef Och. Minimum error rate training in statistical machine translation. In Proceedings of the 41st Annual Meeting of the Association for Computational Linguistics, pages 160–167, Sapporo, Japan. Association for Computational Linguistics.2003.
版权声明: 本文为 InfoQ 作者【合合技术团队】的原创文章。
原文链接:【http://xie.infoq.cn/article/a51c54d946509bdc0d1e375d7】。文章转载请联系作者。
评论