从零开始快速入门google开源BERT模型

什么是BERT?

BERTGoogle为预训练语言表示而开发的NLP模型。它利用了在网络上公开提供的大量纯文本数据,并且以无人监督的方式进行了培训。对于每种语言,预训练BERT模型是一个相当昂贵但一次性的过程。幸运的是,Google发布了一些经过预先训练的模型,您可以从此处下载

Sentence Encoding/Embedding 是许多NLP应用程序所需的上游任务,例如,情绪分析,文本分类。目标是将可变长度的句子表示为固定长度的向量,例如[0.1,0.3,0.9]的hello world。向量的每个元素都应“编码”原始句子的某些语义。

github地址:    https://github.com/hanxiao/bert-as-service

安装

最好的安装方法bert-as-service是通过pip。请注意,服务器和客户端可以分别安装,甚至可以安装在不同的计算机上:

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

服务器必须上运行的Python> = 3.5Tensorflow> = 1.10单点-10)。同样,该服务器不支持Python 2!

注意OM

客户端可以同时在Python 2和3上运行。

下载预训练的BERT模型

下载下面列出的模型,然后将zip文件解压缩到某个文件夹,例如 /tmp/english_L-12_H-768_A-12/

由Google AI发布的预训练BERT模型列表:

BERT-Base, Uncased 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Large, Uncased 24-layer, 1024-hidden, 16-heads, 340M parameters
BERT-Base, Cased 12-layer, 768-hidden, 12-heads , 110M parameters
BERT-Large, Cased 24-layer, 1024-hidden, 16-heads, 340M parameters
BERT-Base, Multilingual Cased (New) 104 languages, 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Base, Multilingual Cased (Old) 102 languages, 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Base, Chinese Chinese Simplified and Traditional, 12-layer, 768-hidden, 12-heads, 110M parameters

启动BERT服务

安装服务器之后,您应该能够使用bert-serving-start CLI,如下所示:

bert-serving-start -model_dir /${BERT_MODEL_PATH}/english_L-12_H-768_A-12/ -num_worker=4

这将以四个worker启动服务,这意味着它最多可以处理四个并发请求。更多并发请求将在负载均衡器中排队。

下面显示了正确启动时服务器的状态:

使用客户端获取句子编码

现在,您可以简单地对句子进行编码,如下所示:

下面是一个基本示例:

from bert_serving.client import BertClient
bc = BertClient()
bc.encode(['First do it', 'then do it right', 'then do it better'])

执行后的代码将返回一个 ndarray,每一行是一个句子的固定表示形式。您还可以指定让它返回纯python类型的对象List[List[float]]

作为BERT的功能,您可以通过连接起来将得到一个对句子的编码|||,例如,

bc.encode(['First do it ||| then do it right'])

远程使用BERT服务

也可以在一台(GPU)机器上启动该服务,然后从另一台(CPU)机器调用该服务,如下所示:

# on another CPU machine
from bert_serving.client import BertClient
bc = BertClient(ip='xx.xx.xx.xx')  # ip address of the GPU machine
bc.encode(['First do it', 'then do it right', 'then do it better'])

后续将介绍自定义PROCESS的编写

发布了49 篇原创文章 · 获赞 19 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/yizhuanlu9607/article/details/103984633
今日推荐