NLP-Task1:基于机器学习的文本分类

该文详细介绍了如何使用Logistic/Softmax Regression进行文本情感分类,涉及数据预处理(Bag-of-Words, N-gram)、损失函数、梯度下降等关键步骤,并通过实验分析不同特征、损失函数和学习率对模型性能的影响。实验结果显示,模型在训练集上可能过度拟合,而在测试集上的表现一般。

NLP-Task1:基于机器学习的文本分类

实现基于logistic/softmax regression的文本分类

数据集:Classify the sentiment of sentences from the Rotten Tomatoes dataset
网盘下载链接见文末

  • 需要了解的知识点:
    • 文本特征表示:Bag-of-Word,N-gram
    • 分类器:logistic/softmax regression,损失函数、(随机)梯度下降、特征选择
    • 数据集:训练集/验证集/测试集的划分
  • 实验:
    • 分析不同的特征、损失函数、学习率对最终分类性能的影响
    • shuffle 、batch、mini-batch
本文参考:NLP-Beginner 任务一:基于机器学习的文本分类(超详细!!

一、工作简介

1.1 主要内容

利用softmax regression对文本情感进行分类

1.2 数据集

训练集共156060条英文评论,情感分共0-4类
在这里插入图片描述

二、特征提取(Feature extraction)

2.1 词袋特征(Bag-of-word)

词袋模型即所有单词相互独立

在一句话中,存在于句子的单词 (不区分大小写),则对应的向量位置上的数字为1,反之为0,通过这种方式,可以把一个句子变成一个由数字表示的0-1向量。虽然转换方式非常简单,但是它没有考虑词序

  • 词袋:i, you, him, her, love, hate, but
  • 句子:I love you
  • 向量:[1,1,0,0,1,0,0]

2.2 N元特征(N-gram)

N元特征考虑词序,如当N=2时,I love you不再看作是I, love, you这三个单词,而是 I love, love you 这两个词组

通常来说,使用N元特征时,会一并使用1, 2, …, N-1元特征,数据量大的输入时,较大的N会导致结果模型训练极度缓慢

  • 特征(N=1&2):i, you, him, her, love, hate, but, i-love, i-hate, love-you, hate-you, you-but, but-love, but-hate, love-him, hate-him
  • 句子:I love you
  • 向量:[1,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0]

三、Softmax Regression

3.1 softmax介绍

给定一个输入x,输出一个y向量,y的长度即为类别的个数,总和为1,y中的数字是各类别的概率

  • 0-4共五类,则 y = [ 0 , 0 , 0.7 , . 25 , 0.05 ] T y=[0,0,0.7,.25,0.05]^T y=[0,0,0.7,.25,0.05]T表示类别2的概率为0.7,类别3的概率为0.25,类别4的概率为0.05

公式:

p ( y = c ∣ x ) = s o f t m a x ( w c T x ) = e x p ( w c T x ) ∑ c ′ = 1 C e x p ( w c T x ) p(y=c|x)=softmax(w^T_cx)=\frac{exp(w^T_cx)}{\sum_{c'=1}^Cexp(w^T_cx)} p(y=cx)=softmax(wcTx)=c=1Cexp(wcTx)exp(wcTx)

其中 w c w_c wc是第 c c c类的权重向量,记 W = [ w 1 , w 2 , . . . , w C ] W=[w_1,w_2,...,w_C] W=[w1,w2,...,wC]为权重矩阵,则上述公式可以表示为列向量:

y ^ = f ( x ) = s o f t m a x ( W T x ) = e x p ( W T x ) 1 ⃗ c T e x p ( W T x ) \hat{y}=f(x)=softmax(W^Tx)=\frac{exp(W^Tx)}{\vec{1}^T_cexp(W^Tx)} y^=f(x)=softmax(WTx)=1 cTexp(WTx)exp(WTx)

y ^ \hat{y} y^ 中的每一个元素,代表对应类别的概率,接下来求解参数矩 W W W

3.2 损失函数

用损失函数对模型的好坏做出评价

在此选择交叉熵损失函数,对每一个样本n,其损失值为:

L ( f W ( x ( n ) ) , y ( n ) ) = − ∑ c = 1 C y c ( n ) l o g y ^ c ( n ) = − ( y ( n ) ) T l o g y ^ ( n ) L(fW(x^{(n)}),y^{(n)})=-\sum_{c=1}^Cy_c^{(n)}log\hat{y}_c^{(n)}=-(y^{(n)})^Tlog\hat{y}^{(n)} L(fW(x(n)),y(n))=c=1Cyc(n)logy^c(n)=(y(n))Tlogy^

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值