simnet_bow
是一个计算短文本相似度的模型,可以根据用户输入的两个文本,计算出相似度得分。关于simnet_bow
的具体信息请参见simnet_bow。
使用PaddleHub Serving可以部署一个在线语义模型服务,可以将此接口用于在线文本相似度分析、智能问答检索等应用。
这里就带领大家使用PaddleHub Serving,通过简单几步部署一个语义模型在线服务。
启动命令如下:
$ hub serving start -m simnet_bow
启动时会显示加载模型过程,启动成功后显示:
Loading lac successful.
这样就完成了一个语义模型服务化API的部署,默认端口号为8866。
在服务部署好之后,我们可以进行测试,用来测试的文本对分别为[这道题太难了:这道题是上一年的考题], [这道题太难了:这道题不简单], [这道题太难了:这道题很有意思]
。
首先指定编码格式及引入需要的包:
>>> # coding: utf8
>>> import requests
>>> import json
准备的数据格式为:
{"text_1": [text_a1, text_a2, ... ], "text_2": [text_b1, text_b2, ... ]}
NOTE: 字典的key分别为"text_1"和"text_2",与simnet_bow
模型使用的输入数据一致。
根据文本和数据格式,代码如下:
>>> # 指定用于用于匹配的文本并生成字典{"text_1": [text_a1, text_a2, ... ]
>>> # "text_2": [text_b1, text_b2, ... ]}
>>> text = {
>>> "text_1": ["这道题太难了", "这道题太难了", "这道题太难了"],
>>> "text_2": ["这道题是上一年的考题", "这道题不简单", "这道题很有意思"]
>>> }
接下来发送请求到语义模型API,并得到结果,代码如下:
>>> # 指定匹配方法为simnet_bow并发送post请求
>>> url = "http://127.0.0.1:8866/predict/text/simnet_bow"
>>> r = requests.post(url=url, data=text)
simnet_bow
模型返回的结果为每对文本对比后的相似度,我们尝试打印接口返回结果:
# 打印预测结果
>>> print(json.dumps(r.json(), indent=4, ensure_ascii=False))
{
"msg": "",
"results": [
{
"similarity": 0.8445,
"text_1": "这道题太难了",
"text_2": "这道题是上一年的考题"
},
{
"similarity": 0.9275,
"text_1": "这道题太难了",
"text_2": "这道题不简单"
},
{
"similarity": 0.9083,
"text_1": "这道题太难了",
"text_2": "这道题很有意思"
}
],
"status": "0"
}
这样我们就完成了对语义模型simnet_bow的预测服务化部署和测试。
完整的测试代码见simnet_bow_serving_demo.py。