每天给你送来NLP技术干货!


来自:老刘说NLP

作者:刘焕勇

文本纠错是自然语言处理的一个重要任务,也是文本处理的第一道坎,一个错误的文本表述可能会引起后续语义的错误表达,并对后续的效果产生影响。

例如,以常见的输入错误为例,十分丰富多彩,常见错误类型包括:

1、少字:微信跳一 -> 微信跳一跳
2、多字:微信跳一跳跳 -> 微信跳一跳
3、错字:微信 挑一挑 -> 微信跳一跳
4、拼音:tiaoyitiao -> 跳一跳
5、中英文混拼:held住 -> hold住
6、中文拼音混拼:跳yi跳 -> 跳一跳
7、知识错误:南山平安金融中心 -> 福田平安金融中心
8、音转:灰机 -> 飞机
9、谐音字词,如 配副眼睛-配副眼镜
10、混淆音字词,如 流浪织女-牛郎织女
11、字词顺序颠倒,如 伍迪艾伦-艾伦伍迪
12、字词补全,如 爱有天意-假如爱有天意
13、形似字错误,如 高梁-高粱
14、中文拼音全拼,如 xingfu-幸福
15、中文拼音缩写,如 sz-深圳

而这些错误又可以进一步区分为有意或者无意两种,无有意的错误可能是为了反识别或者恶意营销等灰色产业服务。

因此,文本纠错这块就有诸多应用场景。

例如,写作辅助上,在内容写作平台上内嵌纠错模块,可在作者写作时自动检查并提示错别字情况。从而降低因疏忽导致的错误表述,有效提升作者的文章写作质量,同时给用户更好的阅读体验。

又如,搜索纠错上,用户经常在搜索时输入错误,通过分析搜索query的形式和特征,可自动纠正搜索query并提示用户,进而给出更符合用户需求的搜索结果,有效屏蔽错别字对用户真实需求的影响。

再如,语音识别对话纠错上,将文本纠错嵌入对话系统中,可自动修正语音识别转文本过程中的错别字,向对话理解系统传递纠错后的正确query,能明显提高语音识别准确率,使产品整体体验更佳。

而就技术而言,实际上可以对应的变成变体或者错误体的生成以及还原两者,前者研究如何快速生成尽可能丰富的变体,后者研究如何返回正确的文本,十分有趣。

因此,本文主要围绕NLP纠错技术,做第一篇论述,从工业场景中的文本纠错、鲁棒性过滤以及恶意短信变体字还原大赛三个比赛进行介绍,并使用最简单的编辑距离操作生成变体,供大家一起参考。

一、自然语言处理技术创新大赛—中文文本纠错比赛

赛题背景: 文本校对任务主要是针对文本中出现的错误进行检测和纠正,属于综合性的自然语言处理研究子方向,能够比较全面体现了自然语言处理的技术水平。过往文本校对相关评测使用的都是外国语言学习者撰写的文本,这些文本的错误大多数都是一些中文母语写作者不会犯的一些错误。

对于政务公文、新闻出版等行业来说,一款针对以中文为母语的用户所使用的校对系统将会有更大的帮助。因此,本赛题主要选择互联网上中文母语写作者撰写的网络文本作为校对评测数据,从拼写错误、语法错误、语病错误等多个方面考察机器的认知智能能力。

赛题任务: 赛题选择网络文本作为校对数据,从中检测并纠正错误,实现中文文本校对系统。即给定一段文本,校对系统从中检测出错误字词、错误类型,并进行纠正。具体的输入、输出及错误类型为:

输入:输入文件包含若干行文本,每行文本对应句子ID和相应的待校对句。

输出:输出文件每行对应句子ID及相应的校对结果。校对结果中每处错误需包含错误位置、错误类型、错误字词及正确字词,每处错误及多处错误间均以英文逗号分隔。

错误类型:拼写错误,包括别字及别词;语法错误,包括冗余、缺失、乱序;语病错误,包括语义重复及句式杂糅。

举例如下:

地址:https://2021aichina.caai.cn/track?id=5

二、中国人工智能大赛鲁棒性过滤算法

第三届中国人工智能大赛,重点聚焦算法治理、深度伪造音视频检测、网络安全等方向,希望以竞赛方式解决现实场景中需求问题。

赛题背景:构建鲁棒的过滤算法在网络空间内容治理领域具有重要的实际价值。信息产生、获取、消费等环节的算法鲁棒性欠缺,会严重影响正常的社会秩序。因此,算法鲁棒性在算法安全治理中属于非常重要的指标。

