一机器学习,深度学习实现NER(序列标注)
1.1机器学习和深度学习完成NER(序列标注)
相同点:二者都需要对句子里面的对象进行标注
不同点:传统机器学习需要人工对对象特征标注,深度学习则是把分词后的结果转向量自己学习特征.
传统机器学习的缺点是每个词都需要人工标注特征,严重依赖人工设计的特征,机器学习常用的标注方法是bio.,常用的模型是CRF.
深度神经网络最常用的是BILSTM+CRF模型,缺点是训练模型需要大量人工标记的数据
1.2线性链条件随机场
给定线性输入序列x,输出线性序列Y.每个位置的标签只和相邻的标签以及本身x有关,和其他无关.
二:基于深度学习完成NER
2.1单条路径分数计算
发射分数权重矩阵的维度是(字符数,标签数),转移分数的权重矩阵是(标签数,标签数).
Eg:
最优路径的分数计算:(图上画错了,画了两个t10)
B-Person:E00+0.93
I-Person:E11+0.66
...........
最后相加可以得到单条路径的分数
2.2全部路径分数计算
路径总共有5**4条,路径数量很多,全部算出来很耗费资源.需要使用前向算法的动态规划.
三Viterbi算法解码
3.1viterbi算法作用
CRF计算所有路径分数得到分数矩阵以后,需要使用viterbi解码的方式获取得分最高的那条路径
3.2viterbi算法原理
前向算法寻找最短路径的方法:
viterbi算法寻找最短路径:
从A序列到B1有三条路径,选择最短路径
其他同上
得到三条路径:
同上,得到b到c序列的路径:
最后得到三条路径.
viterbi算法相较于前向的算法优势在于:只关注最优线路,而不是所有线路.
3.3viterbi解码在CRF模型中的应用
面试题:viterbi算法的复杂度和前向计算算法的复杂度分别是多少?
viterbi算法每列计算M*2次,复杂度为N*M**2
前向传播算法复杂度为M**N