Git Product home page Git Product logo

sentence-similarity-zoo's Introduction

sentence-similarity-zoo

句子级别相似度计算是自然语言处理的最基本任务之一,是自动问答,聊天机器人,信息检索等各种自然语言处理任务基础。

本仓库面向中文场景下的句子匹配,主要完成对数据,模型和线上部署方法的整理:

  • 数据: 收集整理中文的文本匹配数据集,包括原始数据和处理后的标准数据
  • 模型: 复现经典的文本匹配深度模型,包括: 孪生网络,BERT等
  • 部署: 基于docker和tensorflow-seving实现模型的部署,提供速度测评的报告

数据集

以下数据从互联网收集而来,数据实际版权归原组织所有。如有侵犯,请联系删除!

基于百度知道构建的开放领域的句子匹配的中文数据集,数据量大且数据质量高,已经成为了中文NLP任务的基础数据集。

示例:
喜欢打篮球的男生喜欢什么样的女生	爱打篮球的男生喜欢什么样的女生	1
我手机丢了,我想换个手机	我想买个新手机,求推荐	1
大家觉得她好看吗	大家觉得跑男好看吗?	0
求秋色之空漫画全集	求秋色之空全集漫画	1

蚂蚁金服客服场景下的问题相似度计算,即给定客服里用户描述的两句话,用算法来判断是否表示了相同的语义。

示例:
1. “花呗如何还款” --“花呗怎么还款”:同义问句
2. “花呗如何还款” -- “我怎么还我的花被呢”:同义问句
3. “花呗分期后逾期了如何还款”-- “花呗分期后逾期了哪里还款”:非同义问句

对于例子a,比较简单的方法就可以判定同义;对于例子b,包含了错别字、同义词、词序变换等问题,两个句子乍一看并不类似,想正确判断比较有挑战;对于例子c,两句话很类似,仅仅有一处细微的差别 “如何”和“哪里”,就导致语义不一致。

与基于Quora的的的语义等价判别相同,本次评测任务的主要目标是针对中文的真实客服语料,进行问句意图匹配。集给定两个语句,要求判定两者意图是否相同或者相近。所有语料来自原始的银行领域智能客服日志,并经过了筛选和人工的意图匹配标注。

示例:
样例1
输入:一般几天能通过审核\ t一般审核通过要多久
输出:1

样例2
输入:一般会在什么时候来电话\ t一直在等待电话通知
输出:0

数据标准化处理

  • 处理步骤:
  1. 提取原始数据集中有标签的数据
  2. 统一格式为: text_a \t text_b \t label
  3. 按照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

TODO

  • 速度测评

Reference

sentence-similarity-zoo's People

Contributors

nghuyong avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.