近期参加NLP领域CCL2024评测,现将赛题背景和实现方法分享,推理文本纠错领域的发展。

  1、背景信息

  随着教育的发展和网络的普及,作文评价的规模越来越大,人工评改作文的成本和效率成为一大难题。为了解决这一问题,许多研究者和机构开始探索利用计算机技术来实现作文的自动评改,通过分析作文的语言、内容、结构等方面的特点及存在的问题,给出客观、准确、及时的评分和反馈。其中,表述是否流畅是教师评改作文的一项重要内容。

  作文流畅性反映一篇作文的通顺程度和语言使用的规范性,以及作者的写作水平和表达能力,对提高作文评改质量、提升作者写作水平具有重要意义。目前,针对作文流畅性评价的研究工作通常从句子长度、词汇复杂度、句子结构等语言学特征角度进行评分或评级;或是作为语法纠错任务,对句子中出现的拼写错误或语法错误进行识别和纠正;或是视为病句判断任务,判断一条句子是否是病句;这些方法通常将作文流畅性评估作为一个单独的自然语言处理任务,缺乏多层次、多角度的系统性整合;在对语法错误类型的定义上,以往的工作研究了赘余、缺失、误用、乱序四个粗粒度类别,缺乏更细粒度的错误类型定义;同时,他们的方法不具备良好的可解释性,没有定义作文流畅性评价的细粒度分项,无法对中小学生错误修改给出针对性的指导和修改意见。此外,

  本次评测数据集来源于以汉语为母语的中小学生考试作文,区别于使用基于规则生成或汉语学习者的中介语数据中的错误,以及其他类型母语者的口语、书面语的语法错误,中小学生作文中出现的错误类型更丰富,涉及的语法知识更复杂。因此我们的任务研究中小学生考试作文中的语法错误识别与纠正问题,系统地定义了影响作文流畅性的细粒度错误类型,并给出了修正建议,这种细粒度错误类型的定义与识别能够帮助学生更清楚地了解自己的写作问题,而修正建议能帮助学生更好地修改自己的作文,同时帮助教师更便捷地了解学生写作水平,有助于教师更好地指导学生写作。

  基于此,本次评测任务从词法、句法、语义等多角度对作文流畅性进行详细分析,并给出修改建议,包括:

    1、中小学作文病句类型识别;

    2、中小学作文病句改写;

    3、中小学作文流畅性评级;

  2、实现方法  

  任务一是有关病句类型识别,本质为分类任务,为此我们选用UTC模型进行微调,由于提供训练的数据量较少,为此我们提出语法错误替换方法(后续开源),来进行分阶段的训练,任务一训练数据如下:

  

  

  UTC基于百度最新提出的统一语义匹配框架USM(Unified Semantic Matching),将分类任务统一建模为标签与文本之间的匹配任务,对不同标签的分类任务进行统一建模。具体地说:

  UTC设计了标签与文本之间的词对连接操作(Label–>CLS-Token Linking),这使得模型能够适应不同领域和任务的标签信息,并按需求进行分类,从而实现了开放域场景下的通用文本分类。例如,对于事件检测任务,可将一系列事件标签拼接为[L]上映[L]夺冠[L]下架 ,然后与原文本一起作为整体输入到UTC中,UTC将不同标签标识符[L]与[CLS]进行匹配,可对不同标签类型的分类任务统一建模,通过这种方法可以进行不同类别数据的训练,这个思路真不错。

 

  

  

任务二是中小学作文病句改写,本质为文本生成任务,为此我们选用BART模型,并采用SynGEC融合语法结构,来进一步的提高模型的纠错能力,代码详见:https://github.com/HillZhang1999/NaSGEC,训练数据如下图所示:

  BART模型如下,BERT模型的预训练方法是通过加入噪声,随机将token替换成[MASK]、随机删去token、随机将一段连续的token(称作span)替换成一个[MASK]、将一个document的句子打乱、将一个document的句子打乱,其中随机删除跟纠错的少词很类似、句子打乱跟纠错的语序不当很类似,因此采用BART作为预训练模型是最好的,因为BART本身就具有一定的纠错能力。

  

任务三是中小学作文流畅性评级,也是分类任务,采用NEZHA模型进行微调,并采用FGM、K折等方法来增加模型的鲁棒性,训练数据如下:

Nezha模型如下,相关论文链接:https://arxiv.org/abs/1909.00204

补充:NEZHA 模型相比于BERT模型,在一些方面的改进:完全函数式的相对位置编码、词的MASK、Span预测任务、混合精度训练和LAMB优化器

