对输入的两个句子进行推理预测,获得它们的语义相似度
工具 | 说明 |
---|---|
python | 开发语言 |
paddlepaddle | 深度学习框架 |
flask | python web框架 |
gevent | python 并发框架 |
接口名 | 类型 | 说明 |
---|---|---|
calculate_similarity | post | 提供句子相似度计算 |
参数名 | 类型 | 说明 |
---|---|---|
text_list1 | list | 句子列表1 |
text_list2 | list | 句子列表2 |
返回值 | 类型 | 说明 |
---|---|---|
probs | list | 相似度列表 |
例如输入是text_list1=[list1_t1,list1_t2,...]
和text_list2=[list2_t1,list2_t2,...]
,则输出为scores=[score1,score2,...]
其中score1
是list1_t1
和list2_t1
的语义相似度得分,score2
是list1_t2
和list2_t2
的语义相似度得分...
- 深度学习环境
对于paddlepadlle深度学习框架,参考快速安装
或直接使用如下命令安装:
# gpu版
python -m pip install paddlepaddle-gpu==2.0.2.post100 -f https://paddlepaddle.org.cn/whl/mkl/stable.html
# cpu版
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
- 模型下载
该项目使用深度语言模型ERNIE,并基于预训练模型进行微调
所需的预训练模型是ERNIE1.0中文Base模型
,点击下载
- python web环境
对于python web框架flask和并发框架gevent,使用如下命令安装即可:
pip install flask gevent
conf/model_conf.json
配置了常见的模型参数,如果这些参数不够满足要求,可以根据实际需求更改,然后重写模型加载前的参数读取方法即可
下面是配置参数的示例:
{
"ernie": {
"use_cuda": true,
"batch_size": 32,
"init_checkpoint": "data/ernie/pretrained_model/params",
"ernie_config_path": "data/ernie/pretrained_model/ernie_config.json",
"vocab_path": "data/ernie/pretrained_model/vocab.txt",
"save_inference_model_path": "data/ernie/inference_models"
}
}
-
use_cuda
表示是否使用GPU -
init_checkpoint
表示模型要加载的检查点(训练好的模型输出的变量、参数等数据) -
ernie_config_path
和vocab_path
是预训练模型的参数和词典 -
save_inference_model_path
为模型推理时加载的模型文件。如果没有训练,可以直接使用预训练模型进行推理预测,即
init_checkpoint
的路径改为预训练模型的params
即可(如示例)。
进入该项目的根目录,然后执行命令
# 不指定参数,使用默认值
python server.py
# 指定参数
python server.py --port 6100 --model ernie
# 可使用`python server.py --help`查看参数说明
其中参数说明如下:
参数名 | 默认值 | 说明 |
---|---|---|
port | 6100 | 开放端口 |
model | ernie | 指定模型 |
项目根目录下ernie_train.py
提供了训练ernie模型的方法,训练集和验证集的格式均为:s1\t
s2\t
label
北京有多少人 北京的人口数量是多少 1
这个空气净化器有用吗? 空气刘海是怎么样的 0