写点什么

百度中文纠错技术

  • 2019-04-23
  • 本文字数:4098 字

    阅读完需:约 13 分钟

百度中文纠错技术

一. 纠错技术概述

语言是复杂的。每一门语言都经历了几百年,甚至几千年的长期演变和发展,形成了一套复杂的文法和句法规则。这些文法和句法规则复杂多变,例如一些词或者短语存在多音、多意、多用等现象,对语言的使用者提出了较高的要求;一旦语言使用者对语言掌握不够或者粗心大意时,则很容易发生用词不当、张冠李戴等错误。虽然这些错误看起来微不足道,但正所谓“差之毫厘,谬以千里”,特别是在某些场景(比如外交场合),即使很小的语言错误也可能带来非常恶劣的影响。


自然语言处理常见的任务包括词法分析,句法分析,语义计算等,这些任务要取得理想的结果,输入数据的准确性是基本前提,因此从 NLP 的整体技术角度来说,文本纠错起着保驾护航的作用。



纠错技术相对于词法分析,句法分析等受到的关注一直较小,一方面是因为文本出错的比例比较小,在一些重要场合,也有专门人员进行校验;另一方面本身问题也相对较难,其要求计算机对语言规则以及文本语义有深刻的理解。在 2000 年以前,业界主要依靠长期积累的纠错规则和纠错词典来进行纠错,比如微软的文档编辑产品 WORD 即采用这种方法。随着机器学习技术的发展,纠错问题受到了学术界和工业界越来越多的关注,其中有两大主流方法:一种解决思路是将语言错误归类,然后采用 Maxent、SVM 等分类方法对这些类别进行重点识别;另外一种思路是借鉴统计机器翻译(SMT)的思想,将语言纠错等价为机器翻译的过程,即错误文本翻译为正确文本,并随之出现了一系列的优化方法。最近几年,随着神经机器翻译(NMT)技术的快速发展,人们逐步将 SMT 与 NMT 技术结合起来解决纠错问题。最近几年中文纠错的研究也得到较多的关注和发展,并陆续举办了几届中文纠错评测,例如 CGED 与 NLPCC 等。



目前,基于机器翻译的方法已经成为文本纠错的主流技术,主要思想是把纠错看成同种语言中错误句子翻译为正确句子的过程,如上图中的公式所示,其核心由语言模型和翻译模型组成。语言模型学习语言规则、语言知识;翻译模型从平行语料中学习用户的纠错行为。SMT 纠错一般的典型做法:首先基于平行语料训练对齐模型,得到多粒度(字、词、音、形、短语)的混淆矩阵(Phrase Table);针对具体的纠错实例,基于句子中的错误点从 Phrase Table 中召回可能的正确候选,然后基于句子语义理解,对这些纠错候选进行排序,从而得到正确的结果。


而 NMT 方法主要依赖于大规模的监督语料,忽略掉中间的各种步骤,直接实现端到端的学习。NMT 方法相对于 SMT 方法的优势在于避免了 SMT 每一步过程中导致的错误传递,同时具有更强大的学习能力。

二. 百度中文纠错

▪ 技术背景


近年来,随着新媒体行业的快速发展,中国自媒体从业人数逐年增长,至 2017 年有近 260 万。但是相对于传统媒体,其缺少人工校稿环节,编辑好的文章即刻发表,导致文章的错误比例较高。比如一些新媒体平台的正文错误率在 2%以上,标题错误率在 1%左右。同时,语音智能硬件产品的兴起,也暴露出语音识别技术的错误率高企问题,在某些场景语音识别中,错误率可能达到 8%-10%,影响了后续的 query 理解及对话效果。因此研发优质的中文纠错技术,便成为了必须。


▪ 技术目标


为了满足以上的需求,百度中文纠错一方面需要支持多种类型的错误识别,另一方面需要支持不同模态的输入数据,同时还需要提供快速的场景迁移以及深度定制能力。



我们把中文常见错误总结分为三类:


  1. 用词错误,由于输入法等原因导致的选词错误,其主要表现为音近,形近等;

  2. 文法/句法错误,该类错误主要是由于对语言不熟悉导致的如多字、少字、乱序等错误,其错误片段相对较大;

  3. 知识类错误,该类错误可能由于对某些知识不熟悉导致的错误,要解决该类问题,通常得引入外部知识、常识等。



▪ 整体架构


百度中文纠错的整体架构如下图所示。整体上,将纠错流程,分解为错误检测、候选召回、纠错排序三个关键步骤。通过引入语言知识、上下文理解和知识计算的核心技术,提升不同类型错误的解决能力。最后,支持 SMT based 和 NMT based 两套 Framework,形成完整的系统架构。下面分别进行详细介绍。



▪ 关键步骤(错误检测->候选召回->纠错排序)


