bert-as-service 使用指南

bert-as-service 使用指南

clip-as-service clip-as-service 项目地址: https://gitcode.com/gh_mirrors/cli/clip-as-service

1. 项目介绍

bert-as-service 是一个基于 TensorFlow 的开源项目,它将预训练的 BERT 模型转化为服务,允许用户通过 RESTful API 进行文本的向量编码。该项目使得开发者能够轻松地将 BERT 的强大功能集成到自己的应用程序中,而无需深入了解模型的内部工作原理。

2. 项目快速启动

安装

首先,确保你已经安装了 TensorFlow。然后,通过以下命令安装 bert-as-service

pip install bert-as-service

启动服务

安装完成后,可以启动服务端。以下命令将启动一个本地服务,监听默认端口 5555:

bert-as-service -model_path ./pretrained_bert/uncased_L-12_H-768_A-12/ -num_worker 4 -port 5555 -ip 0.0.0.0

其中 -model_path 指定了预训练模型的路径,-num_worker 是工作进程的数量,-port-ip 分别指定了服务监听的端口和 IP。

客户端使用

启动服务后,可以使用以下 Python 代码进行文本编码:

from bert_as_service import BertServiceClient

client = BertServiceClient(ip='localhost', port=5555)
text = ["这是一个例子。", "这是另一个例子。"]
vectors = client.encode(text)
print(vectors)

这段代码将连接到本地运行的 bert-as-service,并将两个文本句子转换为向量。

3. 应用案例和最佳实践

文本相似度计算

使用 bert-as-service,可以轻松计算两个文本之间的相似度。以下是一个简单的例子:

import numpy as np

# 假设 vectors 是通过服务端得到的两个文本的向量
similarity = np.dot(vectors[0], vectors[1]) / (np.linalg.norm(vectors[0]) * np.linalg.norm(vectors[1]))
print("相似度:", similarity)

文本分类

bert-as-service 可以用于文本分类任务。你需要将文本转换为向量,然后将这些向量输入到分类器中。

4. 典型生态项目

  • Text Classification: 一个使用 bert-as-service 进行文本分类的项目。
  • Sentence Embedding: 一个利用 bert-as-service 为句子创建嵌入向量的项目。
  • Search Engine: 一个构建基于文本相似度的搜索引擎的项目。

以上就是 bert-as-service 的使用指南。希望对您有所帮助!

clip-as-service clip-as-service 项目地址: https://gitcode.com/gh_mirrors/cli/clip-as-service

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

服务端部署与启动 现在可以安装服务端了,使用的是 bert-base, 来自于项目BERT-BiLSTM-CRF-NER, 服务端只是该项目中的一个部分。 项目地址:https://github.com/macanv/BERT-BiLSTM-CRF-NER ,感谢Macanv同学提供这么好的项目。 这里要说明一下,我们经常会看到bert-as-service 这个项目的介绍,它只能加载BERT的预训练模型,输出文本向量化的结果。 而如果要加载fine-turing后的模型,就要用到 bert-base 了,详请请见: 基于BERT预训练的中文命名实体识别TensorFlow实现 下载代码并安装 : pip install bert-base==0.0.7 -i https://pypi.python.org/simple 1 或者 git clone https://github.com/macanv/BERT-BiLSTM-CRF-NER cd BERT-BiLSTM-CRF-NER/ python3 setup.py install 1 2 3 使用 bert-base 有三种运行模式,分别支持三种模型,使用参数-mode 来指定: NER 序列标注类型,比如命名实体识别; CLASS 分类模型,就是本文中使用的模型 BERT 这个就是跟bert-as-service 一样的模式了 之所以要分成不同的运行模式,是因为不同模型对输入内容的预处理是不同的,命名实体识别NER是要进行序列标注; 而分类模型只要返回label就可以了。 安装完后运行服务,同时指定监听 HTTP 8091端口,并使用GPU 1来跑; cd /mnt/sda1/transdat/bert-demo/bert/bert_svr export BERT_BASE_DIR=/mnt/sda1/transdat/bert-demo/bert/chinese_L-12_H-768_A-12 export TRAINED_CLASSIFIER=/mnt/sda1/transdat/bert-demo/bert/output export EXP_NAME=mobile_0 bert-base-serving-start \ -model_dir $TRAINED_CLASSIFIER/$EXP_NAME \ -bert_model_dir $BERT_BASE_DIR \ -model_pb_dir $TRAINED_CLASSIFIER/$EXP_NAME \ -mode CLASS \ -max_seq_len 128 \ -http_port 8091 \ -port 5575 \ -port_out 5576 \ -device_map 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 注意:port 和 port_out 这两个参数是API调用的端口号, 默认是5555和5556,如果你准备部署多个模型服务实例,那一定要指定自己的端口号,避免冲突。 我这里是改为: 5575 和 5576 如果报错没运行起来,可能是有些模块没装上,都是 bert_base/server/http.py里引用的,装上就好了: sudo pip install flask sudo pip install flask_compress sudo pip install flask_cors sudo pip install flask_json 1 2 3 4 我这里的配置是2个GTX 1080 Ti,这个时候双卡的优势终于发挥出来了,GPU 1用于预测,GPU 0还可以继续训练模型。 运行服务后会自动生成很多临时的目录和文件,为了方便管理与启动,可建立一个工作目录,并把启动命令写成一个shell脚本。 这里创建的是mobile_svr\bertsvr.sh ,这样可以比较方便地设置服务器启动时自动启动服务,另外增加了每次启动时自动清除临时文件 代码如下: #!/bin/bash #chkconfig: 2345 80 90 #description: 启动BERT分类模型 echo '正在启动 BERT mobile svr...' cd /mnt/sda1/transdat/bert-demo/bert/mobile_svr sudo rm -rf tmp* export BERT_BASE_DIR=/mnt/sda1/transdat/bert-demo/bert/chinese_L-12_H-768_A-12 export TR
最新发布
04-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

班珺傲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值