你在网上查找某资料,找来找去只找到一个 PDF 文档可用,但是打开后发现这个 PDF 里都是扫描的图片,其实你需要的是文档中的文字,你还要引用相关内容到自己的文稿中,这时候可以使用一些将图片中的文字识别出来并转换为“真文字”的工具。
这样的场景想必你不会陌生,这其实是一个典型的 OCR(光学字符识别)技术使用场景。
目前 OCR 识别的结果远远达不到完美,如何提高对文字的识别准确率一直以来都是一个难题,特别是在面对复杂程调远高于英文的中文时,如果能在识别基础上对文本进行进一步检错纠错,那将更进一步方便我们的生活。
近期爱奇艺开源的 FASPell 项目或许能为此助力。在11月 3-7 日举办的计算语言学和自然语言处理领域顶级国际会议 EMNLP-IJCNLP上,爱奇艺发表了一篇关于中文检查方案的论文:FASPell: A Fast, Adaptable, Simple, Powerful Chinese Spell Checker Based On DAE-Decoder Paradigm。
论文提出了一种可以通用于人类书写的文本或前边提到的 OCR 识别结果的方案,具体可以应用在诸如即时通讯消息、文案编辑与视频文本识别等多种需要进行文本纠错的场景中。
同时爱奇艺开源了相关数据与代码程序,根据介绍,这个称为“FASPell”的项目是一个简繁体中文拼写检查工具,它可以轻松完成对任何一种中文文本的拼写检查,包括简体中文文本、繁体中文文本、人工输入错误与OCR 结果等,同时它还拥有目前同类型工具最先进的性能(错误检出率与纠错率)。
爱奇艺介绍该方案已经达到 SOTA,即“State Of The Art”,这是一个用于描述机器学习中取得某个任务上当前最优效果的模型,例如在图像分类任务上,当某个模型在常用的数据集(如 ImageNet)上取得当前最优的性能表现时,就说它达到了 SOTA。
FASPell 具体是怎样达到 SOTA 的?我们就相关问题采访了项目负责人洪煜中。
Q:FASPell 范式带来的突破似乎有“计算更快、结构更简单”等,具体介绍并分析一下它们,比如“更快地计算”,那么具体有多快呢;“结构更加简单”,具体结构是怎样的,相比其它系统的设计简单在哪里?
洪煜中:FASPell 纠错相较于之前的 SOTA 模型的速度在不同测试数据上证明快 1.5-3 倍,其中最快具体为 177 毫秒每 30 字符的句子。
例如,下表为 FASPell 和 Wang 等人 2018 年提出的模型在三个不同测试集上速度的详细对比结果(单位:ms/句):
结构上,以往的 SOTA 模型拥有复杂检测流程、多类特征提取、大量语言学规则与多重过滤逻辑,而 FASPell 仅包含一个去噪自动编码器与解码器,因此简单了很多。
例如,以下为中科院 Zhang 等人 2015 年提出的模型结构,包含非常复杂的候选项生成流程、繁琐的过滤步骤和对语言学规则的依赖:
Q:达到这样优势的原因是设计了去噪自动编码(DAE)与解码器,具体介绍一下这两个技术,以及它们的实现原理。
洪煜中:去噪自动编码器技术本身已有 10 年历史,但是从未应用在中文拼写检查的技术当中,我们的 DAE+解码器的范式,替代了中文拼写检查过去一直使用的困惑集+过滤的范式。
DAE 部分在 FASPell 中由近期火热的 BERT 预训练技术中使用的掩码语言模型(MLM)来实现,它可以为每一个待检测文本中的原始字符生成一组候选替换字符以及它们在语境上的合适度。解码器是我们完全自主设计的高精确保召回的过滤装置 CSD,它可以利用候选字符的语境合适度和原始字符的相似度来从候选字符中过滤出正确字符。
具体来讲讲 CSD 过程,在训练阶段,利用训练集文本通过 MLM 输出的矩阵,逐行绘制语境把握度-字符相似度散点图,确定能将 FP(False Positive,假阳性:预测为正,实际为负)和 TP(True Positive,真阳性:预测为正,实际也为正)分开的最佳分界曲线。
推理阶段,逐行根据分界线过滤掉 FP 得到 TP 结果,然后将每行的结果取并集得到最终替换结果。
以上图为例,句子首先通过 fine-tune(微调)训练好的 MLM 模型,得到的候选字符矩阵通过 CSD 进行解码过滤,第一行候选项中只有“主”字没有被 CSD 过滤掉,第二行只有“著”字未被过滤掉,其它行候选项均被分界线过滤清除,得到最终输出结果,即“苦”字被替换为为“著”,“丰”被替换为“主”。
CSD 中使用的量化的字符相似度也是此次 FASPell 提出的,相比过去提出的字符相似度量化方法,FASPell 更加精准。我们在字形上采用 Unicode 标准的 IDS 表征,它可以准确描述汉字中的各个笔画和它们的布局形式,这使得即使是相同笔画和笔画顺序的的汉字之间也拥有不为 1 的相似度(例如“田”与“由”,“午”与“牛”)。相比之下,过去基于纯笔画或者五笔、仓颉编码的计算方法则粗糙很多。
在字音上使用了所有的 CJK 语言(中日韩统一表意文字)中的汉字发音,尽管我们只是对中文文本检错纠错,但是实验证明考虑诸如粤语、日语音读、韩语与越南语的汉字发音对提高拼写检查的性能是有帮助的,而过去的方法均只考虑了普通话拼音。
Q:可以简单理解为新的范式要识别一个中文主要通过分析“字形”和“字音”两方面的结合吗?
洪煜中:以往的范式也会利用字音和字形的信息,但是是通过困惑集(字音字形相似的汉字聚类的集合)来实现的。新的范式可以让 FASPell 在解码器部分使用我们自主设计的字音字形相似度的量化方法。这种量化方法相较于过去的方法更加精细,在字形上充分考虑了汉字的笔画和布局结构,在字音上考虑了汉字在 CJK 语言中的发音。这种量化方法可以单独应用在其它的技术领域,因此我们在开源的代码中,也单独将汉字字符相似度计算的脚本提供了出来。
Q:怎么理解这种新范式与以往常用范式的具体区别?
洪煜中:以往的范式将利用困惑集给出待检测文本的每个原始字符的候选替换字符,然后利用多种特征或者语言学规则从中过滤正确字符。
这种旧的范式使得模型只能在资源很匮乏的中文拼写检查数据上训练,因此容易出现过拟合(模型对未知样本的预测表现一般)的情况;另外,由于困惑集通常给一个字符提供 20-30 个候选字符,因此从中进行过滤使得模型速度缓慢,而且,相同汉字在任何位置的候选字符也都是固定不变的,而直觉上我们都知道在不同场境和语境下相同汉字会出现的错别字是不一定相同的,因此模型缺少灵活性、通用性。
我们新的范式由于 DAE 可以在大量自然的文本上进行预训练,中文拼写检查数据仅用于 fine-tune 训练,因此有效避免了过拟合的问题。而且,由于候选字符是由 DAE 即时生成的针对语境、场景最佳的候选字符,我们将每个原始字符的候选字符控制在仅 4 个从而得以提高速度,同时灵活性、通用性也得到了保证。
Q:新方案达到 SOTA,具体测试情况如何呢?相比上一个 SOTA 方案的进步有多少?
洪煜中:具体在检查的准确性上,字符级别的检错精确率为 76.2%,检错召回率 67.1%,纠错精确率 73.5%,召回率 64.8%,也就是说使用 FASPell 方案,10 个错误检测/纠正中大约 7 个是正确的,并且可以成功检测/纠正 10 个错误中的 6 个。
相较于之前的 Wang 等人(2018)的 SOTA 方案,我们的精确率高约 10 个百分点;较于 Zhang 等人(2015)的方案,我们的召回率高约 6 个百分点;较于 Zhao 等人(2017)的方案,精确率高约 4 个百分点,召回率高约 13 个百分点。
下述表格描述了 FASPell在 SIGHAN15(中文文本标注规范)测试集上的性能。
句子级性能为:
字符级性能为:
Q:项目驱动因素是什么?是开发中的需要还是其它?介绍一下项目背景吧。
洪煜中:驱动因素来源于两条路径,一是实际业务中确实有相关的需求,希望能够进一步提升 OCR 以及 ASR(语音识别)的效果,从而进一步优化相关业务的用户体验;另一方面源于,爱奇艺 AI 团队对于困难技术执着的研发精神,当确定这个技术的价值后,会勇于试错和创新,把技术做到更好。通过技术以及实际业务的双驱动,会更好的推动创新算法的自主研发。此次算法的创新来源于团队年轻而优秀的算法工程师,是一个充满创新和活力的团队。
Q:把论文的实现与相关数据开源,接下来具体有怎样的研发与开源计划?
洪煜中:我们希望能够通过自己的力量推动整个相关算法领域的共同进步,希望能够有更多人关注并推动相关技术的发展。后续也会针对更加有挑战性的纠错内容进行研发,例如信息丢失严重的文本的纠错,希望通过这些困难技术的研发可以提升整体 AI 服务的效果。
项目地址:https://github.com/iqiyi/FASPell
论文地址:https://www.aclweb.org/anthology/D19-5522.pdf
采访嘉宾介绍:
洪煜中,爱奇艺研发工程师,毕业于日本早稻田大学 NLP/MT 专业工学硕士,研究专攻领域为文本分类、文本纠错与自然语言处理基础算法等,为爱奇艺视频质量分析相关任务提供算法支持。(编辑部的故事)