在信息生成和获取的环节,过滤算法扮演着安全护卫的作用,把守网络信息安全的第一关。过滤算法是指将用户产生的特定信息进行自动识别和过滤的算法。目前,特定信息变换各种形式出现在互联网中,这对于现有的过滤算法无疑是一个挑战。

例如,中国人工智能大赛鲁棒性过滤算法赛道过滤出了这样一道赛题:

赛题任务:主办方将收集上千条含特定信息和同比例正常信息的短文本,用以评价选手的过滤模型。测试文本根据所包含特定信息的变种难度不同设置相应的难度分数。本赛题将以参赛选手过滤模型识别出的特定信息样本以及该样本对应难度的积作为主要评价指标。

地址:https://ai.xm.gov.cn/competition/project-detail.html?id=e813904b755a439da1a6c5749bcf9b60&competeId=a8e0c40dbb2347fba8b3c9a6294efa5b

三、面向黑灰产治理的恶意短信变体字还原

赛题背景: 恶意短信一直是黑灰产引流的重要渠道,信息中携带的微信号、QQ号、网址更是非法信息传播的主要入口,业界通常做法是利用违法或不良信息检测引擎在手机终端实现自动拦截。然而不法分子为逃避检测,通过使用变体字发送恶意短信绕过拦截规则的情况越来越多。

由于变体字变换方式多,变换速度快,单纯通过规则进行变体词发现的效果有限,配套人工审核成本高且具有滞后性。如何精准和高效地还原变体字文本,提高非法信息的抽取能力,以及新型变体字还原的泛化性和时效性,就成为了解决这一难题的“关键之钥”。

赛题任务: 参赛团队通过设计算法,实现对恶意短信中变体字的还原。参赛团队需要对训练集中的短信样本进行分析,采用深度学习建模的方法将测试集中新出现的短信变体字还原为正常信息文本,即不含有变体字、干扰字符,所有变体字部分应使用常见简体汉字、字符来表示,同时需要保证不包含变体字的正常文本不受影响。

例子如下;

变体句子: 噂儆的碦戸:其鎃祝册茺贈镐888葒笣!禛朲对弈佰捆任你選!嶺:http://url.cn/5aLeqP2

还原后: 尊敬的客户:棋牌注册充赠高888红包!真人对弈百款任你选!领:url.cn5aLeqP2

地址:https://beta-www.datafountain.cn/competitions/508

四、基于编辑距离生成变体小测试

实际上,基于编辑距离来生成的变体是最快速且简单的方式,下面做了一个快速实现:

