产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

百度中文纠错技术

  • 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:008056

评论

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

云原生环境下的日志采集、存储、分析实践

火山引擎开发者社区

云原生 日志

共建开源组件生态 2022 OpenHarmony组件大赛等你来

科技汇

SIG 直播:如何使用 SMC-R 透明加速 TCP 应用? | 第15期

OpenAnolis小助手

TCP 龙蜥大讲堂 SMC-R SIG双周会

企评家帮助新三板企业进行投资价值评价分析

企评家

企评家帮你打造企业价值评估,全面展示企业实力地位完善企业管理

企评家

CI/CD概述,基于云效进行持续集成CI和持续部署CD(K8s)

阿里云云效

云计算 阿里云 持续集成 CI/CD 持续部署

立足西安,昇腾AI为开发者留下了脚印一串

这不科技

小程序生态成为私域基建必选项

Geek-peri

绝艺学会打麻将,腾讯AI Lab提出全新策略优化算法ACH

科技热闻

自助共享洗车加盟都有什么条件

共享电单车厂家

自助洗车加盟条件 自助共享洗车加盟

24小时智能洗车机多少钱一台

共享电单车厂家

自助洗车机价格 24小时智能洗车机 智能洗车机多少钱

实时云渲染有哪些优势?

3DCAT实时渲染

实时云渲染

云VR的未来发展方向

3DCAT实时渲染

云VR

渗透测试面试问题,内含大量渗透技巧

喀拉峻

网络安全 安全 渗透测试

智能家居新浪潮 物联网潜力无限

Geek-peri

小程序 物联网 智能家居

超全MySQL笔记整理(面试题+笔记+思维导图),面试再也不怕被MySQL难倒了

Java架构追梦

Java java面试 后端开发

免费ETL批量调度,数据仓库运维工具TASKCTL 8.0 环境使用安装

敏捷调度TASKCTL

大数据 DevOps 敏捷开发 ETL 自动化运维

24小时无人自助洗车设备多少钱

共享电单车厂家

自助洗车机价格 24小时无人自助洗车 自助洗车设备多少钱

电子版产品手册如何制作?简单的方法来了

小炮

产品宣传手册

一起看看自助洗车机投放场地怎么选

共享电单车厂家

自助洗车加盟 自助洗车机投放 自助洗车场地

Next.js 在 Serverless 中从踩坑到破茧重生

CODING DevOps

Serverless 云开发 Cloud Studio 云端工作台

自助洗车怎么加盟?加盟流程介绍

共享电单车厂家

自助洗车加盟 自助洗车怎么加盟 自助洗车加盟流程

企评家|高升控股股份有限公司成长性报告简述

企评家

企业评价 企业成长性 评价分析报告

火山引擎联合中国信通院发布《边缘云总体技术与测试要求》

火山引擎边缘云

边缘计算 标准化

字节跳动Java后端岗,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢

Java架构追梦

Java 程序员 后端开发 字节面试

啃完阿里工程师的Java面试八股文,斩获腾讯等6家大厂offer!

Java架构追梦

Java 后端开发 Java八股文

暴打力扣:王者级《数据结构与算法笔记》,一路绿灯进字节Java岗

Java架构追梦

Java 算法 java面试 后端开发

Laxcus 6.0正式发布,启航国产化分布式操作系统新征程

LAXCUS分布式操作系统

数据库 大数据 分布式 操作系统 集群

MOSN 1.0 发布,开启新架构演进

SOFAStack

开源 开发者 云原生 资讯 Go 语言

物联网+车载小程序进入发展快车道

Geek-peri

小程序 车联网 物联网

Curve 基于 Raft 的写时延优化

网易数帆

开源 分布式 云原生 raft 存储

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