根据标签的数据对数据处理
模型选择
BILSTM+CRF
为什么选择加CRF
CRF特征特征提取函数变成了BILSTM
化目标变了
真实序列最大概率化全局的(真除以所有的可能),并且学习到当前时刻的状态与其他状态的关系
分母是真实序列的值 所有可能的隐状态的序列值求和 全局归一化
损失函数包括两部分:真实序列的分值 -所有序列的分值求指数再求和再求对数
所有可能的隐状态的序列值求和 使用前向算法 RNN
每一时刻最归一化是局部 HMM
最终的损失函数是真实序列的分数-指数和再进行对数计算
加了CRF优化的目标函数已经变了发射矩阵分数+转移矩阵分数
学习了一个转移矩阵,也就是约束条件
是真实序列的概率最大化
优
预测使用维特比算法
求所有可能的隐状态的序列值 最大的值
实现
标签加了两个 start end 给的值1000 对数函数图像接近为0
时刻也加了两个,其他为-10000 start为1 第一个为位置肯定是start 最后肯定是stop
为什么模拟了一个初始概率 最后一个肯定是end
一句话先求每一时刻的 最后求所有时刻的和
求指数
标签例如58中 这58中分别求指数 在求和 在log
分值最大的序列求出路径
损失函数第一项分值
类似RNN
先初始化一个转移1矩阵 使得只能从start开始
定义前向变量forawrd
for循环遍历每一句话的每一时间步的分数 保存 变量时间步列表 左后cat 求和 再经过指数 求和log函数得到第一句话的分值
损失函数第二项分值
在真实标签指导下求得的分数
定义一个score为累加做准备
为真实标签列表拼接一个start列表
编写损失函数的函数
forward使用位特比啊求解
别写评估函数
取出真实的标签
取出预测的标签
对比预测的 在真实的标签有多少
88
93
90
训练
预测
先将文本做char2id