文 / 软件工程师 Arno Eigenwillig 和开发技术推广工程师 Luiz GUStavo Martins
BERT 及其他 Transformer 编码器架构在自然语言处理 (NLP) 领域计算矢量空间下的文本表征任务中取得了巨大成功,不仅推进学术领域前沿研究指标的发展,还被广泛应用于 Google 搜索等大型应用。BERT 自最开始便由 TensorFlow 构建,但它最初依赖的并非是 TensorFlow Python 代码来将原始文本转换为模型输入。
今天,我们非常高兴地发布一种更精简的方案,完全基于 TensorFlow 构建的 BERT。由这一解决方案构建的预训练编码器和与之匹配的文本预处理模型现已在 TensorFlow Hub 上提供。现在,只需几行代码,由 TensorFlow 所构建的 BERT 便可以直接处理文本:
# Load BERT and the preprocessing model from TF Hub.
preprocess = hub.load('https://hub.tensorflow.google.cn/tensorflow/bert_en_uncased_preprocess/1')
encoder = hub.load('https://hub.tensorflow.google.cn/tensorflow/bert_en_uncased_L-12_H-768_A-12/3')
# Use BERT on a batch of raw text inputs.
input = preprocess(['Batch of inputs', 'TF Hub makes BERT easy!', 'More text.'])
pooled_output = encoder(input)["pooled_output"]
print(pooled_output)
tf.Tensor(
[[-0.8384154-0.26902363-0.3839138 ... -0.3949695-0.584420860.8058556 ]
[-0.8223734-0.2883956-0.09359277 ... -0.13833837-0.62517480.88950026]
[-0.9045408-0.37877116-0.7714909 ... -0.5112085-0.707918640.92950743]],
shape=(3, 768), dtype=float32)
这些编码器和预处理模型均由 TensorFlow Model Garden 所提供的 NLP 库构建,且以 SavedModel 格式导出至 TensorFlow Hub。在后台,预处理使用 TF.text 库中的 TensorFlow 算子对输入文本执行分词,使您可以构建自己的 TensorFlow 模型,该模型无需在循环中使用 Python 代码即可将原始文本输入转换为预测输出。这不仅加速了计算,