【自然语言处理】:实验5,司法阅读理解

2024-02-23 11:20

本文主要是介绍【自然语言处理】:实验5,司法阅读理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

清华大学驭风计划课程链接 

学堂在线 - 精品在线课程学习平台 (xuetangx.com)

代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主

有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~

任务说明

裁判文书中包含了丰富的案件信息,比如时间、地点、人物关系等等,通过机器智能化地阅读理解裁判文书,可以更快速、便捷地辅助法官、律师以及普通大众获取所需信息。 本次任务覆盖多种法律文书类型,包括民事、刑事、行政,问题类型为多步推理,即对于给定问题,只通过单句文本很难得出正确回答,模型需要结合多句话通过推理得出答案。

数据说明

本任务数据集包括约5100个问答对,其中民事、刑事、行政各约1700个问答对,均为需要多步推理的问题类型。为了进行评测,按照9:1的划分,数据集分为了训练集和测试集。注意 该数据仅用于本课程的学习,请勿进行传播。

发放的文件为train.jsondev.json,为字典列表,字典包含字段为:

  • _id:案例的唯一标识符。

  • context:案例内容,抽取自裁判文书的事实描述部分。数据格式与HotpotQA数据格式一致,不过只包含一个篇章,篇章包括标题(第一句话)和切割后的句子列表。

  • question:针对案例提出的问题,每个案例只标注一个问题。

  • answer:问题的回答,包括片段、YES/NO、据答几种类型,对于拒答类,答案应该是"unknown"。

  • supporting_facts:回答问题的依据,是个列表,每个元素包括标题(第一句话)和句子编号(从0开始)。

同学们需根据案例描述和问题,给出答案及答案依据,最终会综合两部分的效果并作为评判依据,评价方法与HotpotQA一致。

我们提供基础的模型代码在baseline目录下

评分要求

分数由两部分组成。首先,读懂已有代码并添加适量注释。使用已有代码在训练数据上进行训练,并且完成开发集评测,这部分占60%,评分依据为模型的开发集性能和报告,报告主要包括对于模型基本原理的介绍,需要同学阅读代码进行学习。 第二部分,进行进一步的探索和尝试,我们将在下一小节介绍可能的尝试,并在报告中汇报尝试的方法以及结果,这部分占40%。同学需要提交代码和报告,在报告中对于两部分的实验都进行介绍。

探索和尝试

  • 使用2019年的阅读理解数据集(CJRC)作为辅助数据集,帮助模型提高阅读理解能力

  • 使用别的预训练语言模型完成该实验,例如THUNLP提供的司法BERT

  • 对于新的模型架构进行探索,例如加入图神经网络(GNN)来加强模型的推理能力

参考资料

  • CAIL2020——阅读理解

实验结果 

基本模型训练+别的预训练模型训练

这 一 部 分 我 使 用 了 5 个 模 型 进 行 训 练 , 分 别 是 chinese-bert-wwm-ext, chinese_roberta_wwm_ext_pytorch, ms_BERT, xs_BERT, baidubaike_BERT 。训练完后需要
进行结果预测,通过查找资料找到了 hotpot_evaluate_v1.py ,运行这个文件就可以得出验证集的结果,下面是我汇总的结果

 除了 chinese_roberta_wwm_ext_pytorch 训练时候学习率为 4e-5,其他四个模型训练都用的 1e-5(因为 roberta 模型用 1e-5 学习率训练时候结果太差,通过查询参考资料看到这个模型最 佳学习率是 4e-5,所以试了发现效果不错)其他超参数都相同

通过汇总结果图表看出在 12 项评价指标中 chinese-bert-wwm-ext 模型的 8 项指标为最好,所 以 后 面 加 辅 助 数 据 集 进 行 训 练 的 时 候 也 是 选 择 这 个 模 型 , 其 次 比 较 好 的 是 chinese_bert_wwm_ext, 四项指标优于 chinese_roberta_wwm_ext 而其他三个模型训练出的
结果普遍不好,与前两个模型得出的结果有相当大的差距,个人认为造成这样的原因是那三个模型都是对于单个领域的专用模型,因为数据集是对于民事、刑事、行政这三种法律文书类型,所以即使对于单个领域预测好,但是平均三个领域下来结果就会被平均降低。

添加2019CJRC数据集作为辅助数据进行训练

这一步的难点主要是数据转换成 train.json 一样的格式 
因为 2019CJRC 数据集中是一个案例对应多个问题,而 train.json 文件中是一个案例对应一个问题,所以转换的时候多个问题的 id 就作为单个案例来处理 ( 比如一个案例对应三个问题,转化后就变成三个案例,所以数据量增加特别多)

 

通过上面代码再合并 train.json 文件和前面转换后的文件 CJRJ_data 文件,案例总数来到 35411, 约为原数据集的 8 倍,数据预处理的时候也很耗时,大约耗时 10 分钟。

最终使用 chinese-bert-wwm-ext 模型来进行训练,训练汇总结果如下 

从结果看出对比在不加辅助数据集的情况下在 12 项结果指标中 10 项指标都有比较明显的提
升,可以看出同模型同参数的情况下,训练数据的增大使得验证集的结果指标明显提升,这
部改进提升很成功

这篇关于【自然语言处理】:实验5,司法阅读理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态