A Hybrid Approach to Automatic Corpus Generation for Chinese Spelling Check 文献阅读笔记

论文相关信息:

EMNLP-2018:
“本文由腾讯 AI Lab 主导,与清华大学和腾讯 SNG 合作完成。”
“作者:汪鼎民 已经开源本文内容-https://github.com/wdimmy/Automatic-Corpus-Generation”

一、做了什么和怎么做的

初步的理解:

这篇论文做的事情,就是给CSC任务提供数据,做了一个该任务下的数据生成。

做法:大量无标注数据,根据 形近似和音近似 两个方面来替换其中的一部分字符。

形近:把一个字转化为图片,把图片模糊一部分,用OCR对她进行扫描,选出识别错误的,去进行替换。

音近:收集普通话演讲语料和演讲,用ASR对演讲进行语音识别,然后,对比识别结果,如果不一样,就作为生成的错误数据。

形近:OCR-based generation

OCR工具:使用Google Tesseract

过程:文本–》图片–》图片模糊部分–》OCR 检测–》得到形近词。

具体流程:

  1. 给定一个句子
  2. 从句子中随机的选择1-2个字符去被OCR检测。 CtargetsC_{targets} Ctargets​
    –同时:其他字符(标点和字母表)会被排除在外,那些根据一个语料库统计下,出现频率较低的也会被筛掉(https://dumps.wikimedia.org/zhwiki/)
  3. 把C(targets)从文本转化为100×100像素的图片,
  4. 随机的模糊(blur)一个“相同的大小的”区域,通过使用另一篇论文中的Gaussian Bluring的方法(这个方法的目的就是让OCR犯错)
  5. 最后,利用谷歌的 Tesseract工具进行OCR识别。
  6. 当识别的结果和原来的不一样,一个V-style(形似)的错误就产生了。
  7. 经过上述步骤,得到每个句子的拼写错误和正确的参考。

关于该OCR方法:

OCR方法的Raw text来源:报纸的文章。(从人民日报的网站http://www.people.com.cn/爬取得到的–选择的原因是,这个文本是经过很多编辑筛选的,所以可以认定为是正确的。)

文本数据处理:对这些文本,根据 句子的标点符号(clause-ending punctuations )–perios句号(。)–question mark问好(?)–exclamation mark感叹号(!)。把文本转化为句子。

数据统计:一共获得50,000条句子。每个句子的长度从8-85个字符数不等。包括部分标点符号。

结果:这些句子,按照上述的OCR-方法进行处理,得到了40,000个标注的句子,一共有56,857个错误。

备注:有些字即使被模糊化了之后,OCR也是可以正确的识别出来,所以,结果中得到的句子的个数是要小于之前获得数据的总数。

形近错误生成中该方法出现的问题和解决方法。

(这一点的思考,自己反思,自己就不会想的这么周到,虽然这是一个显而易见的过程。–有了一个基本的idea,先不看文章,你觉得他会去做哪些东西呢?如何进行模型补充和实验论证的呢?)

问题的来源:有些OCR识别的错误,可能,和人实际中犯得错误并不一致。 比如:领-识别成了-铈,这个铈就和领相差的太大了,重要的是!!!,我们通常不会犯这样的错误。(这对于生成是一个数据集的分布是否和真实世界错别字的分布相近至关重要)

解决方法:提出一种方法,通过计算汉字,的笔画的距离,来计算两个字的相似度。。

  1. 就像英文的字母一样,中文字符也可以被拆分为好多个笔画。(https://en.wikipedia.org/wiki/Stroke_(CJKV_character))
  2. 从一个在线字典(https://bihua.51240.com/)中获得中文的笔画构成。
  3. 给定两个中文字符。C1,C2.
  4. 我们设置0.25*(len(C1)+len(C2))作为,一个阈值 η\etaη.(注释: len©表示一个中文字符C的笔画个数。)
  5. 如果两个字符的距离大于η\etaη,我们就认为这两个字符不相似,反之,两个字符相似。

音近:ASR-based generation

音近的流程:

关于ASR方法。

ASR的数据集:一个公开得普通话演讲语料库,该语料库包含大约14万句子(http://www.openslr.org/resources/33/data_aishell.tgz)

ASR工具包:Kaldi

音近错误生成中该方法出现的问题和解决方法

不好的三种例子:
解决方法:

  1. 抛弃不正确识别,和原句子对应的长度不一样的。对应Type:D
  2. Type:N 对应的错误类型是,字符的发音和我们原句子里的发音完全不同。如何处理:根据一个在线的中文词典(http://www.zdic.net/),然后根据字典去判断这个不正确判断的字符是否和对应的正确句子里的字符有着相似或者相同的发音。(特别的是:在拼音中,两个字符通常有相似的拼音,当他们有相同的开头和结尾,但是声调不同。)
  3. 根据此前的一篇论文,根据对学生文章的调查,得出结论,平均下来,一个句子不会有超过两个错误。如何处理:移除这些包含里两个以上不正确识别结果的句子。

通过这一系列操作,我们得到了有7K个 音近错误的句子

二、实验分析和设计过程

初步了解的实验设计:

  1. 定性分析:OCR和ASR错误识别的中文字符是不容易被人们察觉的,而同时人们也喜欢犯这样的错误。
  2. 定量分析:用BiLSTM去在三个test数据集做这个事情。
  3. 还建立了一个confusion sets,去把发现的替代字符进行总结。

评估和分析(Evaluation and Analysis)

基线数据和一个新的度量

数据集:完整的SIGHA13-15 数据集

一个新的度量: Ctrain:testC_{train:test}Ctrain:test​
Ctrain:test =∣Etrain ∩Etest ∣∣Etest ∣C_{\text {train:test }}=\frac{\left|E_{\text {train }} \cap E_{\text {test }}\right|}{\left|E_{\text {test }}\right|} Ctrain:test ​=∣Etest ​∣∣Etrain ​∩Etest ​∣​
为什么给出一个新的度量:衡量训练集和测试集之间的相似度,通过计算两个集合中出现的拼写错误。

通过这个新的度量,文章说明个了一个事情。
对于三个数据集,
每个数据集,训练集和中出现的错误和测试集合中出现的错误,占测试集合的比例很小。
而对于,文章前文构建的一个语料库,可以cover住测试集合中的大部分的错误。

这个结论说明了,前面构造的一个corpus的有效性。

定性分析部分:

实验设置:

  • 为了评估,我们的生成的包含错误的语料是否是人类容易犯的错误。
  • 挑选了300个句子去做human evaluation
  • 人员:中国大学生对读并且标注句子中的错误。
  • 标注结果从 sentence-level 和 error-level去分析。
  • 对于sentence-level,只有句子中所有的错误都被标注出来,我们才会认为这个句子是错误的
  • 对于error-level,直接计算所有被正确标记出来的字符的比例。


(此处包含三个量,说的不是很清楚。
S是句子级别的错误-E是字符级别的错误的数量)
实验结果:

  1. 学生们ASR的错误识别率更高。这说明音近风格错误比形近风格错误更容易被识别出来。
  2. 平均有36.9%的错误没有被识别出来,这表明,我们生成的一些错误是很有可能由人造成的。

case study:
分析为什么有些错误没有被人们所发现。去分析,没有被三个学生发现但是包含错误的句子情况。

  1. 政企部分是一种痼疾
    政企不分
    (只是举出例子,说自己的方法有效)

定量分析部分(重点)!:

实验设置:

  1. 正确和错误的字符分别被标注为 1, 0(这个detection的过程可以被看做一个二分类的问题)
  2. 模型:BiLSTM (序列标注模型)
  3. 模型设置:150隐层-其他超参数则根据包含10%从训练数据中随机选择的句子的展开集进行调整-分类交叉熵损失函数-优化器:RM-Sprop

实验结果:
4. 根据F1-score 图,用不同比例的D-ocr训练可以得到不同的模型效果,且在D-ocr:D-asr = 4:6的时候达到模型的最好效果。
5. 根据0%和100%的结果,我们可以知道,单独训练D-asr(音近的错误数据)比单独训练D-ocr(形近的错误数据)的性能要高。这表明,音近拼写错误的信息对模型的帮助更大。
6. 和过去的一个结论相对应,大多数的拼写错误和发音有关。
7. 为了证明我们的语料库的效果是很好的,我们拿我们的语料库和其他的训练数据进行比较。这些训练数据是手工标注的。

8. 设置多个包含10K个句子的数据部分,训练BiLSTM得到模型在三个测试集上的表现,

一些观察和结论
训练数据的大小规模对模型的训练十分重要。
  1. 本文中一个D-10K就要比原效果好。原因可能是数据量比直接用自带的训练集大的多。
  2. 随着数据的增多,模型在一直不断的变好。
精确度可能会打折扣,如果训练数据中有太多的噪音。
  1. recall,比较稳定的增长,一个可能的原因是:在训练数据中的更多的例子包含更多拼写错误,测试集中的没有见过的拼写错误在不断的减少,这样让模型发现更多的内容。
  2. 准确率的下降,可能的原因是,随着更多的数据,模型把一些之前判断正确的句子,因为当前部分的数据,导致了新的误判。
相比于有限的人工标注的训练数据,我们生成的大规模数据可以得到更好的性能。

证明了这种生成方式是十分有用的。

定量分析中的中文错别字纠正。

根据上面的描述,我们的已经发现了句子中的错别字的存在。

纠错方法:模糊字符集合+语言模型。

证明这个confusion set的有效性,文章还和两个其他的公开数据集进行对比。(Con 1 , Con 2)

Con1:SC(Similar Cangejie)SSST(same-sound-same-tone) SSDT(same-sound-different-tone)

Con2:SC,SSST,SSDT,MSST(similiar-sound-same-tone) and MSDT(similar-sound-different-tone)

实验设置:3-gram 语言模型(参考一文献做法),去计算给定一个句子的概率。

方法:根据上面detect出的错误,我们利用confusion set 从中,选出概率最大的那个字符。

结果:
1.比con1好但是没有con2好
2.con2数据量大,所以,ours比con2的速度要快。
3.这表明,我们的set在包含少量模糊字符的字符错误上表现得更好(These observations indicate that our constructed
confusions sets are more efficient in containing
fewer redundant confusion characters that seldom
serve as correction characters.

错误分析:

对两种错误进行分析:

  1. false positive
  2. false negative
    影响着,Precision 和 Recall

对于 False positive:
-问题:对于固定搭配,模型把它们判断为了错误的。
“风雨送春归” 迎春 比较常见,而送春不常见,所以,模型把这个东西判断为错误的。

-提出的解决办法但是并未解决:建立额外的知识图谱。

对于false negative:
想想健康,你就会知道应该要戒烟了。
–禁言–戒烟。
而禁言和戒烟既不时视觉上的,也是不是发音上相似的字符

作者认为,要想改正这种错误,需要知道许多contex的文本信息。
-作者提出·的解决办法是:建立一个word-level1的这样的表去做这个工作。

三、其他和相关信息(语言学统计结论等)

从introduction了解的信息

  1. Spelling check 的应用:搜索引擎、自动文本打分。
  2. 拼写错误可能会影响句子意思的表达,这样的话,可能会转而影响,“中文词分割”和“词性标注”这样的基础任务。
  3. 常见错误的地方:email、社交网络信息
  4. 作者认为:因为有限的数据集,许多SOTA的有监督学习模型很难使用,这很大程度上影响了CSC的发展。
  5. 也有人尝试用无监督的语言模型去做这个任务
  6. 他们认为:中文拼写错误主要是 由于 形状相似和发音相似的错误使用所导致的。
  7. 一个关于形近的观点:中文,作为象形文字,由6万多个字符组成(http://www.hanzizidian.com/bs.html),而他们是有有限的偏旁和部首radical组成的https://en.wikipedia.org/wiki/Radical_(Chinese_characters)
  8. 对于音近的问题,主要由拼音决定,而拼音主要由声母(initials)、韵母(finals)、音调(tones)https://en.wikipedia.org/wiki/Pinyin来决定的;作者从另一篇论文中了解到:现代汉语中成百上千的字符大概只对应于398个syllables,所以,就会有很多的中文字符有着相同的发音。所以,就会有许多音近的错别字存在
  9. 作者的内容和过去的文章都表明:大多数的拼写错误和发音有关。。同时,考虑到,现在 大家都用电脑和手机打字,使用五笔和手写的比例越来越小。发音所导致的问题的占比会越来越高。

future work

data-driven 下可以做更多,关于模型改进的内容。

感受:

这篇ACL文章的idea没有太大的惊人之处,但是,整个模型和实验的完备性和逻辑的讲述的非常好。
同时,有一些小错误,比如Table引用,8,9,出现了错误

还有,整个事情说的很严谨,比如,虽然,ours的性能并没有超过Con2,但具体是怎么回事,文章中说的很清楚。
还有一点做的很好的地方是,对于,机器生成的错误,作者回去思考,这个错误可能不是人类常常会犯的错误(即 错误分布与真实世界不符合。)并且提出了改进的方法。

文献阅读笔记-CSC-数据集-A Hybrid Approach to Automatic Corpus Generation for Chinese Spelling Check相关推荐

  1. 【裂缝检测】文献阅读笔记

    本笔记仅供个人回顾使用,未经允许禁止转发 文献相关网站: 中国知网 iData 爱学术[中文文献友好] 一搜即达[科研通聚合搜索] SCI-Hub论文下载可用网址 谷歌学术『Google』镜像 谷歌学 ...

  2. POI推荐文献阅读笔记3:Predicting Human Mobility via Graph Convolutional Dual-attentive Networks

    POI推荐文献阅读笔记3: Predicting Human Mobility via Graph Convolutional Dual-attentive Networks 1.摘要 2.贡献 3. ...

  3. 网约车需求预测文献阅读笔记(一)《基于图卷积的出发地—目的地矩阵预测:旅客需求建模的新视角》

    文献阅读笔记:<基于图卷积的出发地-目的地矩阵预测:旅客需求建模的新视角> 摘要 现有研究不足 研究挑战(难点) 本文的贡献 准备工作 定义1:格子 定义2:时间片 定义3:OD矩阵 模型 ...

  4. 文献阅读笔记:EvolveGraph: Multi-Agent Trajectory Prediction with Dynamic Relational Reasoning

    文献阅读笔记 摘要 1 引言 2 相关工作 3 Problem formulation 4 EvolveGraph 5 Experiments 6 结论 EvolveGraph: Multi-Agen ...

  5. 文献阅读笔记----TieNet: Text-Image Embedding Network

    文献阅读笔记----TieNet: Text-Image Embedding Network for Common Thorax Disease Classification and Reportin ...

  6. 【知识图谱】本周文献阅读笔记(3)——周二 2023.1.10:英文)知识图谱补全研究综述 + 网络安全知识图谱研究综述 + 知识图谱嵌入模型中的损失函数 + 图神经网络应用于知识图谱推理的研究综述

    声明:仅学习使用~ 对于各文献,目前仅是泛读形式,摘出我认为重要的点,并非按照原目录进行简单罗列! 另:鉴于阅读paper数目稍多,对paper内提到的多数模型暂未细致思考分析.目的是总结整理关于KG ...

  7. 文献阅读笔记:Smart Homes that Monitor Breathing and Heart Rate

    文献阅读笔记:Smart Homes that Monitor Breathing and Heart Rate Fadel Adib Hongzi Mao Zachary Kabelac Dina ...

  8. 《基于区块链技术的虚假新闻检测方法》文献阅读笔记+总结

    <基于区块链技术的虚假新闻检测方法>文献阅读笔记+总结 关键词:区块链.智能合约.虚假新闻.新闻网站.博弈论 来源 题目 时间 作者 中国学术期刊网络版 <基于区块链技术的虚假新闻检 ...

  9. 研究生如何做文献阅读笔记

    ** 研究生如何做文献阅读笔记 ** 研究生如何做文献阅读笔记? 说实在的,我自己也不是很会读书.读书的速度也不快,只是喜欢读书罢了.阅读文献,对于开题期间的研究生和写论文期间的研究生是很重要的功课, ...

最新文章

  1. 产品问答 | 作为项目负责人,怎么提升成员工作斗志?
  2. QT的QMatrix类的使用
  3. 大地图开发管理:《巫师3》Umbra遮挡剔除技术
  4. java多线程之Concurrent包
  5. java项目逻辑重要吗_JAVA小项目,逻辑+感觉+总结?java小白你做到了吗(源码+教程)...
  6. 某项目要调用现有的100多个DLL 一 开始
  7. struts2 Eclipse 中集成strust2开发框架实例
  8. mysql怎么禁止远程连接_mysql如何设置禁止远程连接
  9. node.js异步式IO与事件式编程
  10. LimeSurvey问卷调查管理系统
  11. LAMP环境搭建教程
  12. 时间序列-Auto-ARIMA模型
  13. WPF学习之页间导航与页间数据传递
  14. java思维导图 - -13张思维导图带你快速入门 --
  15. 使用PowerPoint
  16. 完美世界控股集团发布全新互联网品牌88,推出首款个人免费商务邮箱
  17. 软件工程实训有必要吗_软件工程专业有没有必要考研
  18. 新手上路vscode+php|php文档格式化与代码重构
  19. 对特征值和特征向量的理解
  20. heif heic 的区别_什么是HEIF(或HEIC)图像格式?

热门文章

  1. 明明的随机数c++超短题解
  2. 面试了10几家软件公司测试岗位,做的面试题大盘点,重点大合集
  3. (二)理解word2vec:实践篇
  4. 南外计算机课,南外河西初中召开仿生机器人创客空间项目建设方案答辩论证会...
  5. 这样做数据可视化驾驶舱,高端大气,一目了然,领导不点赞都难
  6. 榕树说技术支持(Rong Zhiyun technical support)
  7. 2017年第四八届C/C++ B组蓝桥杯省赛真题
  8. expdp异地备份 (expdp导出数据到其他服务器)
  9. 经济管理专业必备的15种国内数据库推荐
  10. 第8周 项目5 定期存款利息计算器