看群里一直有人求baseline,开赛了一阵了也没有见人分享,这里就整理了一个简单的基于bert文本分类框架。
初赛任务
针对语音客服通话数据进行投诉舆情风险发现,预测投诉舆情风险高的会话。
◆ 呼叫中心每天客服拨打的数据中,会产生一些投诉舆情风险很高的会话,可能是客服态度引起的客户不满,也可能是客户本身情绪不好引起会话风险较高,或者一些其他的有待探究的原因。
◆ 由于每天拨打的量很多,而投诉舆情风险很高的会话又非常少,需要我们用算法帮助质检工作人员发现这些高风险的会话,从而尽早的介入。
数据初探
Train.csv – 135656 通会话 ,文件编码utf-8
SessionId | 会话ID | 同一个会话ID表示一通会话 |
Text | 对话内容 | 已脱敏 |
Role | 角色 | 坐席/客户 |
HighRiskFlag | 高投诉舆情风险标签 | 1. 1:标识高风险;0:标识低风险; |
Test_A.csv – 50069 通会话 ,文件编码utf-8
SessionId | 会话ID | 同一个会话ID表示一通会话 |
Text | 对话内容 | 已脱敏 |
Role | 角色 | 坐席/客户 |
最终我们需要提交的是测试集中每段对话对应的风险的概率
1 | 0.234123 |
2 | 0.324123 |
从文本数据上看,比赛数据应该是利用算法直接从语音通话转的文本数据,会存在一些识别不当的问题。
评价指标
评价指标采用Top1000召回率,Top10000召回率和AUC值,以Top1000召回率为主,所以目标是尽可能多的挖掘风险对话样本。
赛题难点
1.比赛文本较长,仅靠短文本截断去做分类效果不佳,包含风险的文本长度中值在1000以上
2.数据分布极不平衡,训练集有135656条通话记录,其中正样本占比仅为0.0088
开源代码见https://github.com/aBadCat/baseline-for-2020msxf-AI-quality-inspection-competition/blob/main/Untitled.ipynb,线上AUC应该能到0.8左右
当然,这只是一个简单的bert文本截断分类框架,用的是全量数据,如果想进一步提升,可以从如何去适应文本长度,如何去处理数据的不平衡分布两个问题着手。
代码参考苏神的bert4keras.