利用预训练语言模型ERNIE提供文本相似度(语义匹配)计算服务的简单实例

1. ERNIE简介

这里的ERNIE(包括后面介绍的都是指的ERNIE1.0)是指百度提出的知识增强的语义表示模型 ERNIE(Enhanced Representation from kNowledge IntEgration),而且发布了基于 PaddlePaddle 的开源代码与模型
ERNIE在结构上和BERT是一样的,只是改进了BERT的预训练阶段,增加了实体等先验知识,而且在大型中文语料(百度贴吧等)上进行了训练,因此对于中文任务来说比BERT要好。
关于ERNIE的介绍可以看机器之心的这篇博客,这里不再赘述。

2. 如何做相似度计算

ERNIE和BERT一样都提供了句对分类任务,输入为一对句子,输出为这对句子的类别。

2.1 输入输出

如果要做相似度计算,我们需要的输入输出应该有一些不同

  • 输入
    输入为一对句子。

  • 输出
    输出应该为这对句子的相似度得分。

2.2 改造思路

这里只说一下改造思路,具体可参考代码

  • 改造输入
    对于输入而言,源码提供的方式是从文件流中读取,这个费一点功夫可以改造为从参数中读取。

  • 改造输出
    做过分类任务的都了解,最终是通过softmax计算各个类别的概率,然后取概率最大的值所在的类别作为输出。
    对于二分类任务而言,类别只有2个,假设为相似/不相似,即1/0,那么取类别为1的概率/置信度作为输出即可模拟相似度。

  • 提供服务
    如果需要作为服务提供,那么只需利用web框架,封装模型调用函数,并让其接受HTTP请求即可了。

p.s.百度官方提供了paddle serving用于部署模型(不需要人工改造),有兴趣的可以尝试一下

3. Demo

启动服务后,可以发起HTTP请求测试,下图为用postman的测试结果。
在这里插入图片描述
这里的输入和返回分别为:

# 输入为2个列表/数组,用来表示n个句子对
text_list1=[你好啊世界,你好啊世界]
text_list2=[再见了朋友,哈喽]
# 返回为2个列表/数组对应位置的1对句子的相似度得分
scores=[0.5018,0.5674]

4. 源码

下面为实例源码地址,里面有详细的启动说明。
Gitee
GitHub

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值