#  词典库
vocab = set([line.rstrip() for line in open('vocab.txt')])
# print(vocab)
#  生成所有的候选集合
def generate_edit_one(word):"""# 假设使用26个字符letters = 'abcdefghijklmnopqrstuvwxyz'splits = [(word[:i],word[i:]) for i in range(len(word)+1)]# inserts操作inserts = [L+c+R for L,R in splits for c in letters]# delete操作deletes = [L+R[1:]for L,R in splits if R]# replace操作replaces = [L+c+R[1:]for L,R in splits if R for c in letters]candidates = set(inserts + deletes + replaces)# 过滤掉不存在词典库里的单词return [word for word in candidates if word in vocab]def generate_edit_two(str):"""给定一个字符串,生成编辑距离不大于2的字符串"""return [e2 for e1 in generate_edit_one(str) for e2 in generate_edit_one(e1) if e2 in vocab]
print('给定一个字符串,生成编辑距离为1的字符串','\n',generate_edit_one('apple'))
print ('给定一个字符串,生成编辑距离不大于2的字符串','\n',generate_edit_two("apple"))

执行后,我们可以产生如下变体结果:

参考文献与开源数据集

1、https://blog.csdn.net/weixin_45422335/article/details/105638224
2、https://github.com/destwang/CTC2021
3、CGED历年公开数据集:http://www.cged.tech/
4、NLPCC2018语法纠错数据集:http://tcci.ccf.org.cn/conference/2018/taskdata.php
5、SIGHAN及相关训练集:http://ir.itc.ntnu.edu.tw/lre/sighan8csc.html

最近文章

EMNLP 2022 和 COLING 2022,投哪个会议比较好?

一种全新易用的基于Word-Word关系的NER统一模型,刷新了14种数据集并达到新SoTA

阿里+北大 | 在梯度上做简单mask竟有如此的神奇效果


下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!  后台回复【五件套】
下载二:南大模式识别PPT  后台回复【南大模式识别】

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

NLP纠错 | 恶意短信变体字还原、鲁棒性过滤与文本纠错竞赛概述与简单变体实现...相关推荐

  1. ESET最近发现了一款新的Android勒索软件,它通过向受害者的手机的联系人列表发送恶意短信继续传播

    最近ESET研究人员发现了一个新的Android勒索软件家族,它们试图通过向受害者的手机的联系人列表发送恶意短信继续传播. 在Android勒索软件遭遇两年的衰退之后,一个新的Android勒索软件家 ...

  2. Android之——短信的备份与还原

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47091281 眼下,Android手机中的一些软件能够实现手机短信的备份与还原操作 ...

  3. java 短信70个字分割_一条短信可以发送70个汉字或者是160个英文字母

    一般的手机可以编写很长的短信,其实系统是把一个短信分割成多个短信,再把它们发送出去,也就是我们说的长短信. 但可能很多人也注意到了,在短信编辑窗口的最下面,有类似这样的一串字:"5/160& ...

  4. 怎样防止恶意刷短信验证?

    公司的app.网站希望实现短信注册.验证,有什么办法能防止恶意刷短信? 1.同一mac地址限制? 2.同一手机号码多次验证不成功就封号码? 有什么行之有效的建议吗? 在讨论防止恶意短信验证之前,我们先 ...

  5. python发微信提醒天气冷了注意保暖_天气变冷的短信问候语_天凉了注意保暖的微信问候语...

    天气变冷的短信问候语 降温了,花落的声音风知道,思念的感觉心知道,变冷的温 度冬知道. 关于天气变冷的短信问候怎么说呢 ? 下面是小编给大家 分享的天气变冷的短信问候语,仅供大家参阅. 天气变冷的短信 ...

  6. 一切为了运营!如何从推广短信链接唤起 App?

    ●●● 需求描述 写这篇文章,也是缘于运营的一个需求:在 App 运营过程中,会有大量的推广短信,里面附有链接,目的是引导用户参与活动.如果用户手机没有安装我们的 App 就引导其去下载页,如果用户已 ...

  7. java短信接口_短信接口-- java

    客户接口部分提供https 和 WebService(目前只支持提交短信) 方式的接口,客户可以根据需求选择相应接口,接口编码方式默认采用UTF-8 发送规则: 同一个号码,发送内容带有(验证码),3 ...

  8. 华信短信平台接口文档

    测试账号关注微信领取:g94263 接口说明:客户接口部分提供https 和 WebService(目前只支持提交短信) 方式的接口,客户可以根据需求选择相应接口,接口编码方式默认采用UTF-8 发送 ...

  9. 一切为了营收!如何从推广短信链接唤起 App ?

    一.需求描述 写这篇文章,也是缘于运营的一个需求:在 App 运营过程中,会有大量的推广短信,里面附有链接,目的是引导用户参与活动.如果用户手机没有安装我们的 App 就引导其去下载页,如果用户已经安 ...

  10. Java实现的一个发送手机短信(亲测可用)

    原文地址:http://sms.webchinese.cn/api.shtml JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webs ...

最新文章

  1. research proposal under dr. wang
  2. NDK avi播放器
  3. JAVA实现一个图片上传预览功能
  4. i219 2012驱动_2012年I / O之后
  5. Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析【转】
  6. [Node.js] 模块化 -- url、querystring模块
  7. 10_Shell语言———I/O重定向详解
  8. 鲲鹏性能优化十板斧(三)——网络子系统性能调优
  9. python自动备份手机_python实现自动备份windows应用数据
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的企业费用信息管理系统
  11. C#编程(七十六)----------使用指针实现基于栈的高性能数组
  12. sql 从一张表修改另一张表
  13. 傅里叶变换的终极解释下
  14. 三菱plc编程软件gx+developer安装教程
  15. 概率论与数理统计 积分表(高等数学附录)
  16. 将EXCEL自定义时间格式转换为时间格式
  17. 白盒测试——静态白盒测试
  18. 那些年我们一起追寻过的考研(华科计算机)
  19. 超文本传输协议HTTP
  20. echart4.0 map支持dataset实例

热门文章

  1. Windows移动开发(五)——初始XAML
  2. Selenium Grid跨浏览器-兼容性测试
  3. Lesson 002 —— 网络七层模型
  4. solr学习篇(三) solr7.4 连接MySQL数据库
  5. Python 执行主程序
  6. HDU 5410 CRB and His Birthday
  7. 20190820 On Java8 第十章 接口
  8. Centos6.x升级内核方法支持Docker
  9. python基础之小数据池,is和==区别 编码问题
  10. MySQL多线程备份工具mydumper