QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

百度中文纠错技术

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

评论

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

聊聊那些奇葩的代码规范 —— 滥用 lombok

HoneyMoose

Flink实例:Flink流处理程序编程模型

TiAmo

scala 数据流 Flink 平台 6 月 优质更文活动

Java 8升级Java 17过程记录

程序员架构进阶

jdk8 升级 java17 6月月更 6 月 优质更文活动

Jogger慢跑者链游系统开发NFT技术

薇電13242772558

NFT 链游

ESP8266获取天气预报信息,并使用CJSON解析天气预报数据

DS小龙哥

6 月 优质更文活动

架构模块一作业

sandywrh

打造高可用的微服务架构:Spring Cloud 的优化与实践

xfgg

Java 微服务 SpringCloud 6 月 优质更文活动

Amazon CodeWhisperer代码提示体验本文带你了解

我叫于豆豆吖.

云计算 亚马逊 亚马逊云

什么是双机热备技术?华为和思科如何实现双机热备?

做梦都在改BUG

Java 网络 双机热备

【Netty】「NIO」(四)消息边界与可写事件

sidiot

Java 后端 Netty 6 月 优质更文活动

LeetCode:2695. 包装数组,详细解释

Lee Chen

JavaScript LeetCode

阿里P8现身说法,解密“架构”原理与实战笔记:从分布式到微服务

做梦都在改BUG

Java 架构 分布式 微服务

等待还是转行?GitHub爆赞的10W字Java八股文,你没得选择

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

浅谈微服务异步解决方案

做梦都在改BUG

Java 微服务 异步

OpenHarmony 4.0 Beta1发布,邀您体验

OpenHarmony开发者

OpenHarmony

大厂面试必备!字节大佬刷Leetcode总结的算法笔记

做梦都在改BUG

Java 数据结构 算法 LeetCode

开源赋能 工业铸魂 | 2023开放原子全球开源峰会开源工业软件分论坛即将启幕

开放原子开源基金会

开源 开放原子全球开源峰会 开源工业软件

来自大佬的洗礼!全网独家的SpringBoot核心文档,讲的太清晰了

做梦都在改BUG

Java Spring Boot

JMeter笔记10 | JMeter检查点

测试 Jmeter 性能测试 自动化测试 接口测试

首款搭载OpenHarmony 3.2的智能POS终端通过“开源鸿蒙”兼容性测评

科技热闻

问道价值互联网,区块链的下一个十年 | 2023开放原子全球开源峰会区块链分论坛即将启幕

开放原子开源基金会

区块链 开源 开放原子全球开源峰会

Web 界面开发指南,持续更新

南城FE

CSS 前端 交互设计

探究核心技术&最佳实践,云原生OLAP论坛火热开启!

阿里云大数据AI技术

云原生

2023世界人工智能大会“AI生成与垂直大语言模型”论坛重磅来袭!

NLP资深玩家

“变脸的秘密”!直播源码app开发技术特效功能的实现

山东布谷科技

源码剖析 APP开发 软件开发、 源码搭建 直播源码

百度离线资源治理

百度Geek说

数据库 大数据 离线 企业号 6 月 PK 榜 6 月 优质更文活动

CoinList打新以太坊虚拟机Neon

币离海

以太坊虚拟机 neon Coinlist Solana

瓴羊Quick BI报表分析工具,大幅提升企业经营效率

夜雨微澜

深度学习应用篇-计算机视觉-图像分类[3]:ResNeXt、Res2Net、Swin Transformer、Vision Transformer等模型结构、实现、模型特点详细介绍

汀丶人工智能

人工智能 深度学习 计算机视觉 图像分类 6 月 优质更文活动

深度学习应用篇-计算机视觉-目标检测[4]:综述、边界框bounding box、锚框(Anchor box)、交并比、非极大值抑制NMS、SoftNMS

汀丶人工智能

人工智能 深度学习 计算机视觉 目标检测 6 月 优质更文活动

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