资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

法律领域多标签文本分类任务

任务简介

依据法律文书描述,判断属于那种罪名或者判断其适用于哪几个法条。本质上两个任务都是文本多标签分类任务。 该任务采用预训练模型ERNIE-Law进行训练。

快速开始

任务位于:./wenxin_appzoo/tasks/ernie_law_multi_label_classification

代码结构

├── data
│   ├── count_prediction_data   ##罪名预测数据集目录
│   │   ├── dev_data_count_prediction
│   │   │   └── dev.txt
│   │   ├── predict_data_count_prediction
│   │   │   └── predict.txt
│   │   ├── test_data_count_prediction
│   │   │   └── test.txt
│   │   └── train_data_count_prediction
│   │       └── train.txt
│   └── legislative_recommendation_data   ##法条推荐数据集目录
│       ├── dev_data_legislative_recommendation
│       │   └── dev.txt
│       ├── predict_data_legislative_recommendation
│       │   └── predict.txt
│       ├── test_data_legislative_recommendation
│       │   └── test.txt
│       └── train_data_legislative_recommendation
│           └── train.txt
├── dict
│   ├── count_prediction_label_map.txt
│   └── legislative_recommendation.txt
├── examples
│   ├── cls_ernie_multi_label_ch_infer.json
│   └── cls_ernie_multi_label_ch.json
├── inference
│   ├── custom_inference.py
│   └── __init__.py
├── __init__.py
├── model
│   ├── __init__.py
│   └── multi_label_classification.py
├── reader
│   ├── categorical_field_reader.py
│   └── multi_label_field_reader.py
├── run_infer.py
├── run_trainer.py
└── trainer
    ├── custom_dynamic_trainer.py
    ├── custom_trainer.py
    └── __init__.py

数据准备

  • 这里我们提供一份已标注的示例数据集。该任务预置网络基于ERNIE-Law模型进行训练,其中文本特征不需要分词且无需准备词表。
  • 训练集、测试集、验证集和预测集分别存放在./data目录下,label_map词表存放在./dict目录下。
  • 注:数据集与词表均为utf-8格式。

训练集

  • 罪名预测的训练集样例如下所示。数据分为2列,列与列之间用\t进行分隔。第一列为文本,最后一列为标签。
安阳县人民检察院指控:2014年4月27日上午11时许,宋某甲在安阳县吕村镇翟奇务村被告人梁某甲家吃饭时,因琐事发生争执,梁某甲用板凳将宋某甲头部砸致轻伤。案发后民事部分已调解。上述事实,公诉机关向本院提供了被告人供述、被害人陈述、证人证言、鉴定意见等证据,认为被告人的行为触犯了《中华人民共和国刑法》××××之规定,构成××罪,提请本院依法判处。  0
富平县人民检察院指控,2016年6月11日18时许,在富平县某镇某村家中,被告人刘某因继任丈夫封某某给封某某之女封某入赘女婿用房一事,刘某、封某某两人发生冲突,后封某某离开并让封某锁上家中大门。在封某锁大门时,刘某用随身携带的折叠刀将封某腹部捅伤,致肝脏破裂。经渭南市公安司法鉴定中心鉴定,被害人封某所受损伤属重伤二级。为证实所指控的犯罪事实成立,公诉人当庭宣读,出示了受案登记表、诊断证明、出院病历、行政处罚决定书、证人证言、被害人陈述、被告人供述、鉴定意见、现场照片及勘验笔录等。据此认定被告人刘某之行为已构成××罪,要求依法判处。  0
  • 法条推荐训练集样例如下所示。数据分为2列,列与列之间用\t进行分隔。第一列为文本,最后一列为标签,可以同时有多个标签。
