文献阅读笔记-CSC-Chunk-based Chinese Spelling Check with Global Optimization-翻译+模型理解

本文主要是介绍文献阅读笔记-CSC-Chunk-based Chinese Spelling Check with Global Optimization-翻译+模型理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Chunk-based Chinese Spelling Check with Global Optimization

作者:阿里巴巴小组
时间:2020年
会议:EMNLP-finding
论文地址Arxivhttps://www.aclweb.org/anthology/2020.findings-emnlp.184.pdf

摘要:

CSC是一个有挑战性的任务,因为中文有许多独特的特点,比如:很大的字符集(比英文26字母多),没有词语边界(不能显式的看出词语-中文分词),很短的词语长度(相比于英文,很短但是意义却可能丰富)。

一方面:(correction)之前的工作只是考虑了相似的字符发音或者形状。不能够纠正视觉和发音上不相关的错别句。(之前大多数工作的确如此,这也是从 中文常见错 的来的motivation)

另一方面:各种pipeline-style 结构被广泛运用,这是十分难以优化的。(大家,通常给出各种pipeline,这个过程中,趋向于变得更加复杂,这自然带来一个问题,global的 优化是很难做好的,且我们确实不希望看到太多“修枝”一样的工作)

为了解决这个问题,这篇论文提出了,
1.用语义候选来扩充之前的混淆集合。视觉发音+语义
2.提出一个基于块的结构去统一的纠正,单个字和多个字。
3.用一个全局最优策略,去帮助 整个句子 correction 的决策
(word:中文中的词,char:中文中的一个字)

Intro:

中文比英文难,三个方面:

  • 英文有有限少量的拉丁字母组成,而中文有三千多个常用字。导致有很大的搜索空间。
  • 英文的基本单位是单词。中文是连续书写没有边界。且词语的定义在不同的语言学理论中是不都一样的。
  • 中文的意群的字很少,所以,稍微的改变都会很大的影响原意。

对于第一个挑战,之前的工作表明,CSC大多数来自于相似的发音、形状或者含义。
这次通过一个masked的语言模型,我们决定加入语义的文本信息来扩充这个混淆集。
然而,因为masked的语言模型缺乏人类错误知识,所以,对于发音和形状相似,我们结合这两个方面来一起解这个问题。

对于,第二个挑战,早期的工作依赖于分词结果。而分词系统是需要在clean的语料库进行训练的,这样,拼写错误就会导致不正确的分词结果。这不断积累的错误,就会让这个问题变得更加困难。
因此,我们提出字符级别的直接纠正方法,这个方法对分词的错误不敏感,更稳健。但是,字符级别的纠正不能够有效的利用词语级别的语义信息,这样纠正就变得更加困难,
为了解决这个问题,我们提出字符级别的纠错和分词后纠错的结合方法。但这个复杂的结构会让这个模型去表现的全局最优。

对于第三个挑战,过去的工作,主要依赖于local 的context。随着统计特征,被限制在一个固定的窗口,这很难去捕获更深层次的文本背景信息。

在这篇文章,我们提出了一个结合多功能的统一框架。
用了相似发音、形状和语义的的混淆集。

  • 一个基于块的全局优化解码工具,针对单个字符和多字符词语。
  • 形状、发音、语义混淆集处理不同的拼写错误。
  • 实验达到好的结果。

Approch

整体理解

输入一句话,然后对不同长度区间的词,去生成很多个候选的词。然后再选出一个全局看起来最正确的,作为纠正。

在这里插入图片描述

基于块的解码

基于块的解码器把单字词、多字词、短语和俗语同等的看待为一个块。他提供了一个统一的模块,这里我们可以轻松地扩充这个候选的方法。这个框架也让全局最优变为可能。

给定一个句子, s = [ c 1 , c 2 , ⋯ , c n ] s=\left[c_{1}, c_{2}, \cdots, c_{n}\right] s=[c1,c2,,cn],这个基于块的解码器同时不断地分块和纠正输入句子。他尝试去找到最佳的块候选的结合。并且重写这个输入的句子,然后纠正。

