自然语言处理笔记
自然语言处理笔记 第三章 隐马尔科夫模型与序列标注-CSDN博客
自然语言处理笔记 第五章 条件随机场与序列标注-CSDN博客
分类问题
二分类,多分类
NLP中的应用:
关键词提取:判断一个词是不是关键词:二分类
指代消解:对每个代词和每个实体判断是否存在指代关系:二分类
线性模型分类与感知机
线性模型是最简单常用的分类模型,用一条直线或高维平面将数据一分为二
描述样本特征的向量称为特征向量
构造特征向量的过程称为特征提取
用来提取每种特征的函数称为特征函数
独热(onehot)编码:
特征向量的每个维度代表一个特征,如上面例子就是onehot:两个特征、二维向量。在特征很多时,有稀疏性。
决策边界划分出决策区域。二维空间中,产生该决策边界的模型称为线性分类模型,高维空间的称为分离超平面
感知机算法:解决线性分类
1.读入训练样本(x(i),y(i)) ,执行预测y=sign(w⋅x(i))
2.如果y≠y(i) ,则更新参数w←w+y(i)x(i)
解释第二步:
如果数据本身线性不可分,感知机算法是不会收敛的,每次迭代参数会剧烈震荡,解决方案有:
1将样本映射到更高维空间,使其线性可分
2切换其他训练算法,比如支持向量机等
3使用投票感知机与平均感知机
(1)投票感知机:储存多个模型,预测时每个模型都给出各自的结果,加权取平均:准确率(权重)*模型结果
(2)平均感知机是取多个模型的权重的平均,不需要保存多个模型,只需要保留平均后的模型
实例:基于感知机的人名性别分类
标注人名分类语料库(将名字的第1,2个字作为特征);
利用感知机算法训练线性模型;
利用线性模型给人名分类,评估准确率
结构化预测问题
定义:
对于回归问题,这个函数输出一个标量;对于分类问题,这个函数输出一个类别(一个one-hot的向量)。而结构化预测的输出复杂得多,是有结构的输出,比如,一个序列,一个句子,一个图,一颗树。
预测值y :
对序列中的连续标签提取如下转移特征:
设S0=BOS, 表示序列第一个元素之前的虚拟标签
转移特征编号:k=i*N+j, 共有(N+1)*N种转移特征
定义每个时刻的状态特征为:
具体状态特征什么时候为1,取决于特征模版
结构化感知机的特征函数定义为:
K∈[0, (N+1)*N],l ∈[(N+1)*N+1,…] (即,l 的编号顺着k往后取)
权重w :
应用:
通过维特比算法(正向递推求路径长度,反向回溯求最优路径)
多线程:
将训练集平均分为𝑚份分配给各线程所创建的共计𝑚个线性模型
这些线性模型共享特征函数却拥有独立的权重向量
训练结束后主线程负责将这𝑚个权重向量平均,返回平均后的模型
特征裁剪,模型压缩:
独热编码特征利用率低,浪费空间时间。
解决方法:将特征按区分能力排序,去掉一定比例的低能力特征。模型体积的减小量一般大于这个比例。
实验证明特征裁剪对准确率的影响很低。
准确率与性能
模型调整:
词典内容太多太细反而容易出现歧义词
因此:长词适合在词典中加入,短的易引发歧义的词,通过标注语料库,训练模型解决
在线学习(更加灵活):
以前讨论的都是批量学习,就是给了一堆样例后,在样例上学习出假设函数h。而在线学习就是要根据新来的样例,边学习,边给出结果。