类别不平衡问题,也叫“长尾问题”,是机器学习面临的常见问题之一,尤其是来源于真实场景下的数据集,几乎都是类别不平衡的。
利用语义相似度数据集,模拟真实场景下的数据,构造相似数据:不相似数据=1:4,解决类别不平衡问题。采用AUC(Area Under Curve)评估指标。
Python==3.6
tensorflow==1.14.0
keras==2.3.1
bert4keras==0.11.4
笔者使用了开源的bert4keras,一个keras版的transformer模型库。bert4keras的更多介绍参见这里。
├── bert4keras
├── datasets 存放数据
├── pretrained_model 存放预训练模型
├── sentence_similarity_train.py 训练代码
├── sentence_similarity_predict.py 评估和测试代码
采用哈工大LCQMC数据集,对原始数据进行了筛选,处理好的数据存放在datasets/文件夹下。
训练集和验证集中的数据统计情况:
数据集 | 相似 | 不相似 |
---|---|---|
train | 200 | 800 |
dev | 50 | 200 |
1.下载预训练语言模型
可采用chinese_roberta_wwm_ext等模型
2.构建数据集(数据集已处理好)
LCQMC_train.json和LCQMC_dev.json
3.训练模型
python sentence_similarity_train.py
4.评估和测试
python sentence_similarity_predict.py
数据集 | acc | auc |
---|---|---|
dev | 0.8600 | 0.87340 |