前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何应用 BERT :Bidirectional Encoder Representations from Transformers

如何应用 BERT :Bidirectional Encoder Representations from Transformers

作者头像
杨熹
发布2018-12-17 10:15:59
1.1K0
发布2018-12-17 10:15:59
举报
文章被收录于专栏:杨熹的专栏杨熹的专栏

上一篇文章介绍了 Google 最新的BERT (Bidirectional Encoder Representations from Transformers) ,这个模型在 11 个 NLP 任务上刷新了纪录。

Google 还开源了 BERT 的代码:https://github.com/google-research/bert

大家可以下载在维基百科语料上使用 TPU 预训练好的模型,包括中文 BERT 预训练模型。

BERT 模型的训练分为预训练(Pre-training)和微调(Pre-training)两步。

预训练过程耗时又耗钱,Google 对 BERT 的预训练一般需要 4 到 16 块 TPU 和一周的时间才可以完成。幸好多数情况下我们可以使用 Google 发布的预训练模型,不需要重复构造,

微调时可以根据不同的任务,对模型进行相应的扩展,例如对句子进行情感分类时,只需要在 BERT 的输出层的句向量上面加入几个 Dense 层。所以可以固定 BERT 的参数,将它的输出向量当做一个特征用于具体任务。


那么要如何应用 BERT 呢?

这里介绍一下 bert-as-service ,项目地址:https://github.com/hanxiao/bert-as-service

这个项目将预训练好的 BERT 模型作为一个服务独立运行,很简单地用几行代码就可以调用服务获取句子、词级别上的向量,然后将这些向量当做特征信息输入到下游模型。在做具体 NLP 任务时,不需要将整个 BERT 加载到 tf.graph 中,或者可以直接在 scikit-learn, PyTorch, Numpy 中使用 BERT。

这个项目的作者是肖涵博士,他的 Fashion-MNIST 数据集大家应该比较熟悉,现在已成为机器学习基准集,在 Github 上超过 4.4K 星。


使用方法很简单:

  1. 下载 Google 的预训练 BERT 模型,可以选择 BERT-Base, Chinese 等任意模型:

https://github.com/google-research/bert#pre-trained-models

解压到某个路径下,例如:/tmp/english_L-12_H-768_A-12/

  1. 开启 BERT 服务

python app.py -model_dir /tmp/english_L-12_H-768_A-12/ -num_worker=4

这个代码将开启一个 4 进程的 BERT 服务,即最高处理来自 4 个客户端的并发请求。如果在某时刻多余 4 个的并发请求,将被暂时放到一个负载均衡中等待执行。

  1. 使用客户端获取句子向量编码

唯一需要的文件就是 service/client.py ,从中导入 BertClient 。

代码语言:javascript
复制
from service.client import BertClient
bc = BertClient()
bc.encode(['First do it', 'then do it right', 'then do it better'])

然后就可以得到一个 3 x 768 的 ndarray 结构,每一行代表了一句话的向量编码。也可以通过设置,返回 Python 类型的 List[List[float]] 。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档