madyshev_egor_lab_7 is ready
This commit is contained in:
parent
b26c54a7e4
commit
462c0ea3e0
65
madyshev_egor_lab_7/main.py
Normal file
65
madyshev_egor_lab_7/main.py
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import numpy as np
|
||||||
|
from keras.preprocessing.text import Tokenizer
|
||||||
|
from keras.preprocessing.sequence import pad_sequences
|
||||||
|
from keras.models import Sequential
|
||||||
|
from keras.layers import LSTM, Dense, Embedding
|
||||||
|
|
||||||
|
# Чтение текста из файла
|
||||||
|
with open('mumu.txt', 'r', encoding='utf-8') as file:
|
||||||
|
text = file.read()
|
||||||
|
|
||||||
|
# Параметры модели
|
||||||
|
seq_length = 50 # Длина входных последовательностей
|
||||||
|
num_epochs = 50
|
||||||
|
gen_length = 200 # Длина генерируемого текста
|
||||||
|
seed_text = "Начнем с этого" # Начальная фраза для генерации
|
||||||
|
|
||||||
|
# Создание экземпляра Tokenizer и обучение на тексте
|
||||||
|
tokenizer = Tokenizer()
|
||||||
|
tokenizer.fit_on_texts([text])
|
||||||
|
vocab_size = len(tokenizer.word_index) + 1 # Размер словаря
|
||||||
|
|
||||||
|
# Преобразование текста в последовательности чисел
|
||||||
|
sequences = tokenizer.texts_to_sequences([text])[0]
|
||||||
|
|
||||||
|
# Создание входных и выходных последовательностей
|
||||||
|
X_data = []
|
||||||
|
y_data = []
|
||||||
|
for i in range(seq_length, len(sequences)):
|
||||||
|
sequence = sequences[i - seq_length:i]
|
||||||
|
target = sequences[i]
|
||||||
|
X_data.append(sequence)
|
||||||
|
y_data.append(target)
|
||||||
|
|
||||||
|
X = np.array(X_data)
|
||||||
|
y = np.array(y_data)
|
||||||
|
|
||||||
|
# Создание модели RNN
|
||||||
|
model = Sequential()
|
||||||
|
model.add(Embedding(input_dim=vocab_size, output_dim=128, input_length=seq_length))
|
||||||
|
model.add(LSTM(256, return_sequences=True))
|
||||||
|
model.add(LSTM(256))
|
||||||
|
model.add(Dense(vocab_size, activation='softmax'))
|
||||||
|
|
||||||
|
# Компиляция модели
|
||||||
|
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
|
||||||
|
|
||||||
|
# Обучение модели
|
||||||
|
model.fit(X, y, epochs=num_epochs, batch_size=64, verbose=1)
|
||||||
|
|
||||||
|
# Функция для генерации текста
|
||||||
|
def generate_text(seed_text, gen_length):
|
||||||
|
generated_text = seed_text
|
||||||
|
for _ in range(gen_length):
|
||||||
|
sequence = tokenizer.texts_to_sequences([seed_text])[0]
|
||||||
|
sequence = pad_sequences([sequence], maxlen=seq_length)
|
||||||
|
prediction = model.predict(sequence, verbose=0)
|
||||||
|
predicted_index = np.argmax(prediction)
|
||||||
|
predicted_word = [word for word, index in tokenizer.word_index.items() if index == predicted_index][0]
|
||||||
|
generated_text += " " + predicted_word
|
||||||
|
seed_text += " " + predicted_word
|
||||||
|
return generated_text
|
||||||
|
|
||||||
|
# Генерация текста
|
||||||
|
generated_text = generate_text(seed_text, gen_length)
|
||||||
|
print(generated_text)
|
13
madyshev_egor_lab_7/mumu.txt
Normal file
13
madyshev_egor_lab_7/mumu.txt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Артем поежился, представляя себе туннель за семисотым метром. Страшно было даже помыслить о том, чтобы показаться там. За семисотый метр на север не отваживался ходить никто. Патрули доезжали до пятисотого и, осветив пограничный столб прожектором с дрезины, убедившись, что никакая дрянь не переползла за него, торопливо возвращались. Разведчики, здоровые мужики, бывшие морские пехотинцы, и те останавливались на шестьсот восьмидесятом, прятали горящие сигареты в ладонях и замирали, прильнув к приборам ночного видения. А потом медленно, тихо отходили назад, не спуская глаз с туннеля и ни в коем случае не поворачиваясь к нему спиной.
|
||||||
|
|
||||||
|
Дозор, в котором они сейчас стояли, находился на четыреста пятидесятом, в пятидесяти метрах от пограничного столба. Но граница проверялась раз в день, и осмотр закончился уже несколько часов назад. Теперь их пост был крайним, а за часы, прошедшие со времени последней проверки, твари, которых патруль мог спугнуть, наверняка снова начали подползать. Тянуло их на огонек, поближе к людям…
|
||||||
|
|
||||||
|
Артем уселся на свое место и спросил:
|
||||||
|
|
||||||
|
– А что там с Полежаевской случилось?
|
||||||
|
|
||||||
|
И хотя он уже знал эту леденящую кровь историю – рассказывали челноки на станции, его тянуло послушать ее еще раз, как неудержимо тянет детей на страшные байки о безголовых мутантах и упырях, похищающих младенцев.
|
||||||
|
– С Полежаевской? А ты не слышал? Странная история с ними вышла. Странная и страшная. Сначала у них разведчики стали пропадать. Уходили в туннели и не возвращались. У них, правда, салаги разведчики, не то что наши, но у них ведь и станция поменьше, и народу там не столько живет… Жило. Так вот, стали, значит, у них пропадать разведчики. Один отряд ушел – и нет его. Сначала думали, задержало его что-то, у них там еще туннель петляет, совсем как у нас, – Артему стало не по себе при этих словах, – и ни дозорам, ни тем более со станции ничего не видно, сколько ни свети. Нет их и нет, полчаса нет, час нет, два нет. Казалось бы, где там пропасть – всего ведь на километр уходили, им запретили дальше идти, да они и сами не дураки… В общем, так и не дождались, послали усиленный дозор, те искали, искали, кричали, кричали – все зря. Нету. Пропали разведчики. И ладно еще, что никто не видел, что с ними случилось. Плохо, что слышно ничего не было… Ни звука. И следов никаких.
|
||||||
|
|
||||||
|
Артем уже начал жалеть, что попросил Петра Андреевича рассказать о Полежаевской. Тот был то ли лучше осведомлен, то ли сам что-то додумывал, только рассказывал он такие подробности, какие и не снились челнокам, уж на что те были мастера и любители рассказать байку. От подробностей этих мороз шел по коже и неуютно становилось даже у костра, а любые, пусть и совсем безобидные шорохи из туннеля будоражили воображение.
|
||||||
|
– Ну, так вот. Стрельбы слышно не было, те и решили, что разведчики, наверное, ушли от них – недовольны, может, чем-то были и сбежали. Ну, и шут с ними. Хотят легкой жизни, хотят со всяким отребьем мотаться, с анархистами всякими, пусть себе мотаются. Так проще было думать. Спокойнее. А через неделю еще одна разведгруппа пропала. Те вообще не должны были дальше полукилометра от станции отходить. И опять та же история. Ни звука, ни следа. Как в воду канули. Тут на станции забеспокоились. Это уже непорядок, когда за неделю два отряда исчезают. С этим уже надо что-то делать. Меры, значит, принимать. Ну, они выставили на трехсотом кордон. Мешков с песком натаскали, пулемет установили, прожектор – по всем правилам фортификации. Послали на Беговую гонца – у них с Беговой и с Улицей 1905 года конфедерация. Раньше Октябрьское Поле тоже было с ними, но потом там что-то случилось, никто не знает точно что, авария какая-то: жить там стало нельзя, и оттуда все разбежались, ну, да это неважно. Послали они на Беговую гонца – предупредить, мол, творится что-то неладное, и о помощи попросить в случае чего. Не успел первый гонец до Беговой добраться, дня не прошло – те еще ответ обдумывали, – прибегает второй, весь в мыле, и рассказывает, что их усиленный кордон погиб поголовно, не сделав ни единого выстрела. Всех перерезали. И словно во сне зарезали – вот что страшно-то! А ведь они и не смогли бы заснуть после пережитого страха, не говоря уж о приказах и инструкциях. Тут на Беговой поняли, что, если ничего не сделать, скоро та же петрушка и у них начнется. Снарядили ударный отряд из ветеранов – около сотни человек, пулеметы, гранатометы… Времени, конечно, это заняло порядком, дня полтора, но все же отправили группу на помощь. А когда та вошла на Полежаевскую, там уже ни одной живой души не было. И тел не было – только кровь повсюду. Вот так вот. И черт знает, кто это сделал. Я вот не верю, что люди вообще на такое способны.
|
17
madyshev_egor_lab_7/readme.md
Normal file
17
madyshev_egor_lab_7/readme.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Задание
|
||||||
|
Выбрать художественный текст (четные варианты – русскоязычный, нечетные – англоязычный) и обучить на нем рекуррентную нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату.
|
||||||
|
## Задание по варианту
|
||||||
|
Русский язык
|
||||||
|
## Решение
|
||||||
|
### Запуск программы
|
||||||
|
Для запуска программы необходимо запустить файл main.py, содержащий код программы
|
||||||
|
### Используемые технологии
|
||||||
|
Программа использует следующие библиотеки:
|
||||||
|
- NumPy: Используется для работы с массивами и матрицами, особенно для обработки данных и их подготовки для обучения моделей глубокого обучения.
|
||||||
|
- Keras: Используется для создания и обучения нейронных сетей. В коде представлены классы Tokenizer для обработки текста, Sequential для создания модели и различные слои, такие как LSTM, Dense и Embedding.
|
||||||
|
### Что делает программа
|
||||||
|
Программа читает текст из файла, обучается на нем, и генерирует новый текст.
|
||||||
|
### Тесты
|
||||||
|
Получившийся сгенерированный текст:
|
||||||
|
Начнем с этого прильнув к к приборам ночного видения а потом потом тихо отходили не спуская глаз и туннеля и ни в коем случае не поворачиваясь к нему спиной дозор в котором они сейчас стояли находился на четыреста пятидесятом
|
||||||
|
Тест на тексте на английском языке, показал что параметры модели не подходят. Сгенерированный текст представлял собой набор букв.
|
Loading…
Reference in New Issue
Block a user