使用UER进行开庭公告命名实体识别-续3
模型训练和测试
未使用CRF层
将上次的问题全部解决之后,并且增加了一些特定法院名称和案由的训练数据,并且兼容了劳动仲裁开庭公告的抽取,模型的训练日志如下:1
2
3
4
5
6
7
8
9
10[2022-10-15 09:09:03,601 INFO] Epoch id: 5, Training steps: 1900, Avg loss: 0.000
[2022-10-15 09:09:25,614 INFO] Epoch id: 5, Training steps: 2000, Avg loss: 0.001
[2022-10-15 09:09:47,766 INFO] Epoch id: 5, Training steps: 2100, Avg loss: 0.000
[2022-10-15 09:10:09,830 INFO] Epoch id: 5, Training steps: 2200, Avg loss: 0.001
[2022-10-15 09:10:31,829 INFO] Epoch id: 5, Training steps: 2300, Avg loss: 0.001
[2022-10-15 09:10:53,881 INFO] Epoch id: 5, Training steps: 2400, Avg loss: 0.001
[2022-10-15 09:11:15,982 INFO] Epoch id: 5, Training steps: 2500, Avg loss: 0.001
[2022-10-15 09:11:38,139 INFO] Epoch id: 5, Training steps: 2600, Avg loss: 0.000
[2022-10-15 09:13:33,811 INFO] Report precision, recall, and f1:
[2022-10-15 09:13:33,812 INFO] 0.994, 0.994, 0.994
测试的结果如下:1
2
3
4
5
6correct/total: 2567/2600
accuracy: 0.9873076923076923
correct/total: 2570/2600
precision: 0.9884615384615385
correct/total: 2567/2600
precision: 0.9873076923076923
使用CRF层
安装pytorch-crf,pip install pytorch-crf
在UER-py中只需要将crf_target参数设置为True即可,但是关于CRF层的具体原理,我会深入研究并在其他文章中进行总结。
训练日志1
2
3
4
5
6
7
8
9
10[2022-10-26 14:42:15,640 INFO] Epoch id: 5, Training steps: 1900, Avg loss: 0.093
[2022-10-26 14:43:15,770 INFO] Epoch id: 5, Training steps: 2000, Avg loss: 0.062
[2022-10-26 14:44:17,856 INFO] Epoch id: 5, Training steps: 2100, Avg loss: 0.049
[2022-10-26 14:45:17,680 INFO] Epoch id: 5, Training steps: 2200, Avg loss: 0.049
[2022-10-26 14:46:18,964 INFO] Epoch id: 5, Training steps: 2300, Avg loss: 0.100
[2022-10-26 14:47:19,372 INFO] Epoch id: 5, Training steps: 2400, Avg loss: 0.175
[2022-10-26 14:48:20,806 INFO] Epoch id: 5, Training steps: 2500, Avg loss: 0.072
[2022-10-26 14:49:21,860 INFO] Epoch id: 5, Training steps: 2600, Avg loss: 0.090
[2022-10-26 14:51:36,000 INFO] Report precision, recall, and f1:
[2022-10-26 14:51:36,001 INFO] 0.998, 0.998, 0.998
测试结果如下:1
2
3
4
5
6correct/total: 2570/2600
accuracy: 0.9884615384615385
correct/total: 2571/2600
precision: 0.9888461538461538
correct/total: 2570/2600
precision: 0.9884615384615385
使用CRF层和不使用CRF层,整体效果相差不大,提升可以忽略不记,经过实际实验对比,不使用CRF层,在2600条测试集上,出现了5条标签异常的数据,而使用CRF层后,也依然出现了3条标签异常的数据,所以CRF层并不能完全解决这一问题,只是有所缓解,但是在此任务中效果并不明显。
再迭代一次
在大量的真实数据上测试后,发现模型还可以再优化的一些点(实际并不很要紧,不优化对整个提取效果影响甚微)
- 增加一类格式:日期:2022年08月08日 时间:08时30分;
- 增加句子开头的数字索引、简易程序、旁听席位数等一些冗余项;
- 兼容某某“的”案由一案;
- 增加一些少数民族人名。
测试指标如下:1
2
3
4
5
6correct/total: 2563/2600
accuracy: 0.9857692307692307
correct/total: 2572/2600
precision: 0.9892307692307692
correct/total: 2564/2600
precision: 0.9861538461538462
成果展示
开庭公告的实体抽取项目历经前面多次迭代,终于是达到了一个理想的版本,整个项目在不动用任何人工标注的资源情况下,通过已有的实体信息和个人对此业务的深入理解,自行生成数据训练,最终几乎完美解决所有常见形式数据的抽取。
为了更清晰的看到模型的抽取效果,我在成果展示部分,将所有的预测标签全部转为了中文,并且将预测的实体在原文本中的索引去除。
1 | # http://hrss.jl.gov.cn/zcgg/202209/t20220909_8571917.html |