20.17 文本分类
问题描述
对文本数据分类。
解决方案
使用长短期记忆递归神经网络:


讨论
我们经常会遇到文本数据分类的问题,尽管可以使用一种卷积神经网络来实现,但本节将聚焦于一个更流行的选择:递归神经网络。递归神经网络有一个关键特性,即信息在网络中回环,这让递归神经网络拥有一种记忆,使它可以更好地理解顺序数据。一种流行的递归神经网络是长短期记忆递归(Long Short-Term Memory,LSTM)神经网络。关于LSTM更详细的解释请参考其他相关资料。
在解决方案中,我们使用了20.3节的影评数据,想训练一个LSTM神经网络来预测这些影评是正面的还是负面的评价。在训练网络之前,需要对数据进行一些处理。我们的文本数据是一个整数列表:

列表中的每个整数对应一个词,但是因为每条影评包含的词的数量不一样,所以对应的样本长度不一。因此,在将这些数据输入神经网络之前,需要让所有的样本具有同样的长度。我们使用pad_sequences来实现这一点,pad_sequences为每个样本加入填充值使它们长度相同。可以查看第一个样本经过pad_sequences处理之后的效果:

接着,我们使用自然语言处理领域效果最好的技术之一:词向量。在20.3节的二元分类器中,我们对样本进行one-hot编码后作为神经网络的输入。但是这里我们把每个词表示为一个多维空间的向量,并且用两个向量之间的距离表示其对应的两个词的相似度。在Keras中,可以通过加入一个Embedding层来实现。对于每一个传入Embedding层的值,Keras都会输出一个向量来表示这个词。紧接着的一层是有128个神经元的LSTM层,它使之前输入的信息能在未来使用,非常适合处理顺序数据。最后,因为这是一个二元分类问题(每一条影评要么是正面的要么是负面的),所以加入只有一个神经元和sigmoid激活函数的全连接输出层。
这里需要声明,LSTM是一个很大的话题,也是很多研究的关注点。希望本节内容对各位读者有用,尽管离LSTM的真实应用还相距很远。



本书评论