【自然语言处理】:实验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 Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka