Sniper

写在前面

由于苏神开发的bert4keras并没有什么文档,苏神本人的文档写了个头就没动过了,取而代之的是很多例子。

这对框架的使用者造成了一定的困扰,事实上我在初识bert4keras时,因为没文档,一度选择了学习transformers,当然transformers是一个很好的框架,但是对于学习的人来说,并没有bert4keras来的实在,毕竟有苏神在带着。

本文主要为我在阅读和使用bert4keras源码时的思考,和使用方法一并写下(试图)作为一版文档吧。

因此,其实本仓库并不能称作完整的文档,其实是一个笔记,争取把用法和代码讲明白(我也能力有限,只能把我用过的和我学过的部分进行说明)。

已经做了transformers的contributor努力做bert4keras的哈哈哈哈。

本文可能会照搬很多苏神的文字和代码,如果苏神介意我就取消开源

快速开始

下面是一个调用bert base模型来编码句子的简单例子:

  1. from bert4keras.models import build_transformer_model
  2. from bert4keras.tokenizers import Tokenizer
  3. import numpy as np
  4. config_path = '/root/kg/bert/chinese_L-12_H-768_A-12/bert_config.json'
  5. checkpoint_path = '/root/kg/bert/chinese_L-12_H-768_A-12/bert_model.ckpt'
  6. dict_path = '/root/kg/bert/chinese_L-12_H-768_A-12/vocab.txt'
  7. tokenizer = Tokenizer(dict_path, do_lower_case=True) # 建立分词器
  8. model = build_transformer_model(config_path, checkpoint_path) # 建立模型,加载权重
  9. # 编码测试
  10. token_ids, segment_ids = tokenizer.encode(u'语言模型')
  11. print('\n ===== predicting =====\n')
  12. print(model.predict([np.array([token_ids]), np.array([segment_ids])]))

其他库

其他库详见文件列表。分别对应了bert4keras的几大文件。