当前位置:   article > 正文

11-NLP之Bert介绍和简单示例_nlp库 bert

nlp库 bert

1. Bert 介绍

官网访问:https://huggingface.co/

1.1 Bert 简介

在这里插入图片描述

1.2 注意力模型

注意力模型,可以参考知乎博客:https://zhuanlan.zhihu.com/p/37601161

即适合于图形和图像,也适合于自然语言处理。可以帮助我们快速识别重点。

例如在识别一张图片的时候,我们并不知道哪个地方是重点。在开始读一本书的时候,不知道哪个章节是重点。很快的进行一个全局的扫描,然后抓住了一些重要的部分,然后对该部分做精读、细读。以提高识别图片和阅读文章的效率。

这意味着神经网络阶段提高效率有两个方向:

  • 以用更多的高质量的海量数据,和更强的算力搭建更深层次的神经网络,来提升效果。
  • 若本身数据样本就不多,且算力也有限,在现有的资源的情况下,能不能提高注意力?把重点放到重要的特征上(例如图片中的人)。

在下面的图中,根据语言的提示,它很快就可以识别出哪部分是重要的,例如下图中的dog,意味着这些特征在后续会有更高的权重。
在这里插入图片描述
在经济学中我们常说“二八定律”,在认知学中有一个叫法“刻意练习”,这都是人类注意力模型的体现。
在这里插入图片描述
在这里插入图片描述
下图中 x 4 x_4 x4不仅受 x 3 x_3 x3的影响,还可能受 x 1 x_1 x1的影响。可以把LSTM理解成最原始的注意力。
在这里插入图片描述
拿到句子之后首先做分词,然后去词库中做相应的匹配和转换。在翻译Tom chase jerry的时候,最前面的这三个词,每个词的重要性很明显是不一样的。

一旦句子比较长的时候,用RNN就会有很大的问题,所以引入了LSTM。现阶段比LSTM更高级的就是注意力模型。
在这里插入图片描述
下面公式,有可能根据不同的词,权重参数是不一样的。
在这里插入图片描述
在这里插入图片描述
Bert已经将注意力模型封装好了,即使不知道其原理,也不影响使用。
在这里插入图片描述

1.2 Bert 操作示例

在这里插入图片描述
bert-base-chinese 一般可以用来做填词、情感分类等。
在这里插入图片描述
点击Compute
下面的案例是填词的作用。

在这里插入图片描述
下面的案例,判断——巴黎是法国的首都
在这里插入图片描述
还有别的模型,类似下面的【中英文翻译模型】
在这里插入图片描述
而这些预训练的模型,如果效果不好,我们也可以
这就很好的解决了小伙伴的迷惑,由于自然语言处理它的每个国家的语言比较复杂,而且某一门语言它所对应的需求也各式各样,所以才会出现针对不同的需求指定了不同的模型。即使我们使用了这个模型之后效果一般,我们可以像之前在深度学习那样,我们也叫做迁移学习,可以在现有的基础之上,去修改一些参数。

总而言之,有了Bert之后,它对于我们自然语言处理的精度效果有大大的提升。

2. 代码示例

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
input_ids = tokenizer.encode('欢迎来到Bert世界', return_tensors='tf')
print(input_ids)
  • 1
  • 2
  • 3
  • 4
  • 5

输出内容:

tf.Tensor([[ 101 3614 6816 3341 1168  100  686 4518  102]], shape=(1, 9), dtype=int32)
  • 1

2.1 代码流程

代码片段涉及到了使用transformers库来加载一个预训练的BERT模型的分词器,并用它来对一段文本进行编码。以下是整体流程和目的的分步说明:

  1. 导入AutoTokenizer类:
    from transformers import AutoTokenizer这行代码导入了transformers库中的AutoTokenizer类。这个类可以自动检测并加载与给定模型相对应的分词器(tokenizer)。

  2. 加载分词器:
    tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")这行代码创建了一个分词器的实例。from_pretrained方法用于加载预先训练好的分词器,这里是"bert-base-chinese",专门为中文文本设计的BERT模型的分词器。

  3. 文本编码:
    input_ids = tokenizer.encode('欢迎来到Bert世界', return_tensors='tf')这行代码用分词器将提供的中文字符串'欢迎来到Bert世界'转换成BERT模型能够理解的输入格式,即一系列的数字ID。每个ID对应原始文本中的一个词或子词单位。return_tensors='tf'指定返回的格式为TensorFlow张量。

  4. 打印输出:
    print(input_ids)这行代码输出编码后的input_ids。这个输出是用于后续的模型预测或者微调过程的输入。

    tf.Tensor([[ 101 3614 6816 3341 1168  100  686 4518  102]], shape=(1, 9), dtype=int32)
    
    • 1

目的:
这段代码的主要目的是为了准备数据,将自然语言文本转换为BERT模型可以接受的格式,这是使用BERT模型进行任务(如分类、问答等)前的标准步骤。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/573162
推荐阅读
相关标签
  

闽ICP备14008679号