#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, загляните или задайте больше вопросов.