测试模型
- bert + bilstm + crf
- bert + crf
- bilstm + crf
- 2*bilstm + crf
模型优化思路说明
-
数据集角度:改变原数据集分割比例由4:3,变为8:2,尝试做数据增强;
-
数据增强思路:构建生成模型,将所有数据大概4532条数据全部送入网络中(数据集太少),通过生成模型构造20000条共30万字的样本,逐条分析,人工审核前1000条样本,包含错误标注样本456条,也就是说生成模型总体质量一般,与部门负责人对接,内部综合评估后放弃将20000条数据整体加入训练集的方案;但是内部依然对部分生成的样本数据质量作出了较高的评价,作出可筛选使用的决定;
-
最终个人手动从最终模型生成的数据中抽取了5500条效果还不错的样本,样本总量达到10532;
-
测试模型:尝试了bert+bilstm+crf;bert+crf;lstm+crf;综合测试效果见上图;
-
badcase处理;
-
参数调优:lr,学习率退火等;
测试效果展示
测试log截图
-
bert+lstm+crf
-
bert+crf
-
lstm+crf
-
测试结果分析:
-
在此项目中bilstm,之所以测试结果这么突出,个人分析原因可能是以下两个方面:
- 本次参与测试的训练数据(细分专业领域的数据);
- 双向lstm的一些特性,双向的网络可以同时捕捉正向信息和反向信息, 使得对文本信息的利用更全面, 效果也更好,验证效果确实不错;当然bert也是基于多层编码器结构的双向transformers模型, 个人猜测数据的面偏大;
- 多说一句:bert+crf,我个人分析,其实整体跑的已经很不错了,当然这块可能还会有很多bert的痴迷粉又该吐槽我了,你丫会不会用bert?但我只能说,bert虽然很好用,我个人也是非常钟爱,但是bert不是神,在一些细分的专业领域bert的表现就是没有一些传统模型好,数据就是在这摆着,确实是能说明一些问题。