Keras — предварительная обработка текста

#text #tokenize #keras

#текст #маркировать #keras

Вопрос:

Цель:

Для генерации текста в стиле авторов.

Входные данные: работа авторов для обучения, начальное значение для прогноза

Вывод: сгенерированный текст из этого начального файла


Вопрос о слое встраивания в keras:

У меня есть необработанный текст, плоский текстовый файл, содержащий несколько тысяч строк текста. Я хочу ввести это в слой встраивания в keras для векторизации данных. Вот что у меня есть в виде текста:

 --SNIP
The Wild  Westn Ha ha, riden All you see is the sun reflectin' off of the
--SNIP

and I call it input_text:

num_words = 2000#get 2000 words
tok = Tokenizer(num_words)#tokenize the words
tok.fit_on_texts(input_text)#takes in list of text to train on
#put all words from text into a words array
#this is essentially enumerating them
words = []
for iter in range(num_words):
    words  = [key for key,value in tok.word_index.items() if value==iter 1]

#words[:10]
#Class for vectorizing texts, or/and turning texts into sequences 
#(=list of word indexes, where the word of rank i in the dataset (starting at 1) has index i).
X_train = tok.texts_to_sequences(input_text)#turns text to sequence, stating which word comes in what place
X_train = sequence.pad_sequences(X_train, maxlen=100)#pad sequence, essentially padding it with 0's at the end
y_train = words
  

Проблема:

Кажется, что мой код будет принимать последовательность, затем, когда я применяю дополнение, он выдает только первые 100 из последовательности. Как я должен разбить его на части?

Должен ли я взять всю последовательность и просмотреть первые 100 слов (X), а затем указать следующее (Y) и сделать несколько пропусков по пути?

Я хочу, чтобы результатом была вероятность появления следующего слова. Итак, в конце у меня есть слой softmax. По сути, я хочу сгенерировать текст из начального файла. Это правильный способ сделать это? или это просто лучше

Ответ №1:

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