当前位置: 首页 > news >正文

Chunk-based Chinese Spelling Check with Global Optimization(EMNLP2020)

Chunk-based Chinese Spelling Check with Global Optimization(EMNLP2020)

一.概述

  作者认为,一方面,以往的工作大多只考虑对汉字读音或字形相近的错字进行校正,而没有对视觉上和语音上不相关的错字进行校正;另一方面,pipeline的体系结构被广泛用于处理各个模块中不同类型的拼写错误,这很难优化。

  为此,作者提出:

  1.用语义候选集扩展了传统的混淆集,以涵盖不同类型的错误

  2.提出了一个基于块的(chunk-based))框架来统一纠正单字符和多字符的单词错误

  3.采用全局优化策略来实现句子级的纠错选择

  本文主要贡献如下:

  1.提出了一种全局优化的基于块的解码方法,在统一的框架内纠正单字符和多字符的单词错别字

  2.结合发音、形状和语义混淆集来处理不同的拼写错误

  3.方法在三个基准数据集和一个OCR数据集上实现了新的最先进的性能

二.方法概述

在这里插入图片描述

  上图是所提方法的流程。本文提出的拼写检查方法采用基于块的解码方法,统一处理单字和多字单词。在解码过程中,根据输入句子和部分解码后的句子动态生成可变长度的候选词。为了选择最佳的校正结果,采用全局排序优化方法将不同的特征组合在一起。

1.基于块解码(Chunk-based Decoding)

  基于块的解码将单字符单词、多字符单词、短语和习语等同地视为块。它提供了一个统一的框架,我们可以在其中轻松地扩展候选生成方法。该框架还使全局优化的实现成为可能。 给定一个具有n个字符的输入句子=[c1,c2,…,cn],基于块的解码同时逐步分块和校正输入的句子。 它试图找到候选块的最佳组合,并以从左到右的方式将输入句子改写为正确形式:

在这里插入图片描述

这里的f 是一个评分函数,s是输入的句子,L(s)表示s的候选块的所有可能组合的集合。
在这里插入图片描述

  如上图所示,解码用的是beam search,beam利用空的校正(empty correction)进行初始化。在循环中,我们用动态生成的候选块扩展beam中每个部分解码的校正。一个评分模型被用来给每个校正一个置信度分数。在每个循环结束时,我们对beam进行排序并以低置信度对校正进行剪枝以减少搜索空间。最后,在beam的每次校正对整个输入句子进行解码后,我们输出最高置信度的校正作为最终结果。

  本质上,解码阶段联合搜索所有可能的分块及其校正。从另一个角度来看,解码逐渐消除歧义并改写句子。

2.候选生成(Candidate Generation)

  之前的工作针对候选词的检索是根据发音或形状混淆集。为了处理单字符单词拼写错误和视觉上或音系上无关的拼写错误,我们将发音和形状混淆集扩展为语义混淆集。

  候选生成模块假定输入句子中的每个字符都可能拼写错误。根据三个方面的混淆集,我们生成了所有可能的块候选,用于部分解码的校正。给定词汇表V、输入句子s和起始位置i,我们将从i开始且在最大长度范围内的字符块视为潜在的打字错误,并生成可能的校正候选项:在这里插入图片描述

发音:给定一个字符块chunkij = [ci,···,cj]从句子s中的第i个字符到第j个字符,我们将chunkij转换为它的拼音,并从V中检索发音相似的所有候选字符。

形状:除了发音,我们还考虑了候选人的形状相似。在chunkij中,我们用视觉上相似的字符替换字符,并保留可以在V中找到的候选字符。在实践中,为了在速度和质量之间取得平衡,我们只考虑与chunkij有1次编辑距离(1次替换)的候选项。

