Как подготовить текстовые данные в Keras для обучения Encoder-Decoder LSTM сети (sequence-to-sequence)?

Допустим есть последовательность текста для входа на нейронную сеть X_train: ["Привет", "как", "дела", "?"]
И ответ на эту последовательность Y_train: ["Всё", "отлично"]

Как правильно подготовить эти данные, токенизировать, привести в матричный режим, что бы можно было скормить нейронной сети при обучении?
model.fit(X_train, Y_train)
  • Вопрос задан
  • 1779 просмотров
Решения вопроса 1
@xdgadd
ML/Python/Cpp
Гуглите NLP, text preprocessing и word embeddings. Способов много и зависят они от архитектуры модели, вашей задачи, типа и качества текста.
Алсо, в керасе есть embedding layers, через них можно пропускать уже готовые вектора, e.g. word2vec, OHE.

P.S. Для большей гибкости рекомендую вам попробовать Lasagne или Tensorflow. Keras хорош, когда задачу нужно решить быстро, с минимумом кода и теории. А для экспериментов и обучения лучше использовать более близкие к "железу"(менее абстрактные) инструменты.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
1. токенизировать - возможно, nltk.tokenize ?
2. далее, вероятно, стоит удалить стоп-слова. Например, полученные от nltk.stopwords
3. (вероятно, будет толк от стемминга - например, nltk.stem)
4. далее - например, заменить слова/корни (после стеминга) каким-либо embedding-м (который поставит в соответствие каждому слову вектор) - например, word2vec. Ну или использовать собственный embedding. Например (но это явно затратный в плане памяти путь):
4.1. создать словарь, содержащий все слова обучающей выборки
4.2. поставить в соответствие каждому слову его номер. Тогда текст будет представлен одномерным массивом чисел
4.3. подменить каждое число вектором, где N-й элемент равен 1, остальные - 0. А N - собственно, наше число
4.4. добавить на вход сети embedding слой и обратный на выход
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы