任务十一 BERT

目录

如何运行tensorflow

Transformer

decode和encode

attention机制

Transformer总体结构 

​编辑

bert代码

读取数据集(预处理)

数据预处理模块

基于BERT的中文情感分析

修改传入参数(路径 相对路径)

修改数据读取的代码


如何运行tensorflow

Transformer

decode和encode

decode encode
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gbk编码的字符串str1转换成unicode编码。encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘gb2312’),表示将unicode编码的字符串str2转换成gbk编码。

attention机制

attention是一种能让模型对重要信息重点关注并充分学习吸收的技术,它不算是一个完整的模型,应当是一种技术,能够作用于任何序列模型中。

Transformer总体结构 

Transformer模型中也采用了 encoer-decoder 架构 

 每一个encoder和decoder的内部简版结构

对于encoder,包含两层,一个self-attention层和一个前馈神经网络,self-attention能帮助当前节点不仅仅只关注当前的词,从而能获取到上下文的语义。decoder也包含encoder提到的两层网络,但是在这两层中间还有一层attention层,帮助当前节点获取到当前需要关注的重点内容。

模型的内部细节。

首先,模型需要对输入的数据进行一个embedding操作,(也可以理解为类似w2c的操作),enmbedding结束之后,输入到encoder层,self-attention处理完数据后把数据送给前馈神经网络,前馈神经网络的计算可以并行,得到的输出会输入到下一个encoder。

bert代码

读取数据集(预处理)

如果是自定义的数据集还需要手动的修改代码

get_train_example(把数据一行一行读进来)

num_train_step 迭代次数

num_warmup_steps 还原学习率

数据预处理模块

把数据写成tfrecord文件

 核心函数 

 构建标签

切分词 wordpiece

 

添加分隔符 CLS SEP SEP 

 通过索引来找词

 方便写进tfrecord的操作(这一部分是在file_based_convert_examples_to_features函数里)

 写进tfrecord里

基于BERT的中文情感分析

修改传入参数(路径 相对路径)

修改数据读取的代码

class MyDataProcessor(DataProcessor  ):
  """Base class for data converters for sequence classification data sets."""

  def get_train_examples(self, data_dir):
    """Gets a collection of `InputExample`s for the train set."""
    file_path=os.path.join(data_dir,'train_sentiment.txt')
    f=open(file_path,'r',encoding='utf-8')
    train_data=[]
    index=0
    for line in f.readlines():
        guid="train-%d"%(index)
        line=line.replace('\n','').split('\t')
        text_a=tokenization.convert_to_unicode(str(line[1]))
        lable=str(line[2])
        train_data.append(
            InputExample(guid=guid,text_a=text_a,text_b=None,lable=lable)
        )
    return train_data

返回标签是 '0' '1' '2'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值