Re38:读论文 NeurJudge: A Circumstance-aware Neural Framework for Legal Judgment Prediction
诸神缄默不语-个人CSDN博文目录
本文是2021年SIGIR论文,官方下载地址:https://dl.acm.org/doi/10.1145/3404835.3462826
官方GitHub地址:yuelinan/NeurJudge: The code of “NeurJudge: A Circumstance-aware Neural Framework for Legal Judgment Prediction”(SIGIR2021))
本文也关注LJP任务。
本文关注事实描述文本中的circumstances of crime(事实描述文本中的不同部分),提出circumstance-aware legal judgment prediction framework (i.e., NeurJudge)模型。
用中间子任务的结果来将事实描述文本划分为不同circumstances,用以预测其他子任务。(罪名→法条→刑期)
解决易混淆的法条和罪名问题:将NeurJudge扩展为NeurJudge+:用标签嵌入,将标签(法条和罪名)的语义信息融入到事实描述文本中。(这个做法明显是参考LADAN的)
circumstance情节
事实描述文本可以分为ADC(定罪情节)和SEC(量刑情节)
SEC可以分为SSC(法定量刑情节)和DSC(酌定量刑情节)
在论文中对相应内容的具体介绍可以参考本博文第一节的内容
文章目录
- 1. Circumstances和子任务顺序
- 2. NeurJudge
- 2.1 问题定义
- 2.2 模型
- 2.3 NeurJudge
- 2.4 NeurJudge+
- 3. 实验
- 3.1 数据集
- 3.2 主实验结果
- 3.3 Ablation Study
- 3.4 案例分析
- 4. 代码复现
1. Circumstances和子任务顺序
ADC→verdicts(罪名和法条)
SEC(SSC+DSC)→刑期
2. NeurJudge
2.1 问题定义
2.2 模型
2.3 NeurJudge
用罪名分割事实描述文本为ADC和SEC
用ADC预测法条
用法条从SEC中识别出SSC和DSC,用以预测刑期
用全部文本预测罪名→预测ADC和SEC→用ADC预测法条→预测SSC和DSC→预测刑期
- Document Encoder:对事实/法条/罪名描述文本进行表征。GRU或BERT,代码里只给出了GRU版本的实现
- GRU:用预训练word2vec来作为词表征初始化
- BERT
- GRU:用预训练word2vec来作为词表征初始化
- Fact Separation:先选ADC,然后再选出由SSC和DSC构成的SEC
- Circumstances of Crime aware Fact Separation (CCFS)
- ADC与罪名定义相似,SSC与法条相似
- 用罪名分隔ADC和SEC
- 在事实描述文本得到的词表征Hd\mathbf{H}^dHd上per-dimension mean-pooling
- 用MLP在此表征上预测罪名
- 用事实描述文本得到的词表征和罪名表征分隔事实描述文本,此处参考资料1我还没看,方法叫是Vector Rejection
用Document Encoder得到Hc^\mathbf{H}^{\hat{c}}Hc^和Hd\mathbf{H}^dHd
计算二者词之间的relevance(用点积计算得到相似度)
对整个事实描述文本(softmax
是一种软化版的max
,用来从罪名表征中抽取与事实描述文本最相关的词(软化版)):
(上述两步在代码里都是作为attention操作)
用事实描述在这个attention上做vector rejection,计算相似和不相似的部分(ADC/SEC)(ADC就是直接投影过去。SEC就是减掉投影,根据三角形法则,这个就是跟对面垂直的部分了)
对KaTeX parse error: Unexpected end of input in a macro argument, expected '}' at position 5: \hat\̲m̲a̲t̲h̲b̲f̲{H}^{d^+}平均值池化,得到最终的ADC向量f+\mathbf{f}^+f+
很直觉地容易想到,既然要算的是事实和标签之间的相关/不相关关系,为什么不直接用事实表征对标签表征做vector rejection呢,感觉是为了把标签表征投影到事实表征的空间,所以加了一环attention,抽取事实表征中与标签表征相关性更强的内容,作为投影环节?虽说我认为真实原因其实是之前的论文1就是这么干的所以就继续这么干。GDO中有类似的vector projection操作,但是显然GDO那边邻居标签本来就属于同一表征空间,所以不需要投影环节
- 在事实描述文本得到的词表征Hd\mathbf{H}^dHd上per-dimension mean-pooling
- 用ADC经MLP预测法条
- 类似罪名,得到Ha^\mathbf{H}^{\hat{a}}Ha^,用以将SEC向量KaTeX parse error: Unexpected end of input in a macro argument, expected '}' at position 5: \hat\̲m̲a̲t̲h̲b̲f̲{H}^{d^-}分割为SSC向量和DSC向量,分别做平均值池化得到SSC和DSC
- 用SSC和DSC(concat起来)预测刑期:
- 加权交叉熵损失函数:
Honestly其实就是把3个损失函数1:1:1加起来
2.4 NeurJudge+
增加了罪名和法条的标签相似图,用以实现GDO操作(类似LADAN2,但是LADAN的相似component是用权重矩阵训练出来的,NeurJudge的相似component是vector projection)
Graph Construct Layer
认为HMN的树形结构对不同父标签下的子标签的关系有所忽略,因此将树扩建为图(charge/article similarly graph3)
通过Document Encoder→平均值池化得到标签特征向量
Graph-based Label Embedding (GLE)
- Graph Decomposition Operation (GDO)
- Label-to-Fact (L2F) attention(大概意思就是用GRU得到的罪名表征和special charge features代码里没写这是个啥,在代码里写的就是经GDO之后的罪名表征分别对事实描述做个attention,得到2个attention)
concat 2个attention后得到charge label aware fact representation,和对应的法条表征
- 将这两个向量结合到NeurJudge上,做预测:
3. 实验
3.1 数据集
数据分析
3.2 主实验结果
3.3 Ablation Study
3.4 案例分析
4. 代码复现
我直接在我使用LADAN预处理后的数据上进行了复现。数据预处理的过程以后在LADAN那边笔记上补充。
原项目中使用的原始数据文件格式应该是类似原始数据的。就他文章里提及的处理方式好像在代码里都没有体现出来,不知道怎么处理的。
代码里没有给作者的word2vec模型和CAIL-big数据集上的图,可以跟作者要。
我的主要修改内容是代码顺序、数据加载和word2vec模型加载代码(这个作者代码里没给,如果实在不会写的话可以跟作者要),整体还是跟原代码相似的
代码里是直接给出了NeurJudge+的代码,如果要剖离图部分做NeurJudge也可以,但是这个我就不管了。
model.py:包含NeurJudge模型(别的代码文件巴拉巴拉的感觉挺容易看懂的,可以看我别的博客来增长知识。以后我有时间再补到这里吧)
- 词向量嵌入
- 用
self.encoder_charge
(GRU)对法条和罪名文本进行表征(法条文本就是原文,罪名文本则是罪名“定义”4),取输出在所有词上的平均值池化作为每个样本的最终表征 self.graph_decomposition_operation()
方法分别对罪名和法条进行2层GDO操作,得到新的表征
就是遍历2次,每次遍历所有标签,对每个标签的所有邻居进行遍历,O(N3)O(N^3)O(N3)以上了应该有,但是图挺小的所以还能行。计算标签与每个邻居之间的g
向量之间先元素相乘(*
),然后再求和(torch.sum(x,-1)
),就是点积。
被除数加上了1e-10
,应该是为了防止出现全0的情况(向量元素是负数咋办小编也不知道)。self.encoder()
(GRU)对案例文本进行表征- L2F attention:罪名版
把法条表征(通过GRU和通过GDO的2种表征分别做一个)广播到每个案例batch一个new_charge_repeat = new_charge.unsqueeze(0).repeat(d_hidden.size(0),1,1)
,然后用Code_Wise_Attention
对案例文本表征实现attention机制,分别得到两个表征
(我还有个问题就是WαW_\alphaWα怎么不见了)
把两个concat起来,用MLP预测罪名logits - 得到预测罪名,用
fact_separation()
:Vector Rejection
对预测的罪名进行词向量嵌入,用以和案例文本表征实现Mask_Attention
(一样,线性转换部分神秘消失……)
在代码里相比公式主要就是考虑了mask的问题,叠了2层mask(一个在softmax之前,一个在×V之前)
然后计算g
,和GDO那部分的写法差不多
返回ADC和SEC表征 - L2F attention法条版
- 将案例文本表征、L2F attention法条得到的表征、ADC表征concat起来,过GRU,池化,过MLP,预测法条
- 然后用法条对SEC表征也来一个
fact_separation()
,略,得到SSC和DSC - 将案例文本表征、SSC和DSC concat起来,过GRU,池化,过MLP,预测刑期
Sentence Similarity Learning by Lexical Decomposition and Composition ↩︎ ↩︎
可参考我之前撰写的博文:Re27:读论文 LADAN Distinguish Confusing Law Articles for Legal Judgment Prediction ↩︎
LADAN代码里给出的相似度阈值是TFIDF表征的余弦相似度大于0.3,NeurJudge里没给,作者说是word2vec表征的余弦相似度0.5。我自己用的是word2vec表征的平均值池化的余弦相似度,法条的阈值是0.95,罪名的阈值是0.85 ↩︎
NeurJudge原项目中给出了罪名的定义、主体、主观方面、客体、客观方面的信息https://github.com/yuelinan/NeurJudge/blob/main/neurjudge/data/charge_details.json
代码中只给了文本表征时使用定义的代码,所以我自己写做图的代码时也只用了定义。 ↩︎
Re38:读论文 NeurJudge: A Circumstance-aware Neural Framework for Legal Judgment Prediction相关推荐
- Re 39:读论文 CTM Augmenting Legal Judgment Prediction with Contrastive Case Relations
诸神缄默不语-个人CSDN博文目录 论文名称:Augmenting Legal Judgment Prediction with Contrastive Case Relations 论文下载地址:h ...
- Re6:读论文 LeSICiN: A Heterogeneous Graph-based Approach for Automatic Legal Statute Identification fro
诸神缄默不语-个人CSDN博文目录 论文名称:LeSICiN: A Heterogeneous Graph-based Approach for Automatic Legal Statute Ide ...
- 读论文(二):HMB-SSD: Framework for Efficient Exploiting of the Host Memory Buffer in the NVMe SSD
读论文(二):HMB-SSD: Framework for Efficient Exploiting of the Host Memory Buffer in the NVMe SSD 问题背景 提出 ...
- Re23:读论文 How Does NLP Benefit Legal System: A Summary of Legal Artificial Intelligence
诸神缄默不语-个人CSDN博文目录 论文名称:How Does NLP Benefit Legal System: A Summary of Legal Artificial Intelligence ...
- Re7:读论文 FLA/MLAC/FactLaw Learning to Predict Charges for Criminal Cases with Legal Basis
诸神缄默不语-个人CSDN博文目录 论文名称:Learning to Predict Charges for Criminal Cases with Legal Basis 论文ArXiv网址:htt ...
- Re13:读论文 Gender and Racial Stereotype Detection in Legal Opinion Word Embeddings
诸神缄默不语-个人CSDN博文目录 论文名称:Gender and Racial Stereotype Detection in Legal Opinion Word Embeddings 论文ArX ...
- Re28:读论文 CECP Charge Prediction by Constitutive Elements Matching of Crimes
诸神缄默不语-个人CSDN博文目录 论文名称:Charge Prediction by Constitutive Elements Matching of Crimes IJCAI官方下载地址:htt ...
- Re15:读论文 LEVEN: A Large-Scale Chinese Legal Event Detection Dataset
诸神缄默不语-个人CSDN博文目录 论文名称:LEVEN: A Large-Scale Chinese Legal Event Detection Dataset 本文是2022年ACL论文,作者来自 ...
- 读论文《Recurrent neural network based language model 》
读论文<Recurrent neural network based language model > 标签(空格分隔): 论文 introduce 本文将循环神经网络RNN引入了神经网络 ...
最新文章
- Tomcat发布项目方法!
- php获得帮助类数据_PHP实现的一个时间帮助类
- 使用FP-growth算法发现频繁项集
- mysql特殊编码_Mysql 字符编码
- win10下git的配置教程
- 【译】How Microsoft Lost the API War
- NoSQL分布式数据库的独家见解- Adam Fowler
- 常见算法及问题场景——图
- mysql 1066解决方法_MySQL查询语法帮助:错误#1066-表格/别名不唯...
- mysql myisam写入性能_(转)innodb 与 myisam 读写性能分析
- php里 \r\n换行问题
- C++ 的万能头文件,你知道多少?
- Web前端开发实验(导航栏、购物页面)
- wifi配网过程的详细介绍
- Ping命令返回错误信息说明
- 谷歌搜索、谷歌学术、Github的镜像网站
- 剑指 Offer(C++版本)系列:剑指 Offer 10- I 斐波那契数列
- H.264的两个概念:DC系数和AC系数
- Watts S. Humphrey:软件质量之父
- Linux添加PCF8563 RTC支持