《Sequential Short-Text Classification with Neural Networks》读书笔记
一、在Forward Sequential Short-Text Classification这章中主要介绍了一种通过利用文本序列信息来进行分类的方法
步骤:
1、短文本向量化:
(1)利用word2vec向量化短文本
(2)利用RNN或者CNN二次向量化文本
2、训练分类器
利用普通的FNN即可,X为一个长度为l的短文本序列
假设第一层输入是:s[i-d1-d2:i],输出是Y[i-d2:i]
其中输出Yj表示分类
第二层输入是:Y[i-d2:i],输出是Zi,表示该短文本属于该分类的概率,传播公式为:
3、相关参数
数据集:|C|是类的个数,|V|是词汇数、
参数设置:
4、实验结果
5、实验分析:
d1,d2分别代表文本向量化中句子序列化的个数与分类时序列化的个数,(0,0)代表向量化和分类时都不序列化,一个单词对应一个神经网络训练,如图2.3中的第一个。(0,2)代表向量化时不序列化,分类时相邻三个单词一起训练,如图2.3中的第二个。
从实验结果可以看出,当保持d1 = 0时,增加d2可以提升效果,但是保持d2 = 0时,增加d1不能提升效果。因此,在文本向量化的阶段不需要考虑单词序列之间的信息,因为原始由word2vec训练得到的词向量的高维度已经包含了很多信息。在训练分类器时考虑序列信息则可以提升训练效果。
二、Bidirectional Sequenial Short-Text Classification
模型图如下,此处缺少了优化层
数据集是文献的摘要,从摘要中分类每个句子属于总结、背景、方法等,共7个类:
OBJECTIVE、BACKGROUND、CONCLUSIONS、RESULTS、METHODS、START、END
1、模型
模型分为三层:Hybrid token embedding layer、Setence level prediction layer、label sequence optimization layer
Hybrid token embedding layer:该层的输入是令牌token x,Zi是x的特征。x经过向量化之后得到t,Zi经过向量化之后得到Ci,C1:l经过bi-lstm之后,两个方向最后一个时序的输出合并在一起,再和t合并在一起,得到E.
Setence level prediction layer:该层输入是E,输出经过bi-lstm训练两个方向最后一个时序输出的合并为s,s再输入一个FNN,经过训练后,得到每个分类的概率A1:n。
label sequence optimization layer:假定一个大句子中,每个子序列的标签之间有转换关系,则设定一个标签转换矩阵T,如下:
经过预测层得到的A1:n后,调用如下公式计算:
上面的公式表示:将每个子序列的令牌得到的标签分类结果ai[yi]加起来,然后再根据标签转换矩阵将得到的分类序列的转换之和求出来,两者之和为当前分类出来的标签序列的s(Y1:n)
这个是当前分类出来的序列的概率。优化层的目标就是最大化这个概率。由于这个概率的计算时间复杂度为O(n|C|^2),因此采用时间复杂度为O(|C|)的计算公式:
2、实验结果
由表3.4可知,当去除优化层时,效果会大大降低
3、对比实验
对比实验1:打乱文本序列,实验结果F1值84%,验证文本序列信息的作用
对比实验2:去除文本中双括号的内容,实验结果F1值89.9,验证双括号内容对于实验效果没有帮助