贵州省平坝县人民检察院指控:2014年4月9日下午,被告人王某丁与其堂哥王4某(另案处理)假释驾驶大货车(贵A×××××)准备到乐某镇大屯村拉砂,行至大屯村时与被害人王某乙相遇,王4某与王某乙因琐事发生矛盾,准备打架时被路人劝开,双方离开现场。之后,王4某打电话邀约王某乙打架,接着又打电话召集郑3某、艾1某雷、邱某(均另案处理)、。王3某王6某、王某丁与艾1某雷、邱某、郑3某等人聚集后,行至乐某商务宾馆门前大街上时,与被害人高某乙、王某乙、王某甲、李某等人相遇,王4某、王某丁等人就从郑3某驾驶的面包车上拿出杀猪刀、砍刀等凶器准备,当王4某于与高某乙正在交谈时,艾1某雷大喊一声“杀”,王4某、郑3某等人手持凶器将高某乙、王某乙、王某甲、李某杀伤,王某丁等人手持凶器打砸车身。在将对方杀伤后,王4某、王某丁等人驾车逃离现场。被害人高某乙受伤经医院抢救无效,于2014年4月9日17时许死亡。经鉴定,高某乙系创伤性、失血性休克死亡;王某甲所受之伤为轻伤一级;王某乙所受之伤为轻伤二级;李某所受之伤为轻微伤。公诉机关认为,被告人王某丁伙同王4某等人××他人身体,致一人死亡,二人受轻伤,一人受轻微伤,其行为触犯了《中华人民共和国刑法》××××,犯罪事实清楚,证据确实、充分,应当以××罪追究其刑事责任。王某丁在共同犯罪中其次起次要作用,是从犯,依法应当从轻、减轻或者免除处罚;其到案后如实公式供述自己的罪行,是坦白,依法可从轻处罚。根据《中华人民共和国刑事诉讼法》××的规定,特对被告人王某丁提起公诉。请依法判处。    1 0
经审理查明:2014年5月6日14时许,被告人叶某某驾车途径赤壁市赵李桥镇胜利街涵洞时,被在此处饭店外的朱某某等人挡住去路,叶某某与朱某某为此发生争吵。随后,叶某某到赵李桥镇街道胡某某茶馆准备打牌,将自己的小车停在茶馆门前。朱某某的丈夫叶某甲带着外甥肖某回家时,发现叶某某的车子停在胡某某门外,肖某便用手拍打汽车,扬言要打叶某某,后被胡某某劝离。叶某某随后邀约余某某、黎某某、黄某某、陈某某(均另案处理)等人来到叶某甲楼下,与叶某甲、肖某及叶某甲另一个外甥刘某某发生厮打,被告人一伙手持木棍、砍刀、砖头将叶某甲、肖某、刘某某打伤。经鉴定:叶某甲为轻伤二级,肖某、刘某某均为轻微伤,叶某某亦受轻微伤。2015年1月26日18时许,被告人叶某某在赤壁市赵李桥镇紫阳酒店被公安民警抓获归案。同时查明,当事人双方已就本案民事赔偿问题自愿达成如下协议:即由被告人叶某某一次性赔偿被害人叶某甲、肖某、刘某某各项经济损失4万元,被害人表示不追究叶某某等人的法律责任。上述事实,被告人叶某某在开庭过程中亦无异议,且有被害人叶某甲、肖某、刘某某的陈述、证人朱某某、胡某某、甘某某等人的证言、辨认笔录、鉴定意见、调解协议、谅解书、户籍证明、到案经过等证据证实,足以认定。      0  

label_map

  • 罪名总共为4种,通过count_prediction_label_map.txt词表提供罪名与id的映射。count_prediction_label_map.txt词表分为两列,第一列为罪名,第二列为id(从0开始),列与列之间用\t进行分隔。词表示例如下所示:
意伤害          0
盗窃            1
危险驾驶        2
交通肇事        3
  • 法条设定为4种,通过legislative_recommendation.txt词表提供法条与id的映射。label_map词表分为两列,第一列为法条,第二列为id(从0开始),列与列之间用\t进行分隔。词表示例如下所示:
234     0
292     1
133     2
128     3

测试集/验证集

  • 测试集和验证集与训练集的数据格式保持一致。最后一列为标签。

预测集

  • 预测集无需进行标签预占位,就是一列文本。

训练我的第一个模型

开始训练

  • 使用预置网络进行训练的方式为使用./run_trainer.py入口脚本,通过--param_path参数来传入./examples/目录下的json配置文件。
  • 训练分几个步骤
  1. 请使用以下命令在../../models_hub/中通过对应脚本download_ernie_law_penal_1.0_ch.sh下载模型参数文件,以及其对应配置文件ernie_law_penal_1.0_ch_config.json和词表vocab_ernie_law_penal_1.0_ch.txt.
# download_ernie_law_penal_1.0_ch.sh 模型下载
# 进入models_hub目录
cd ../../models_hub/  
sh download_ernie_law_penal_1.0_ch.sh
  1. 基于示例的数据集,可以运行以下命令在训练集(train.txt)上进行模型训练,并在测试集(test.txt)上进行验证;
# 基于json实现预置网络训练。其调用了配置文件./examples/cls_ernie_multi_label_ch.json
python run_trainer.py --param_path ./examples/cls_ernie_multi_label_ch.json
  1. 训练运行的日志会自动保存在./log/test.log文件中;
  2. 训练中以及结束后产生的模型文件会默认保存在./output/目录下,其中save_inference_model/文件夹会保存用于预测的模型文件,save_checkpoint/文件夹会保存用于热启动的模型文件
  3. 可通过修改cls_ernie_multi_label_ch.json、cls_ernie_multi_label_ch_infer.json两个json文件数据集路径实现上述两个数据集任务的训练。

预测我的第一个模型

开始预测

  • 使用预置网络进行预测的方式为使用./run_infer.py入口脚本,通过--param_path参数来传入./examples/目录下的json配置文件。
  • 预测分为以下几个步骤:
  1. 基于示例的数据集,可以运行以下命令在预测集(predict.txt)上进行预测:
# 基于json实现预测。其调用了配置文件./examples/cls_ernie_multi_label_ch_infer.json
python run_infer.py --param_path ./examples/cls_ernie_multi_label_ch_infer.json
  1. 预测运行的日志会自动保存在./output/predict_result.txt文件中。
上一篇
进阶任务:使用ERNIE-tiny进行文本分类
下一篇
进阶任务-使用ERNIE-Word进行文本分类