最简单的BERT模型调用方法
点击上方,选择星标或置顶,每天给你送干货!
阅读大概需要6分钟
跟随小博主,每天进步一丢丢
来自:AINLP
作者:段清华(金证优智技术总监)
原文链接:
https://zhuanlan.zhihu.com/p/97926790
项目地址:
https://github.com/qhduan/bert-model
BERT Models
注达到本文效果基本要求Tensorflow 2.0
也许,是最简单的BERT预加载模型。
当然,实现起来是有一些tricky的,而且tokenizer并不是真正的bert的tokenizer,中文大部分不会有太大问题,英文的话实际上因为考虑BPE,所以肯定是不行的。
本项目重点在于,实际上我们是可以通过非常非常简单的几行代码,就能实现一个几乎达到SOTA的模型的。
BERT分类模型(pool模式)
返回一个1x768的向量,相当于句子的固定长度Embedding
根据一个实际Chinese GLUE的测试样例:
import tensorflow_hub as hub# 注意这里最后是 pool.tar.gz
model = hub.KerasLayer('https://code.aliyun.com/qhduan/chinese_roberta_wwm_ext_L-12_H-768_A-12/raw/master/pool.tar.gz')# y.shape == (1, 768)
y = model([['我爱你']])
一个非常简单的样例(classifier.py
):
import os
os.environ['TFHUB_DOWNLOAD_PROGRESS'] = "1"
import tensorflow as tf
import tensorflow_hub as hubx = [['我爱你'],['我恨你'],['爱你'],['恨你'],['爱'],['恨'],
]
y = [1, 0, 1, 0, 1, 0
]tx = tf.constant(x)
ty = tf.constant(tf.keras.utils.to_categorical(y, 2))# 注意这里最后是 pool.tar.gz
model = tf.keras.Sequential([hub.KerasLayer('https://code.aliyun.com/qhduan/chinese_roberta_wwm_ext_L-12_H-768_A-12/raw/master/pool.tar.gz', trainable=False),tf.keras.layers.Dense(2, activation='softmax')
])model.compile(loss='categorical_crossentropy')
model.fit(tx, ty, epochs=10, batch_size=2)
logits = model.predict(tx)
pred = logits.argmax(-1).tolist()print(pred)
print(y)
BERT序列模型(SEQ)
返回一个序列的Embedding的模型
import tensorflow_hub as hub# 注意这里最后是 seq.tar.gz
model = hub.KerasLayer('https://code.aliyun.com/qhduan/chinese_roberta_wwm_ext_L-12_H-768_A-12/raw/master/seq.tar.gz')# y.shape == (1, 5, 768)
# [CLS], 我, 爱, 你, [SEP],所以一共5个符号
y = model([['我爱你']])
BERT预测模型(PRED)
例如使用mask预测缺字
import tensorflow_hub as hub# 注意这里最后是 pred.tar.gz
model = hub.KerasLayer('https://code.aliyun.com/qhduan/chinese_roberta_wwm_ext_L-12_H-768_A-12/raw/master/pred.tar.gz')# y.shape == (1, 5, 21128)
y = model([['我[MASK]你']])index2word = {k: v.strip() for k, v in enumerate(open('vocab.txt'))}# 我 爱 你
r = [index2word[i] for i in y.numpy().argmax(-1).flatten()][1:-1]
模型引用
REPO地址:
https://github.com/qhduan/bert-model
Roberta和WMM来自ymcui:
https://github.com/ymcui/Chinese-BERT-wwm
方便交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
推荐阅读:
【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文
【一分钟论文】IJCAI2019 | Self-attentive Biaffine Dependency Parsing
【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译
【一分钟论文】Semi-supervised Sequence Learning半监督序列学习
【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing
详解Transition-based Dependency parser基于转移的依存句法解析器
经验 | 初入NLP领域的一些小建议
学术 | 如何写一篇合格的NLP论文
干货 | 那些高产的学者都是怎样工作的?
一个简单有效的联合模型
近年来NLP在法律领域的相关研究工作
让更多的人知道你“在看”
最简单的BERT模型调用方法相关推荐
- 娓娓道来!那些BERT模型压缩方法
本文约3000字,建议阅读10+分钟 本文主要介绍知识蒸馏.参数共享和参数矩阵近似方法. 作者 | Chilia 哥伦比亚大学 nlp搜索推荐 整理 | NewBeeNLP 基于Transformer ...
- 所有你要知道的 BERT 模型压缩方法,都在这里!
模型压缩可减少受训神经网络的冗余,由于几乎没有 BERT 或者 BERT-Large 模型可直接在 GPU 及智能手机上应用,因此模型压缩方法对于 BERT 的未来的应用前景而言,非常有价值. 软件工 ...
- 娓娓道来!那些BERT模型压缩方法(一)
作者 | Chilia 哥伦比亚大学 nlp搜索推荐 整理 | NewBeeNLP 基于Transformer的预训练模型的趋势就是越来越大,虽然这些模型在效果上有很大的提升,但是巨大的参数量也对上线 ...
- 全网最简单的RFM模型制作方法,3岁小孩都能学会!
RFM是用户运营里非常重要的一个模型,在每个行业里都有着非常广泛的运用,特别在电商商业,RFM已经是属于行业分析人员必备的分析模型之一了.要想掌握并制作一个完整的RFM模型出来,方法有很多,可以利用P ...
- 最简单的针孔相机模型标定方法,使用Matlab进行快速可视化相机标定,小白专用,超详细
相机标定是机器视觉.SLAM等绕不开的环节,今天介绍一种最为简单的可视化标定方法. 这篇文章只是讲解如果标定,关于相机的标定原理,可以参考别的文章,这里推荐一篇<[机器视觉]张氏法相机标定> ...
- [Python人工智能] 三十四.Bert模型 (3)keras-bert库构建Bert模型实现微博情感分析
从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章开启了新的内容--Bert,首先介绍Keras-bert库安装及基础用法及文本分类工作.这篇文章将通过keras- ...
- BERT-of-Theseus:基于模块替换的模型压缩方法
©PaperWeekly 原创 · 作者|苏剑林 学校|追一科技 研究方向|NLP.神经网络 最近了解到一种称为"BERT-of-Theseus"的 BERT 模型压缩方法,来自论 ...
- 小评最近很火的BERT模型
应Pattern Recognition审稿人要求,加入最近很火的BERT模型作为我们提出的文本表示模型的对比方法.在此和大家共同学习分析一下最近深度学习在自然语言处理领域的网红模型BERT,尝试品味 ...
- 【BERT】BERT模型压缩技术概览
由于BERT参数众多,模型庞大,推理速度较慢,在一些实时性要求较高.计算资源受限的场景,其应用会受到限制.因此,讨论如何在不过多的损失BERT性能的条件下,对BERT进行模型压缩,是一个非常有现实意义 ...
- 从字到词,大词典中文BERT模型的探索之旅
导语: BERT模型自诞生以来统治了各项NLP任务的榜单,谷歌也针对中文给出了基于字的模型.然而我们知道词是语言最重要的组成部分,因此,一个自然的想法就是做基于词的BERT模型.但是受限于显存,谷歌原 ...
最新文章
- labview将产生数据存入数组 并保存成Excel
- flipud--矩阵上下翻转
- 成人教育还是K12,对网易有道来说都很难
- java 不识别enum_Java enum关键字不识别的快速解决办法
- python连接mysql的一些基础知识+安装Navicat可视化数据库+flask_sqlalchemy写数据库
- 奇妙的安全旅行之DES算法(二)
- 应用在核电站DCS系统的代码自动生成工具ModelCoder
- [面试] C/C++ 语法细节拾遗
- css列名不动_利用js+css+html实现固定table的列头不动
- Android Framework内核之旅
- 中国政法大学政治与公共管理学院丛日云教授在毕业典礼上的演讲在网络上暴红,
- windows默认看图工具不见了
- Go第八篇之包的使用
- 小米AI魔法万花筒解密
- Be a Life-long Learner
- android 百度地图系列之添加覆盖物和覆盖物的点击事件
- 2020016433 潘弘鲲 第三次作业
- 【机器学习 - 8】:随机梯度下降法
- 计算机工程怎么评,美国电气与计算机工程专业怎么样?评价如何
- linux下查看服务器型号