Skip to content

Latest commit

 

History

History
 
 

semantic_model_simnet_bow

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

部署语义模型服务-以simnet_bow为例

简介

simnet_bow是一个计算短文本相似度的模型,可以根据用户输入的两个文本,计算出相似度得分。关于simnet_bow的具体信息请参见simnet_bow

使用PaddleHub Serving可以部署一个在线语义模型服务,可以将此接口用于在线文本相似度分析、智能问答检索等应用。

这里就带领大家使用PaddleHub Serving,通过简单几步部署一个语义模型在线服务。

Step1:启动PaddleHub Serving

启动命令如下:

$ hub serving start -m simnet_bow  

启动时会显示加载模型过程,启动成功后显示:

Loading lac successful.

这样就完成了一个语义模型服务化API的部署,默认端口号为8866。

Step2:测试语义模型在线API

在服务部署好之后,我们可以进行测试,用来测试的文本对分别为[这道题太难了:这道题是上一年的考题], [这道题太难了:这道题不简单], [这道题太难了:这道题很有意思]

首先指定编码格式及引入需要的包:

>>> # 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": ["这道题是上一年的考题", "这道题不简单", "这道题很有意思"]
>>> }

Step3:获取并验证结果

接下来发送请求到语义模型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