CCL 2024 Task7 双任务冠军的更多相关文章

  1. 2018 AI产业界大盘点

    2018  AI产业界大盘点 大事件盘点 “ 1.24——Facebook人工智能部门负责人Yann LeCun宣布卸任 Facebook人工智能研究部门(FAIR)的负责人Yann LeCun宣布卸 ...

  2. 300万大奖:欢迎参加美团联合主办的全球AI挑战赛

    2018年8月29日,由美团.创新工场.搜狗.美图联合主办的“AI Challenger 2018全球AI挑战赛”正式启动.美团CTO罗道峰.创新工场CEO李开复.搜狗CEO王小川和美图CEO吴欣鸿共 ...

  3. bzoj2765[JLOI2010]铁人双项比赛

    题意:铁人双项比赛由长跑和骑自行车组成,参赛选手必须先完成k公里的长跑,然后完成r公里的骑车,才能到达终点.参赛选手有的擅长长跑,有的擅长骑车. 如果总赛程s=k+r一定,那么K越大,对擅长长跑的选手 ...

  4. 【BZOJ】【2765】【JLOI2010】铁人双项比赛

    计算几何/半平面交 本来我是想去写POJ 1755的,然后想起了这道跟它很像的题,但应该是弱化版,所以就先写了这个…… 我们可以发现每个人的总用时,与k是呈一次函数关系的:$time_i=\frac{ ...

  5. bzoj2765 铁人双项比赛

    Description 铁人双项比赛是吉林教育学院的一项传统体育项目.该项目比赛由长跑和骑自行车组成,参赛选手必须先完成k公里的长跑,然后完成r公里的骑车,才能到达终点.每个参赛选手所擅长的项目不同, ...

  6. ImageNet 历届冠军最新评析:哪个深度学习模型最适合你?

    原文链接: https://mp.weixin.qq.com/s/I5XgYrPCCGyfV2qTI0sJhQ 深度神经网络自出现以来,已经成为计算机视觉领域一项举足轻重的技术.其中,ImageNet ...

  7. win8.1硬盘安装ubuntu14.04双系统

    在网上找了很多方法都失败了,原因是大多数方法都是用mbr方式安装的,如grub4dos,easybcd.以至于连自己都怀疑win8能不能用硬盘安装,差点就去买个u盘来安装了,就在打算放弃的时候在ubu ...

  8. Linux 利用Google Authenticator实现ssh登录双因素认证

    1.介绍 双因素认证:双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统.双因素认证是一种采用时间同步技术的系统,采用了基于时间.事件和密钥三变量而产生的一 ...

  9. 烂泥:VMWare Workation双网卡配置IP地址

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天给一个客户做远程项目实施,客户那边的服务器是Windows OS的,我们这边的业务 ...

  10. mysql集群(双主)

    0.安装 所谓双主基本可以理解为两台服务器互为主备,其核心思路与主备配置相同. 服务器A: 内网IP: 10.44.94.219 服务器B: 内网IP: 10.44.94.97 1.配置服务器A lo ...

随机推荐

  1. 选择适合您网站的 SQL 托管:MS SQL Server、Oracle、MySQL

    SQL托管 如果您希望您的网站能够存储和检索数据,您的Web服务器应该能够访问使用SQL语言的数据库系统.以下是一些常见的SQL托管选项: MS SQL Server Microsoft的SQL Se ...

  2. Python 安装与快速入门

    Python安装 许多PC和Mac已经预装了Python. 要检查在Windows PC上是否安装了Python,请在开始菜单中搜索Python,或在命令行(cmd.exe)上运行以下命令: C:\U ...

  3. 拥抱开源更省钱「GitHub 热点速览」

    免费.低成本.自托管.开源替代品...这些词就是本周的热门开源项目的关键字.常见的 AI 提升图片分辨率的工具,大多是在线服务或者调用接口的客户端,而「Upscaler」是一款下载即用的免费 AI 图 ...

  4. DevEco Device Tool 3.0 Release带来5大能力升级,让智能设备开发更高效

    原文:https://mp.weixin.qq.com/s/QYlHUU05BDlzVxbfZbiKOg,点击链接查看更多技术内容. DevEco Device Tool是面向智能设备开发者提供的一站 ...

  5. IntelliJ IDEA Community 无法启动 Spring Boot 项目的解决方案

    菜单中依次选择 Run >Edit Configuration 在弹出窗口中,点击左上角的 +,选择 Maven 在 Name 中自定义一个名称,一般与项目名称相同 在 Run 下方的文本框中输 ...

  6. spark 异常值过滤 IQR

    def getIQR(df:DataFrame,colName:String):Array[Double]={ val tmpDf = df.withColumn(colName, col(colNa ...

  7. python之six模块的用法six.py2 six.py3

    import six,sys print(six.PY2) #python2结果为True print(six.PY3) #python3结果为True

  8. 力扣15(Java)-三数之和(中等)

    题目: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j.i != k 且 j != k ,同时还满足 nums[i] + ...

  9. 力扣619(MySQL)-只出现一次的最大数字(简单)

    题目: MyNumbers 表: 单一数字 是在 MyNumbers 表中只出现一次的数字. 请你编写一个 SQL 查询来报告最大的 单一数字 .如果不存在 单一数字 ,查询需报告 null . 查询 ...

  10. 力扣570(MySQL)-至少有5名直接下属的经理(简单)

    题目: Employee 表包含所有员工和他们的经理.每个员工都有一个 Id,并且还有一列是经理的 Id. 给定 Employee 表,请编写一个SQL查询来查找至少有5名直接下属的经理.对于上表,您 ...