1、问题定义 问题相似度计算,即给定客服里用户描述的两句话,用算法来判断是否表示了相同的语义。 示例: “花呗如何还款” --“花呗怎么还款”:同义问句 “花呗如何还款” -- “我怎么还我的花被呢”:同义问句 “花呗分期后逾期了如何还款”-- “花呗分期后逾期了哪里还款”:非同义问句 对于例子a,比较简单的方法就可以判定同义;对于例子b,包含了错别字、同义词、词序变换等问题,两个句子乍一看并不类似,想正确判断比较有挑战;对于例子c,两句话很类似,仅仅有一处细微的差别 “如何”和“哪里”,就导致语义不一致。
2、数据 初赛提供10万对的标注数据(分批次更新),作为训练数据,包括同义对和不同义对,可下载。数据集中每一行就是一条样例。格式如下:
行号\t句1\t句2\t标注,举例:1 花呗如何还款 花呗怎么还款 1 行号指当前问题对在训练集中的第几行; 句1和句2分别表示问题句对的两个句子; 标注指当前问题对的同义或不同义标注,同义为1,不同义为0。 评测数据集总共1万条。为保证大赛的公平公正、避免恶意的刷榜行为,该数据集不公开。选手通过提交评测代码和模型的方法完成预测、获取相应的排名。
3、评测及评估指标
初赛阶段,选手在本地完成模型的训练调优,将评测代码和模型打包后,提交官方测评系统完成预测和排名更新。测评系统为标准Linux环境,内存8G,CPU4核,无网络访问权限。安装有python 2.7、java 8、tensorflow 1.5、jieba 0.39、pytorch 0.4.0、keras 2.1.6、gensim 3.4.0、pandas 0.22.0、sklearn 0.19.1、xgboost 0.71、lightgbm 2.1.1。 提交压缩包解压后,主目录下需包含脚本文件run.sh,该脚本以评测文件作为输入,评测结果作为输出(输出结果只有0和1),输出文件每行格式为“行号\t预测结果”,命令超时时间为30分钟,执行命令如下: bash run.sh INPUT_PATH OUTPUT_PATH 预测结果为空或总行数不对,评测结果直接判为0。
复赛阶段,选手的模型训练、调优和预测都是在蚂蚁金服的机器学习平台上完成。因此评测只需要提供相应的UDF即可,以问题对的两句话作为输入,相似度预测结果(0或1)作为输出,同样输出为空则终止评估,评测结果为0。 本赛题评分以F1-score为准,得分相同时,参照accuracy排序。
-
通过特征工程抽取文本的NLP、统计学、向量表示等特征; 对应代码:./feature/
-
构建不同的深度语义匹配模型对文本语义进行学习和匹配; 对应代码:./model/
-
通过对若干中不同的模型结果采用LightGBM和XGBoost算法进行模型融合; 对应代码:./stacking/
-
最后对以上两种结果进行blending。 对应代码 ./model/model_blend.py
- 第一赛季:线上成绩:0.6589;线上排名:29th/2632(Top100入围第二赛季的复赛)
- 第二赛季:线上成绩:0.7284;线上排名:26/100。