错误检测的目标是识别输入句子可能存在的问题,采用序列表示(Transformer/LSTM)+CRF 的序列预测模型,这个模型的创新点主要包括:


  1. 词法/句法分析等语言先验知识的充分应用;

  2. 特征设计方面,除了 DNN 相关这种泛化能力比较强的特征,还结合了大量 hard 统计特征,既充分利用 DNN 模型的泛化能力,又对低频与 OOV(Out of Vocabulary)有一定的区分;

  3. 最后,根据字粒度和词粒度各自的特点,在模型中对其进行融合,解决词对齐的问题。



候选召回指的是,识别出具体的错误点之后,需要进行错误纠正,为了达到更好的效果以及性能,需要结合历史错误行为,以及音形等特征召回纠错候选。主要可分为两部分工作:离线的候选挖掘,在线的候选预排序。离线候选挖掘利用大规模多来源的错误对齐语料,通过对其模型,得到不同粒度的错误混淆矩阵。在线候选预排序主要是针对当前的错误点,对离线召回的大量纠错候选,结合语言模型以及错误混淆矩阵的特征,控制进入纠错排序阶段的候选集数量与质量。



纠错排序解决的是,由于纠错的正确结果具有唯一性,如何在召回的纠错候选中将正确的结果排在第一位。百度中文纠错采用的是 Deep&Wide 的混合模型结构,Deep 部分学习当前错误点上下文表示,Wide 部分基于形音、词法、语义、用户行为等特征学习原词与候选词的多维度距离表示,另外通过 GBDT&LR 模型学习到更好的特征组合。



▪ 核心技术(语言知识->上下文理解->知识计算)


中文纠错需要在错误检测、候选召回、纠错排序的策略层面上取得较好效果,最关键的因素仍然在于解决最基本的自然语言处理问题:语言知识、上下文理解、知识计算。语言知识完成对语言规则的学习,对语言结构的理解,具体包括词法分析、句法分析以及语言模型;上下文理解是指需要理解错误点上下文所表示的内容或语义,百度中文纠错主要通过 Contextual-DNN 模型来学习,并通过 AOA attention 机制解决长依赖问题,帮助错误纠正。知识计算方面,从知识(客观规律)的维度考虑问题,重点是做好文本理解与知识关联。



语言知识方面,词/句法分析不详细展开,主要介绍语言模型的训练和使用。传统的语言模型,主要是根据前面一串词预测下一个词的概率,直接应用于纠错的主要问题在于忽略了原词的信息。因此,我们提出了一种受限词表的语言模型,该受限词表基于原词生成,通过基于受限词表的训练和预测,能够对易错词进行更好的区分,具体例子如下图所示。



关联知识方面,看下图中的例子“邓论因档期问题提出爸爸去哪儿”,可以通过原始错误标题在标准语料中基于检索(IR)或者上下文 context Memory 的方式,补充到大量同原始标题相关的精准局部知识。利用这些精准的局部知识来辅助纠错排序。



文本理解方面,以用户与智能音箱的交互句子“小度小度,请帮我导航到深圳市学府路百度国籍大厦”为例,可能会出现低频的道路或 POI,如果采用统计得到的语言模型来纠错而不去理解句子表达的内容,显然是不恰当的。需要从全局理解句子内容以及理解句子的每个成分,解决低频领域知识的泛化问题。具体做法是通过对文本进行语义分析得到语义特征,应用到纠错排序模型中,得到更好的纠错结果。



▪ 系统框架


中文纠错在策略层面涉及错误检测、候选召回、纠错排序,核心技术层面涉及语言知识、上下文理解、知识计算,那如何来构建一个完整的中文纠错系统呢?百度的中文纠错系统支持两种纠错系统框架:ECNet 和 Restricted-V NEC。ECNet 系统把纠错任务分成很多步骤、多个模型,每个模型解决具体的特定问题,然后通过 Pipeline 的方式串联,得到最后结果;这种方式的优点在于方便分析问题,能够针对各个问题进行重点突破,但是也存在两个明显问题:


  1. 错误逐级传递;

  2. 每个模型单独学习,模型之间知识无法共享。Restricted-V NEC 系统则采用端到端的学习、联合优化,单个模型就能完成纠错任务。



三. 纠错应用

▪ 开放域纠错


开放域纠错没有场景限制,支持多模态输入,可以是文本或者语音,不同的输入形式对应不同的混淆矩阵。整个纠错过程包含错误检测、候选召回、纠错排序和序列解码,支持多种类型的错误纠正。开放域纠错的典型应用场景比如写作辅助和内容审核。


写作辅助:在用户编辑文章的过程中,纠错服务能够及时发现用户错误行为,提升内容创作者的创作质量和效率。


内容审核:对于完稿的文章,纠错服务会对其标题和内容进行错误检测,由专业人员进行二次审核,保证文章质量,提升用户的阅读体验。



▪ 场景纠错


场景纠错,与开放域纠错的主要区别在于领域知识的使用,场景纠错除了做好语言规则的刻画和上下文理解外,还需要对场景中的领域知识有充分的学习。场景纠错的重点是针对输入数据做文本的理解、基于场景语料获取关联知识、基于大规模语料学习语言规则。场景纠错的应用点比如地图检索和语音对话。