语义:除了音似和形似外,这里也利用语言模型根据上下文信息检索语义上合理的候选词。这里利用masked language model作为语言模型,并在CSC训练数据上对预训练的masked 模型进行微调,并使用每个字符的前k预测作为语义混淆集。对于候选词的生成,我们将chunkij中的每个字符替换为语义相似的字符,并保留在V中可以找到的候选词。与形状混淆集类似,在实践中,我们只考虑与chunkij有1个编辑距离(1个替换)的候选项。

3.校正选择(Correction Selection)

  这里将介绍校正选择的训练策略和我们用于全局优化的特征。之前的大部分工作都遵循噪声信道模型,该模型将纠错任务表述为:
在这里插入图片描述

其中s是输入句子,s^表示可能的校正。该公式可以通过贝叶斯规则进一步改写为:
在这里插入图片描述

其中p(s|s)和p( s)分别为错误模型概率和句子概率。然后我们忽略p(s)因为它对每个s^都是常数,然后取对数:

在这里插入图片描述

该公式将错误模型概率与句子概率以对数形式结合为线性模型。在实践中,错误模型和句子概率是复杂的。在实验中,我们使用一组特征,并采用线性模型作为打分函数进行近似。

在这里插入图片描述

其中wi是第i个特征feati的权重。

  下表列出了我们用于校正选择的特征及其描述。

  其中ed和pyed通过字符级和发音级来计算纠错句和输入句的相似度。较长的数据块通常比较短的数据块更明确,因此使用较少n-chunk的校正通常更合理。wlm用于检查修正的流畅性。n-py, n-shape和n-lm为不同的混淆集分配权重。cem用于对字符级错误概率进行建模。我们直接使用语义混淆集中经过微调的掩码语言模型(masked language model)作为错误模型。当一个块字符[ci,···,cj]被[ c^i,···,c ^j]替换,我们计算块级(chunk-level)cem近似为:

  其中p( ck|ck,s)是在给定输入句子s的情况下用ck替换ck的概率。

  对于不同特征的组合,我们采用最小错误率训练(MERT)算法。给定前n个输出,MERT算法通过学习将解码后的句子根据与金句的相似度重新排序来优化评分函数。MERT算法不是局部排序,而是直接通过句子级指标度量相似性,以实现全局优化。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.mrgr.cn/news/35615.html

相关文章:

  • NoETL
  • 聊天服务器(4)CMake
  • spring中entity的作用
  • 【activiti工作流源码集成】springboot+activiti+mysql+vue+redis工作流审批流集成整合业务绑定表单流程图会签驳回
  • 编程初学者的第一个 Rust 系统
  • django入门【05】模型介绍——字段选项(二)
  • Doris之使用优化
  • 一天认识一个硬件之测线器
  • Redis实战--Redis的数据持久化与搭建Redis主从复制模式和搭建Redis的哨兵模式
  • 前端框架对比与选择指南:React.js、Angular、Vue.js及其他
  • 【JS】Reflect
  • Java后端开发中的RESTful API版本控制策略
  • uniapp js向json中增加另一个json的全部数据,并获取json长度
  • Elasticsearch7.7修改network.host IP地址 start启动失败及Elasticsearch7的配置项详解
  • 栈的深度解析:顺序栈与链栈的实现
  • Oracle逻辑备份脚本【生产环境适用】
  • 苏轼为何要写石钟山记?时间节点是关键
  • 问:Java线程为不直接run(),而是要先Start()?
  • service 命令:管理系统服务
  • 数据结构 ——— 数组 nums 包含了从 0 到 n 的所有整数,但是其中缺失了一个,请编写代码找出缺失的整数,并且在O(N)时间内完成
  • 【C++前缀和 状态压缩】1177. 构建回文串检测|1848
  • 车辆识别数据集,图片数量20500,模型已训练200轮
  • C语言 | Leetcode C语言题解之第435题无重叠区间
  • TCP/IP 协议栈
  • 使用TensorFlow实现一个简单的神经网络:从构建到训练
  • 240924-通过服务器代理ip地址及port端口wget等下载文件