s c = arg ⁡ max ⁡ s ^ ∈ L ( s ) f ( s ^ , s ) s_{c}=\underset{\hat{s} \in L(s)}{\arg \max } f(\hat{s}, s) sc=s^L(s)argmaxf(s^,s)
这里的 f f f是得分函数, s 是 输 入 句 子 s是输入句子 s L ( s ) 是 所 有 可 能 的 快 的 结 合 。 L(s)是所有可能的快的结合。 L(s)

这个解码过程运用了beam search 算法:
在这里插入图片描述
初始化一个空的correction。
在循环中,我们使用动态生成的块候选扩展beam中的每个部分解码的校正。
一个得分模型被用来给每一个纠正一个confidence score(细节随后介绍。)
每一次循环结束后,我们会对beam 进行分类,并且把confidence score值高的去掉。
在不断的纠正后,我们得到了最正确的纠正作为最终的结果。

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

候选生成

这里的module 认定任何跨度的词在句子里都可能是错误的。
对于三种错误类型,发音,形状,和语义,我们分别给出三个方面,去做。

发音:

从一个句子 s s s中给一个字符块状 chunk ⁡ i j = [ c i , ⋯ , c j ] \operatorname{chunk}_{i j}=\left[c_{i}, \cdots, c_{j}\right] chunkij=[ci,,cj],我们把他的字转化为拼音,并且在词汇表 V V V中检索所有的相似的发音的候选。

形状:

我们把所有视觉相似的进行代替。世界上,为了平衡速度和质量,我们要只把相差不大(1edit distance)的进行了替换

语义:

语言模型,masked不同的位置后,用top k的 预测作为语义的混淆集合。

!句子级别的纠正选择-全局最优!

过去的work 如何 formulate 这个 correction task的
s c = arg ⁡ max ⁡ s ^ p ( s ^ ∣ s ) s_{c}=\underset{\hat{s}}{\arg \max } p(\hat{s} \mid s) sc=s^argmaxp(s^s)

简单的贝叶斯重写
s c = arg ⁡ max ⁡ s ^ p ( s ∣ s ^ ) ⋅ p ( s ^ ) p ( s ) s_{c}=\arg \max _{\hat{s}} \frac{p(s \mid \hat{s}) \cdot p(\hat{s})}{p(s)} sc=argmaxs^p(s)p(ss^)p(s^)

p ( s ) p(s) p(s)为常量,改写为下式:
s c = arg ⁡ max ⁡ s ^ ( log ⁡ p ( s ∣ s ^ ) + log ⁡ p ( s ^ ) ) s_{c}=\underset{\hat{s}}{\arg \max }(\log p(s \mid \hat{s})+\log p(\hat{s})) sc=s^argmax(logp(ss^)+logp(s^))

作者给出一系列的 features
在这里插入图片描述
下面这里注意:对应于上面的式子,运用在chunk-level
[ c i , ⋯ , c j ] \left[c_{i}, \cdots, c_{j}\right] [ci,,cj]
[ c ^ i , ⋯ , c ^ j ] \left[\hat{c}_{i}, \cdots, \hat{c}_{j}\right] [c^i,,c^j]
chunk-level的文本,根据上述特征进行计算:得到
c e m = ∑ k = i j ( log ⁡ p ( c ^ k ∣ c k , s ) − log ⁡ p ( c k ∣ c k , s ) ) c e m=\sum_{k=i}^{j}\left(\log p\left(\hat{c}_{k} \mid c_{k}, s\right)-\log p\left(c_{k} \mid c_{k}, s\right)\right) cem=k=ij(logp(c^kck,s)logp(ckck,s))
通俗来说就是基于chunk-level的小部分的correction 来计算一个 差。
最后要把所有的feature 汇集在一个,用一个简单的线性函数来实现:
score = ∑ i w i ⋅ =\sum_{i} w_{i} \cdot =iwi feat i _{i} i
就得到了最后的式子。
最后用MERT框架进行优化(初始化weight为零,然后通过Z-MERT对权重参数进行优化)

作者也提出,end-to-end 的改进想法,就是不再自己提feature,这才是大势所趋。

这篇关于文献阅读笔记-CSC-Chunk-based Chinese Spelling Check with Global Optimization-翻译+模型理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/419908

相关文章

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听