在地图检索业务中,通过充分利用 POI、位置距离特征及文本理解进行场景纠错,可以协助用户更好的找到目的地,改善用户体验。另一个场景纠错的应用场景是语音产品,语音的内容应该与当前环境场景相吻合,基于文本理解进行纠错。



▪ 纠错开放平台


百度中文纠错基于百度十几年在自然语言处理领域的技术积累,并有效融合了丰富的各类知识库、文本理解等特征,通过互联网用户行为挖掘海量训练样本,结合树模型和神经网络模型的优势,保证了对海量数据的高效利用,因此,百度中文纠错具有算法识别精度高、效果稳定性强的特点。


以上技术特色已通过百度 AI 中文纠错平台对外开放,支持短文本、长文本、语音识别结果等多种文本内容,在搜索引擎、人机对话、语音识别、内容审核等方面有广泛的应用,能显著提高这些场景下的语义准确性和用户体验,欢迎了解和试用。


作者介绍:


付志宏,百度资深研发工程师。硕士毕业于浙江大学,百度自然语言处理部资深研发工程师,从事 NLP 相关工作多年,具有丰富的 NLP 实践经验和扎实的理论基础。目前主要负责 NLP 基础技术以及文本质量等相关技术研究,其中重点包括分词,改写,纠错,以及文本质量计算等。


本文来自 付志宏 在 DataFun 社区的演讲,由 DataFun 编辑整理。


2019-04-23 08:008254

评论

发布
暂无评论
发现更多内容

从简历被拒到收割 9 个大厂 offer,我用了 3 个月成功破茧成蝶

Java 编程 程序员 架构 计算机

关于体验设计的十大重要定律

石云升

读书笔记 用户体验 商业洞察 7月日更 体验设计

一种Vue应用程序错误/异常处理机制

devpoint

Vue 异常处理 vue2 7月日更

学生管理系统详细架构设计文档

张文龙

#架构实战营

架构实战营 毕业总结

竹林七贤

基于深度学习的实时噪声抑制——深度学习落地移动端的范例

声网

人工智能 算法 移动端

完善数字人民币发行应用机制 打造可靠金融基础设施

CECBC

深入了解Spring之Environment

邱学喆

Profile Environment PropertySource PropertySources

Vue进阶(三十):element-ui 表单验证

No Silver Bullet

Vue 7月日更 表单校验

应届女生美团Java岗4面,一次性斩offfer,我受到了万点暴击

编程菌

程序员 面试 后端 计算机

极致性能一睹为快!阿里全新出品性能优化手册 从此拒绝系统瘫痪!

Java 编程 程序员 架构师 计算机

粉了!京东商城核心亿级流量并发Java系统架构设计方案手册

Java架构追梦

Java 架构 面试 高并发 京东

CODING 携手 CoDesign:让设计与开发更简单

CODING DevOps

DevOps 设计 开发工具 CoDesign

使用MLlib进行机器学习(十-下)

Databri_AI

spark 决策树 优化

阿里 P8 熬了一个月肝出这份 32W 字 Java 面试手册,在 Github 标星 31K+

Java 编程 架构 面试 IT

墙裂推荐!四面阿里拿 offer 后,才发现师哥给的面试笔记有多强大

Java 架构 IT 计算机 知识

绝!阿里巴巴Java面试参考权威指南五月版最新开源

Java 阿里巴巴 架构 面试 IT

"开放数据,蔚然成林"—浪潮助力多地获得数据开放全国标杆

云计算

15年前的3篇论文,变成了万亿大生意

百度大脑

人工智能 论文

都2021年了,还在问网络安全怎么入门,气得我当场脑血栓发作

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

仅仅上线一小时,下载量就破10W!阿里内部Java性能优化实战手册

Java 编程 程序员 面试 IT

全网首发 20+ 互联网公司“Java 面试考点大全”,应有尽有

Java 编程 面试 IT 计算机

某宝付费的Redis核心原理深度实践PDF,竟在GitHub标星86k+霸榜

白亦杨

Java 编程 程序员 架构师 计算机

祝贺中国跳水队夺金!百度智能云挺敢做梦的人

百度大脑

人工智能 跳水队

偶获阿里大佬纯手码“887”页 Java 面试手册,突击学习一个月,成功跳槽阿里!

Java 编程 架构 面试 IT

模块二

Winston

Vue进阶(三):Axios 应用详解

No Silver Bullet

Vue axios 7月日更

CRUD 程序员勿进!JDK源码剖析手册与并发编程图册,完美诠释高并发

Java 编程 程序员 IT 计算机

spring,springboot,底层原理解析

java小李

Java版人脸检测详解上篇:运行环境的Docker镜像(CentOS+JDK+OpenCV)

编程菌

Java 编程 程序员 后端 java技术宅

架构训练营 模块三

小卷儿

百度中文纠错技术_语言 & 开发_DataFunTalk_InfoQ精选文章