BiLSTM-CRF模型的流程

本文详细探讨了如何使用LSTM进行词向量表示,并结合CRF进行序列标注,包括数据预处理、模型构建、训练与推理步骤。重点介绍了数据转换为词向量、LSTM参数理解、CRF在计算过程中的作用,以及整个训练和推理流程。
摘要由CSDN通过智能技术生成

1、原始数据集  训练集、测试集 两个

标题数据目录

 

2、获取数据路径

 3、读取数据

2、要得到两个列表和两个字典

        2.1、两个列表

         2.2、两个字典

 

3.1、定义自己的Dataset 

3.2、定义自己的DataLoader

 得到三个矩阵 要输入模型 数量的时候要的数据

 4、模型

        数据计算流程:

        4.1:先将模型的梯度值清零。梯度值:就是loss的数值

                生成词向量

                现将数值型句子进行词向量

        (1)、结果

        x_list进行词向量前     维度 4×82 四句话 最长的82个字                                  

        

        x_list进行词向量后    维度 4×82×16  四句话 最长的82个字  16维度词向量    

        

         (2)、代码

        #padding_idx 默认是0  #  最终向量中的值为0的继续嵌入为0,如果设置为3的话,
        那么向量中值为3的位置的向量也将嵌入为0

         

         4.2:进入LSTM进行训练

        (1)、LSTM参数的认识

                1:

         (2)、LSTM模型数据计算的流程

                        1、得到词向量的表达形式,

                        2、进过线性层(矩阵),训练矩阵里面的数值,(所谓的参数)

                                hidden_size() He num_layers

                        3、加上前一时刻的信息生成新矩阵

                        4、在进行激活函数函数

                                Linear()

                        5、加和隐藏层矩阵相乘形成旧信息(训练里面的数值(参数))

           (3)、在进行激活函数前得到的矩阵维度为(句子数:序列最大长度:隐藏层维度)

                   在进行激活函数前得到的矩阵维度为(句子数:序列最大长度:标签数(类别))

         (4)、在经过CRF得到损失值。CRF的作用

                        CRF的作用是给每一个可能的标注序列算一个分数,通过训练,

                        使得那个唯一的真实标签序列得分最高。

                        目标是让Prob尽可能大,损失函数是:

        (5)、标注序列的分数由两部分组成,一个是发射分数,一个是转移分数

                        发射分数:序列经过全连接激活函数后,得到的每个字各个标签的概率,        

                                               就是发射分数,其实就是一个(字个数:标签个数)矩阵

                        转移分数:是不同标签之间转移的分数值,是一个(标签个数:标签个数)矩阵

                        最终分数:      

                                假设标注序列是(L1,L2,...,Ln),L是label的首字母。

                                首先从发射分数矩阵中找出w1字符是L1的概率,依次类推,

                                找出所有字符的相应概率,加在一起,就是该序列的发射分数。

                                从转移分数矩阵中找出L1转移到L2的概率,依次类推,

                                找出该序列中所有相邻标签的转移概率,加在一起,

                                就是该序列的转移分数。

                               上述二者相加,就是该标注序列的最终分数了。

         (6)、 CRF计算流程

                        1、得到激活函数得到的矩阵

                        2、在和DataLoader得到的        另外两个矩阵,上面(y_list和mask_list)

                              得到损失值       

         (7)、代码

                      

5、训练流程以及推理

        5.1:训练流程

                (1)、设置训练次数

                (2)、梯度清零

                (3)、前向运算

                (4)、计算损失

                (5)、反向传播、梯度更新

                (6)、进行纪录损失值以及推理准确率

        5.2:训练代码

            

6、推理以及代码

        6.1:推理流程

                1:关闭反向传播

                2:将x_list进行前向传播得到预测的y

                3:记录并计算批次中准确率

        6.2:代码

                        

         6.3:真实标签中实体标记匹配——代码

                        

1、总结。

(1):RNN输入想要的是什么样的数据

        数据的处理:字变词向量  word2ver 

                流程:1、词库,或者字库  (确定是以词为单位还是字) 数量n

                           2、词向量维度  设置每个词所对应的维度                维度100

                           3、生成3个   打包生成矩阵(n×100的矩阵),word_2_index, indec_2_word

        需要的数据 5句话,每句长31,词向量维128。一个三维向量

(2):数据在LSTM里面是怎么样计算的   这个是分类任务需要的

        

(3):最终得到的数据是什么样的

(4)、代码

      

          

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值