目录

  • 什么是Bert
  • Bert能干什么?
  • Bert和TensorFlow的关系
  • BERT的原理
  • Bert相关工具和服务
  • Bert的局限性和对应的解决方案

沉舟侧畔千帆过, 病树前头万木春. 今天介绍的是NLP新秀 - Bert.

什么是Bert

一年多之前, 那是2018年的一个秋天(10月11日), 谷歌AI团队新发布了BERT模型,在NLP业内引起巨大反响,认为是NLP领域里程碑式的进步。BERT模型在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:全部两个衡量指标上全面超越人类,并且还在11种不同NLP测试中创出最佳成绩,包括将GLUE基准推至80.4%(绝对改进7.6%),MultiNLI准确度达到86.7%(绝对改进率5.6%)等。

Bert的官网是: https://github.com/google-research/bert

Bert能干什么?

Bert能显著提升智能客服系统的表现, 因为Bert在智能客服系统所需要的如下技术和模块中都表现优越:

• 问答 Question Answering (SQuAD v1.1)

• 推理 Natural Language Inference (MNLI)

除了智能客服系统外, Bert还可以用于以下系统和任务中:

• 问答系统

• 命名实体识别

• 文档聚类

• 邮件过滤和分类

• 情感分析

Bert和TensorFlow的关系

那Bert和大名鼎鼎的TensorFlow有什么关系呢?

1. Bert是一个模型, 不是一个工具. TensorFlow是一个工具.

2. Bert这个模型可以在TensorFlow这个工具里实现.

3. 可见, 这两者不是一个维度的东西, 并不是竞争对手, 所以Bert的推出会取代TensorFlow绝对是一个谣言.

BERT的原理

BERT的创新点在于它将双向 Transformer 用于语言模型,

之前的模型是从左向右输入一个文本序列,或者将 left-to-right 和 right-to-left 的训练结合起来。

实验的结果表明,双向训练的语言模型对语境的理解会比单向的语言模型更深刻,

论文中介绍了一种新技术叫做 Masked LM(MLM),在这个技术出现之前是无法进行双向语言模型训练的。

BERT 利用了 Transformer 的 encoder 部分。

Transformer 是一种注意力机制,可以学习文本中单词之间的上下文关系的。

Transformer 的原型包括两个独立的机制,一个 encoder 负责接收文本作为输入,一个 decoder 负责预测任务的结果。

BERT 的目标是生成语言模型,所以只需要 encoder 机制。

Transformer 的 encoder 是一次性读取整个文本序列,而不是从左到右或从右到左地按顺序读取,

这个特征使得模型能够基于单词的两侧学习,相当于是一个双向的功能。

Bert相关工具和服务

那么Bert有没有开箱即用的工具和服务呢?

有的, 比如bert-as-service: https://github.com/hanxiao/bert-as-service

现在让我们来走一遍bert-as-sevice吧. (我用mac, 所以以下所用命令会和在windows下不一样, windows的朋友请自行调整)

第一时间想到的最简单、快速、方便的方法当然是去docker hub上拉一个最新的image啦,然而docker hub上的bert-as-service太旧了,不得不放弃了,我们还是使用传统方法来安装吧。

先要确认安装了:

1. 打开vs code, 建立好bert目录. 在bert目录右键打开命令区

2.  先建立python虚拟环境, 输入命令: python3 -m venv bert-env

3.  安装server: pip install bert-serving-server

4.  安装client: pip install bert-serving-client

5. 下载Download a Pre-trained BERT Model一节里的模型。我选择了BERT-Large, Cased https://storage.googleapis.com/bert_models/2018_10_18/cased_L-24_H-1024_A-16.zip. 如果需要对中文做处理的推荐 https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip

6. 新建一个model文件夹,下载后解压到这个model文件夹里。

7. 启动BERT service: bert-serving-start -model_dir /model/cased_L-24_H-1024_A-16/ -num_worker=4

如果运行报错, 大概率是版本不对, 可以指定绝对路径来确保你调用的是正确的版本

Bert的局限性和对应的解决方案

说得这么牛,那么Bert有什么局限性吗?

万事万物是不可能完美的,Bert当然也有其局限性,Bert只适合处理数百个单词,所以用来做智能、 问答系统、命名实体识别、文档聚类、邮件过滤和分类、情感分析等一般只有几百个单词的人工智能系统是很适合的。

但是Bert不能处理成千上万个单词,所以不适用于书籍、合同等大量文本。如果需要处理书籍、合同等大量文本,推荐使用Google的另一个模型:Reformer。

Reformer模型能够处理多达100万字的环境,从目前的实际应用来讲,面向百字的Bert + 面向万字的Reformer组合基本能够横扫整个NLP领域了。

不得不说,Google真的是牛,不但连续拿到了互联网、移动互联网、人工智能等领域的门票。现在还针对NLP各个子领域推出相应技术和产品。这样下去,Google又在NLP届全领域占领了!

