首页 > 解决方案 > 使用 LSTM 处理大文本

问题描述

我有一个用于检测从 kaggle 获得的假新闻的数据集(https://www.kaggle.com/c/fake-news/data)。我想使用 LSTM 进行分类

一篇文章的平均字长约为 750 字。我试图删除标点符号、停用词、删除数字。预处理文本也需要很长时间。

我想要一种使用 keras 将大文本输入 LSTM 的方法。我应该怎么做才能减少计算时间而不损失很多准确性。

标签: python-3.xdeep-learningnlplstmkaggle

解决方案


您可以尝试一些事情来加快速度:

1.使用CUDNN版本的LSTM

它通常更快,在这里 keras.layers.CuDNNLSTM检查可用层是你所追求的。

2.Conv1d用于创建特征

您可以使用一维卷积来kernel_size指定应考虑多少个单词并stride指定移动窗口的跳跃。对于kernel_size=3stride=3padding="SAME"它会使你的维度下降三倍。

您可以堆叠更多的卷积层。

最重要的是,您仍然可以LSTM正常雇用。

3. 完全放弃 LSTM

您可以使用 1d 卷积和池化进行分类,RNN 不是唯一的方法。

从好的方面来说:你不会遇到梯度消失的情况(也可以通过双向 LSTM 稍微缓解)。

不利的一面是:您将失去单词之间的严格依赖性,尽管对于二进制分类来说这应该不是什么大问题(我想这是您的目标)。


推荐阅读