句子级别相似度计算是自然语言处理的最基本任务之一,是自动问答,聊天机器人,信息检索等各种自然语言处理任务基础。
本仓库面向中文场景下的句子匹配,主要完成对数据,模型和线上部署方法的整理:
- 数据: 收集整理中文的文本匹配数据集,包括原始数据和处理后的标准数据
- 模型: 复现经典的文本匹配深度模型,包括: 孪生网络,BERT等
- 部署: 基于docker和tensorflow-seving实现模型的部署,提供速度测评的报告
以下数据从互联网收集而来,数据实际版权归原组织所有。如有侵犯,请联系删除!
基于百度知道构建的开放领域的句子匹配的中文数据集,数据量大且数据质量高,已经成为了中文NLP任务的基础数据集。
示例:
喜欢打篮球的男生喜欢什么样的女生 爱打篮球的男生喜欢什么样的女生 1
我手机丢了,我想换个手机 我想买个新手机,求推荐 1
大家觉得她好看吗 大家觉得跑男好看吗? 0
求秋色之空漫画全集 求秋色之空全集漫画 1
蚂蚁金服客服场景下的问题相似度计算,即给定客服里用户描述的两句话,用算法来判断是否表示了相同的语义。
示例:
1. “花呗如何还款” --“花呗怎么还款”:同义问句
2. “花呗如何还款” -- “我怎么还我的花被呢”:同义问句
3. “花呗分期后逾期了如何还款”-- “花呗分期后逾期了哪里还款”:非同义问句
对于例子a,比较简单的方法就可以判定同义;对于例子b,包含了错别字、同义词、词序变换等问题,两个句子乍一看并不类似,想正确判断比较有挑战;对于例子c,两句话很类似,仅仅有一处细微的差别 “如何”和“哪里”,就导致语义不一致。
与基于Quora的的的语义等价判别相同,本次评测任务的主要目标是针对中文的真实客服语料,进行问句意图匹配。集给定两个语句,要求判定两者意图是否相同或者相近。所有语料来自原始的银行领域智能客服日志,并经过了筛选和人工的意图匹配标注。
示例:
样例1
输入:一般几天能通过审核\ t一般审核通过要多久
输出:1
样例2
输入:一般会在什么时候来电话\ t一直在等待电话通知
输出:0
- 处理步骤:
- 提取原始数据集中有标签的数据
- 统一格式为:
text_a \t text_b \t label
- 按照8:1:1的比例随机重新划分训练,开发和测试集
- 处理后的数据集概览:
数据集 | 有标签数据总量 | 训练集 | 开发集 | 测试集 |
---|---|---|---|---|
LCQMC(未处理) | 260068 | 238766 | 8802 | 12500 |
ATEC | 165608 | 132486 | 16561 | 16561 |
CCKS 2018 | 100000 | 80000 | 10000 | 10000 |
- siameseCNN: 孪生CNN网络,采用CNN进行句子特征抽取
- siameseLSTM: 孪生LSTM网络,采用LSTM进行句子特征抽取
- BERTFinetune: 基于BERT模型,在分类模型上进行Fine-tuning
计算Precision,Recall,F1以macro的方式计算
Model/Dataset | LCQMC | ATEC | CCKS | |||||||||
auc | p | r | f1 | auc | p | r | f1 | auc | p | r | f1 | |
siameseCNN | 0.73 | 0.74 | 0.73 | 0.73 | 0.89 | 0.85 | 0.77 | 0.80 | 0.77 | 0.77 | 0.77 | 0.77 |
siameseLSTM | 0.73 | 0.75 | 0.73 | 0.73 | 0.89 | 0.82 | 0.79 | 0.81 | 0.76 | 0.76 | 0.76 | 0.76 |
BERTFinetune | 0.86 | 0.87 | 0.86 | 0.86 | 0.94 | 0.91 | 0.87 | 0.89 | 0.94 | 0.94 | 0.94 | 0.94 |
- 以
BERTFinetune
为例子,预测并导出tensorflow-serving支持的pb文件
cd ./models/BERTFinetune
./predict.sh
- 基于docker, 启动tensorflow-serving,部署模型
docker run --name=sentencesim --runtime=nvidia -e CUDA_VISIBLE_DEVICES=0 -p 8501:8501 --mount type=bind,source=$(pwd)/checkpoint/BERTFinetune/LCQMC/export,target=/models/qqsim -e MODEL_NAME=sentencesim -t tensorflow/serving:1.12.0-gpu
- 在线预测
cd ./models/BERTFinetune
python predict_online.py
- 速度测评