直接看代码:github传送门
数据集:Classify the sentiment of sentences from the Rotten Tomatoes dataset
特征表示:Bag-of-Word,N-gram
- Bag-of-Word:词袋模型,根据语料建立词典vocab,词典中每个单词有一个index,M为词典的大小,将句子表示为一个M维向量,每一维的值对应该索引对应的单词在句子中出现与否或者出现的次数。这种特征表示不考虑单词出现的先后顺序,丢失了重要的语义信息。
- N-gram:相比于词袋模型,N-gram将N个单词联合起来看作一个特征,例如2-gram,则语料库中所有两个挨着出现过的单词联合看作一个特征,相比于词袋模型,可把N-gram理解为在构建词典时将多个单词联合出现看作特征,最后构建特征向量时和词袋模型相同。这种特征表示考虑了部分单词的先后顺序,随着N的增大词典的规模会暴增,所以这样的处理方式不能捕获长程依赖。
模型详解:输入数据 X X X,维度NxM,每一行是一个样本,y是X中N个样本对应的标签,为了方便计算将标签转化为独热码,维度NxK,参数W,维度KxM,(下面用 W i W_i Wi表示 W [ i ] W[i] W[i]),X中句子共有K个类别,第 i i i个样本被预测为c类的概率计算公式如下:
y ^ i c = P ( y i = c ∣ X i ) = e x p ( W c X i T ) ∑ m = 1 K e x p ( W m X i T ) \hat{y}_{ic}=P(y_i=c|X_i)=\frac{exp(W_cX_i^T)}{\sum_{m=1}^{K}exp(W_mX_i^T)} y^ic=P(yi=c∣Xi