自从Google在2016年AlphaGo下赢围棋以来,推出Tensorflow,又在Tensorflow上面推出一堆模型,战略布局很赞,这盘大棋下得真好!

最后以一句话结束此文, 学习让我青春, 学习让我年轻 -> 不断地学习让我永葆青春.

NLP新秀 - Bert的更多相关文章

  1. 站在BERT肩膀上的NLP新秀们(PART I)

    站在BERT肩膀上的NLP新秀们(PART I)

  2. 最强NLP模型-BERT

    简介: BERT,全称Bidirectional Encoder Representations from Transformers,是一个预训练的语言模型,可以通过它得到文本表示,然后用于下游任务, ...

  3. NLP采用Bert进行简单文本情感分类

    参照当Bert遇上Kerashttps://spaces.ac.cn/archives/6736此示例准确率达到95.5%+ https://github.com/CyberZHG/keras-ber ...

  4. 语言模型预训练方法(ELMo、GPT和BERT)——自然语言处理(NLP)

    1. 引言 在介绍论文之前,我将先简单介绍一些相关背景知识.首先是语言模型(Language Model),语言模型简单来说就是一串词序列的概率分布.具体来说,语言模型的作用是为一个长度为m的文本确定 ...

  5. 自然语言处理中的语言模型预训练方法(ELMo、GPT和BERT)

    自然语言处理中的语言模型预训练方法(ELMo.GPT和BERT) 最近,在自然语言处理(NLP)领域中,使用语言模型预训练方法在多项NLP任务上都获得了不错的提升,广泛受到了各界的关注.就此,我将最近 ...

  6. Paper: 《Bert》

    Bert: Bidirectional Encoder Representations from Transformers. 主要创新点:Masked LM 和 Next sentence predi ...

  7. BERT的几个可能的应用

      BERT是谷歌公司于2018年11月发布的一款新模型,它一种预训练语言表示的方法,在大量文本语料(维基百科)上训练了一个通用的"语言理解"模型,然后用这个模型去执行想做的NLP ...

  8. 基于Bert的文本情感分类

    详细代码已上传到github: click me Abstract:    Sentiment classification is the process of analyzing and reaso ...

  9. 学习AI之NLP后对预训练语言模型——心得体会总结

    一.学习NLP背景介绍:      从2019年4月份开始跟着华为云ModelArts实战营同学们一起进行了6期关于图像深度学习的学习,初步了解了关于图像标注.图像分类.物体检测,图像都目标物体检测等 ...

随机推荐

  1. Bandicam(班迪录屏)高清视频录制工具

    Bandicam(班迪录屏)简单好用的录屏幕,录游戏,录视频的功能强大的屏幕录像软件,比起其他软件其性能更加卓越. 与其他软件相比,用Bandicam录制的视频大小更小, 不仅保证原文件的质量.

  2. UML之类之间的关系

    UML 简介 统一建模语言(Unified Modeling Language,UML) 作用:对软件系统进行说明 如果说软件系统是一本小说的话,那么 UML 就是将小说动漫化. 也许你看过这本小说, ...

  3. Magicodes.IE之Excel模板导出教材订购表

    说明 本教程主要说明如果使用Magicodes.IE.Excel完成教材订购表的Excel模板导出. 要点 本教程使用Magicodes.IE.Excel来完成Excel模板导出 需要通过创建Dto来 ...

  4. 【转】提升你的Java应用性能:改善数据处理

    提升你的Java应用性能:改善数据处理 作者:贾小骏  发布于07月26日 10:17 许多应用程序在压力测试阶段或在生产环境中都会遇到性能问题.如果我们看一下性能问题背后的原因,会发现很多是由数据处 ...

  5. windows创建git并连结github

    1.下载跟自己系统相对应的git版本 2.默认安装 3.绑定用户 git config --global user.name ""git config --global user. ...

  6. JDBC超时设置【转】

    恰当的JDBC超时设置能够有效地减少服务失效的时间.本文将对数据库的各种超时设置及其设置方法做介绍. 真实案例:应用服务器在遭到DDos攻击后无法响应 在遭到DDos攻击后,整个服务都垮掉了.由于第四 ...

  7. python sys.modules 和 sys.path 及 __name__

    1.sys.modules 存放已经缓存的模块 值是dict 2.sys.path 搜索路径 值是list 3.if __name__= __main__ 可以看成python的程序入口,如果直接执行 ...

  8. [bzoj4417] [洛谷P3990] [Shoi2013] 超级跳马

    Description 现有一个n行m列的棋盘,一只马欲从棋盘的左上角跳到右下角.每一步它向右跳奇数列,且跳到本行或相邻行.跳越期间,马不能离开棋盘.例如,当n = 3, m = 10时,下图是一种可 ...

  9. Ubuntu中部署Django项目的配置与链接MySQL

    Django的简介 MVT模式的介绍创建项目的虚拟环境 本次使用的是pip安装 一.更新 sudo apt update 二.安装pip sudo apt install python3-pip 三. ...

  10. python + selenium定位页面元素的办法

    1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的 ...