|
使用 bert-as-service 生成词向量
bert-as-service 是腾讯 AI Lab 开源的一个 BERT 服务,它让用户可以以调用服务的方式使用 BERT 模型而不需要关注 BERT 的实现细节。bert-as-service 分为客户端和服务端,用户可以从 python 代码中调用服务,也可以通过 http 的方式访问。
安装
使用 pip 命令进行安装,客户端与服务端可以安装在不同的机器上:
pip install bert-serving-server # 服务端
pip install bert-serving-client # 客户端,与服务端互相独立
下载预训练模型
根据 NLP 任务的类型和规模不同,Google 提供了多种预训练模型供选择:
BERT-Base, Chinese: 简繁体中文, 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Base, Multilingual Cased: 多语言(104 种), 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Base, Uncased: 英文不区分大小写(全部转为小写), 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Base, Cased: 英文区分大小写, 12-layer, 768-hidden, 12-heads , 110M parameters
也可以使用中文效果更好的哈工大版 BERT:Chinese-BERT-wwm
以上列出了几个常用的预训练模型,可以到 这里 查看更多。
解压下载到的 .zip 文件以后,会有 6 个文件:
TensorFlow 模型文件(bert_model.ckpt) 包含预训练模型的权重,模型文件有三个
字典文件(vocab.txt) 记录词条与 id 的映射关系
配置文件(bert_config.json ) 记录模型的超参
启动 BERT 服务
使用 bert-serving-start 命令启动服务:
bert-serving-start -model_dir /tmp/english_L-12_H-768_A-12/ -num_worker=2
其中,-model_dir 是预训练模型的路径,-num_worker 是线程数,表示同时可以处理多少个并发请求
在客户端获取句向量
可以简单的使用以下代码获取语料的向量表示:
from bert_serving.client import BertClient
bc = BertClient()
doc_vecs = bc.encode(['First do it', 'then do it right', 'then do it better'])
|
|