不涉及原理,只是快速开始使用
更详细的请参考官方文档
https://bert-as-service.readthedocs.io/en/latest/index.html
下载预训练模型
(下载可能需要一些时间,等待的时候可以先去下一步把python库安了)
可以直接去github下载
https://github.com/google-research/bert
解压后的文件有5个(我使用的是BERT-Base, Uncased这个预训练模型)
安装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模型,提供一个工作通道
注意:地址填绝对地址,相对地址可能会出问题(有的人出错,有的人不出错)
启动成功会显示
一定是显示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")
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开始
一般启动过程中会有几秒资源占用很高,过去之后会降下来