1. 引言
前面介绍了LSTM_CNN、RCNN等文本分类方法,这几种方法都是将整个文本进行encoder,但是我们知道,RNN对于长句子或长文档其实编码能力是有限的,会丢失掉句子中的信息,因此,为了克服这个问题,Nikolaos等人在2017年提出了一个新的文本分类模型——HAN,该模型采用层叠的RNN,对文本的句子级别进行encoder,并且引入了神经机器翻译中的注意力机制,可以有效地解决长句子的分类难问题,本文将对该模型进行具体介绍,并用tensorflow来实现它。
2. HAN模型结构介绍
2.1 HAN模型结构
HAN模型总共包含三层,分别是词汇层、句子层和输出层,其中词汇层和句子层都包含一层encoder和一层attention层。其结构如图1所示。
2.1.1 词汇层
在词汇层,HAN首先将文本分为个句子,每个句子的长度为,然后在词汇层,每个句子分别会进入一层encoder层和一层attention层,最终得到该句子的一个向量表示。记数据集为,其中表示数据集的大小,表示文本的词汇序列,表示文本的标签。
在encoder时,记为encoder层的变换函数,则对于一个文本中的第个句子,经过encoder后得到每个时间步的隐藏状态为:
这里的encoder可以是GRU或LSTM,也可以是双向的GRU或LSTM,如果是选择双向的GRU或LSTM时,则需要对前向和后向的隐藏状态进行拼接:
接着,对于每个句子得到隐藏状态,会经过一层attention层,attention层会对各个时间步的隐藏状态进行加权平均,从而得到该句子的向量表示,其计算公式如下: