HAN文本分类与tensorflow实现

1. 引言

    前面介绍了LSTM_CNN、RCNN等文本分类方法,这几种方法都是将整个文本进行encoder,但是我们知道,RNN对于长句子或长文档其实编码能力是有限的,会丢失掉句子中的信息,因此,为了克服这个问题,Nikolaos等人在2017年提出了一个新的文本分类模型——HAN,该模型采用层叠的RNN,对文本的句子级别进行encoder,并且引入了神经机器翻译中的注意力机制,可以有效地解决长句子的分类难问题,本文将对该模型进行具体介绍,并用tensorflow来实现它。

2. HAN模型结构介绍

2.1 HAN模型结构

    HAN模型总共包含三层,分别是词汇层、句子层和输出层,其中词汇层和句子层都包含一层encoder和一层attention层。其结构如图1所示。

图1 HAN模型结构

2.1.1 词汇层

    在词汇层,HAN首先将文本分为K个句子,每个句子的长度为T,然后在词汇层,每个句子分别会进入一层encoder层和一层attention层,最终得到该句子的一个向量表示s_i。记数据集为D=\left\{ \left( x _ { i } , y _ { i } \right) , i = 1 , \ldots , N \right\},其中N表示数据集的大小,x _ { i } = \left\{ w _ { 11 } , w _ { 12 } , \ldots , w _ { K T } \right\}表示文本的词汇序列,y _ { i } \in \{ 0,1 \} ^ { k }表示文本的标签。

    在encoder时,记g _ { w }为encoder层的变换函数,则对于一个文本中的第i个句子\left\{ w _ { i t } | t = 1 , \ldots , T \right\},经过encoder后得到每个时间步的隐藏状态为:

                                                            h _ { w } ^ { ( i t ) } = \left\{ g _ { w } \left( w _ { i t } \right) | t = 1 , \ldots , T \right\}

    这里的encoder可以是GRU或LSTM,也可以是双向的GRU或LSTM,如果是选择双向的GRU或LSTM时,则需要对前向和后向的隐藏状态进行拼接:

                                                            h _ { w } ^ { ( i t ) } = \left[ \overrightarrow { g } _{w}\left( w_{it} \right) ; \overleftarrow { g } _{w}\left( w_{it} \right) \right]

    接着,对于每个句子得到隐藏状态,会经过一层attention层,attention层会对各个时间步的隐藏状态进行加权平均,从而得到该句子的向量表示s_i,其计算公式如下:

                                                            

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值