Использование LSTM для большого текста - PullRequest
0 голосов
/ 02 июля 2019

У меня есть набор данных для обнаружения поддельных новостей, которые я получил от kaggle (https://www.kaggle.com/c/fake-news/data).Я хочу использовать LSTM для классификации

Средняя длина слов в одной статье составляет около 750 слов.Я пытался удалить знаки препинания, стоп-слова, удаленные цифры.Предварительная обработка текста также занимает очень много времени.

Я бы хотел метод подачи большого текста в LSTM с использованием керасов.Что я должен сделать, чтобы сократить время вычислений и не потерять много точности.

1 Ответ

1 голос
/ 02 июля 2019

Есть некоторые вещи, которые вы можете попробовать ускорить:

1.Используйте CUDNN-версию LSTM

Обычно это быстрее, проверьте доступные слои здесь keras.layers.CuDNNLSTM - это то, что вам нужно.

2.Используйте Conv1d для создания элементов

Вы можете использовать одномерную свертку с kernel_size, указывающим, сколько слов следует учитывать, и stride, определяющим скачок движущегося окна.Для kernel_size=3 и stride=3, padding="SAME" это уменьшит вашу размерность в три раза.

Вы можете сложить больше сверточных слоев.

Кроме того, вы все равно можете использовать LSTMнормально.

3.Отбросьте LSTM в целом

Вы можете пойти с 1d свертками и объединением для классификации, RNN не единственный способ.

С другой стороны: вы не столкнетесь с исчезающими градиентами (может быть немного смягченоДвунаправленный LSTM).

С другой стороны: вы потеряете строгую зависимость между словами, хотя это не должно быть большой проблемой для двоичной классификации (я полагаю, это ваша цель).

...