BERT模型的简单使用(Python)

时间:2024-03-27 10:09:52

不涉及原理,只是快速开始使用
更详细的请参考官方文档
https://bert-as-service.readthedocs.io/en/latest/index.html

下载预训练模型

(下载可能需要一些时间,等待的时候可以先去下一步把python库安了)
可以直接去github下载
https://github.com/google-research/bert
BERT模型的简单使用(Python)
解压后的文件有5个(我使用的是BERT-Base, Uncased这个预训练模型)
BERT模型的简单使用(Python)

安装python库

pip install bert-serving-server
pip install bert-serving-client

启动服务

在命令行输入

bert-serving-start -model_dir D:\Documents\Code\PythonCode\bert\model\ -num_worker=1

这条指令启动了位于-model_dir地址的bert模型,提供一个工作通道
注意:地址填绝对地址,相对地址可能会出问题(有的人出错,有的人不出错)

启动成功会显示
BERT模型的简单使用(Python)
一定是显示all set , ready to serve request!才算启动成功

和jupyter notebook一样,在使用Bert的过程中这个命令行窗口要保持开启

使用

from bert_serving.client import BertClient
print("::0")
bc = BertClient()
ans = bc.encode([‘First do it’, ‘then do it right’, ‘then do it better’])
print(len(ans[0]))
print("::1")

BERT模型的简单使用(Python)
encode是将句子转换为固定长度向量返回,小型的模型的向量长度为768,大型的为1024

关于坑

tensorflow版本

一开始安装的是最新的2.2版本,启动服务的时候报错

TypeError: cannot unpack non-iterable NoneType object

卸载当前的tensorflow,重新安装tensorflow
或者直接覆盖

pip install tensorflow==1.13.0rc1

内存问题(num_worker)

官方给的教程写的基本指令是num_worker=4
我电脑太渣,瞬间CPU和内存飙满,但是也不给个报错MemoryError,废了好大的劲才发现是内存问题
这种有可能是卡在中间,也不报错,所以一定要记住all set , ready to serve request!才算启动成功

一开始还是要从num_worker=1开始
一般启动过程中会有几秒资源占用很高,过去之后会降下来