本文参考于吴恩达NLP专项课程—有监督学习 & 情感分析
在有监督机器学习中,你需要有输入特征X以及特征的标签Y
目标是尽可能地减小损失值
将特征X输入给prediction function,将实现特征X输出为预测标签Y_hat
当标签Y和预测值Y_hat差异值较小时,可以实现从特征到标签的最佳映射
损失函数Cost计算Y_hat和Y之间的差异
通过计算的损失值来更新参数,迭代重复至损失值为一个较理想的值
逻辑回归的函数为sigmoid函数
情感分析的有监督机器学习分类问题例子:
目的是辨别tweet文本中的语句是积极的还是消极的情感
建立逻辑回归分类器模型,我们分为3个步骤:提取特征, 训练,预测:
tweet文本中带有积极正面情感标记为1,带有消极负面情感标记为0
处理原tweet文本为训练数据集并且提取有用的特征
训练逻辑回归分类器模型并减小损失值
预测
特征提取
稀疏矩阵表示
为了将一个文本转化为向量表示,我们需要建立一个词汇表Vocabulary,然后能够将任何文本或则tweet转化为数组矩阵
词汇表V将会以列表形式存储tweet中的不同单词
利用稀疏矩阵存储,在$tweet$中出现的单词词汇表V将会赋予1,而未出现的单词赋予0
稀疏矩阵存在的问题:
逻辑回归模型将会学习N+1个参数,N是词汇表V的大小
耗费巨大的训练时间
耗费巨大的预测时间
2.分别统计消极负面和积极正面的频率
从tweet语料库中不同的单词建立词汇库V
建立两个类别,一个类别是消极负面情感,另一个类别是积极正面情感
在词汇表V中计算积极单词的频率,需要统计它在积极正面的tweet文本中出现的次数,计算消极单词的频率一致
实际上在编码时,此表是一个字典,将单词及其对应的类别映射到频率,例如单词I,{(I,PosFreq):3,(I,NegFreq):3}
使用字典提取有用的特征以进行情感分析,使用维度=3的向量表示tweet
即:[偏置=1,tweet中不同单词的正频率总和, tweet中不同单词的负频率总和]
预处理
使用词干化stemming以及停顿词stop words对文本进行预处理
首先,我们移除在tweets中不会带有重要含义的单词或则符号,例如停顿词,标点符号
在某些情况下,不必移除标点符号。因此,需要仔细考虑标点符号是否会为你的NLP任务添加重要信息
NLP中的词干化只是简单的把单词转化为其基本的单词
训练逻辑回归模型
训练逻辑回归分类器,迭代至损失值小于阈值时得到的参数theta
训练的算法叫梯度下降
测试逻辑回归模型
你需要X_val和 Y_val,即验证集数据
首先,利用theta和X_val,即pred=h(X_val,theta),其中h=sigmoid函数
其次,评估pred是否大于等于阈值,通常阈值设置为0.5
最后在验证集上评估模型的准确率
损失函数
大家有兴趣可以下载课程的作业,实现一下。作业下载地址:https://github.com/tsuirak/deeplearning.ai