Merge pull request '7 laba' (#302) from verina_daria_lab_7 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/302
This commit is contained in:
commit
23807c9f37
1
verina_daria_lab_7/english.txt
Normal file
1
verina_daria_lab_7/english.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Amidst the bustling cityscape, where the rhythm of life beats in harmony with the urban pulse, each dawn brings forth a cascade of city lights painting the skyline in hues of gold and amber. Strangers pass with nods and smiles, creating a tapestry of diverse connections. Skyscrapers line the streets, reflecting the vibrant energy of a metropolis in constant motion. As night falls, the city's heartbeat resonates in lively gatherings at eclectic eateries, where stories are exchanged, and the city's vibrant spirit comes alive.
|
1
verina_daria_lab_7/english_generated.txt
Normal file
1
verina_daria_lab_7/english_generated.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
In the bustling cityscape where the rhythm of life beats in harmony with the urban pulse each dawn brings forth a cascade of city lights painting the skyline in hues of gold and amber strangers pass with nods and smiles creating a tapestry of diverse connections skyscrapers line the streets reflecting the vibrant energy of a metropolis in constant motion as night falls the city's heartbeat resonates in lively gatherings at
|
BIN
verina_daria_lab_7/img.png
Normal file
BIN
verina_daria_lab_7/img.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
BIN
verina_daria_lab_7/img_1.png
Normal file
BIN
verina_daria_lab_7/img_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
BIN
verina_daria_lab_7/img_2.png
Normal file
BIN
verina_daria_lab_7/img_2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
68
verina_daria_lab_7/main.py
Normal file
68
verina_daria_lab_7/main.py
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
import numpy as np
|
||||||
|
from tensorflow import keras
|
||||||
|
from tensorflow.keras.preprocessing.text import Tokenizer
|
||||||
|
from tensorflow.keras.preprocessing.sequence import pad_sequences
|
||||||
|
|
||||||
|
def prepare_and_train_model(file_path, epochs):
|
||||||
|
# Считывание данных из файла
|
||||||
|
with open(file_path, encoding='utf-8') as f:
|
||||||
|
data = f.read()
|
||||||
|
|
||||||
|
# Создание токенизатора
|
||||||
|
tokenizer = Tokenizer()
|
||||||
|
tokenizer.fit_on_texts([data])
|
||||||
|
|
||||||
|
# Преобразование текста в последовательности чисел
|
||||||
|
sequences = tokenizer.texts_to_sequences([data])
|
||||||
|
|
||||||
|
# Создание обучающих данных
|
||||||
|
input_sequences = []
|
||||||
|
for sequence in sequences:
|
||||||
|
for i in range(1, len(sequence)):
|
||||||
|
n_gram_sequence = sequence[:i+1]
|
||||||
|
input_sequences.append(n_gram_sequence)
|
||||||
|
|
||||||
|
# Предобработка для получения одинаковой длины последовательностей
|
||||||
|
max_sequence_len = max([len(sequence) for sequence in input_sequences])
|
||||||
|
input_sequences = pad_sequences(input_sequences, maxlen=max_sequence_len, padding='pre')
|
||||||
|
|
||||||
|
# Разделение на входные и выходные данные
|
||||||
|
x, y = input_sequences[:, :-1], input_sequences[:, -1]
|
||||||
|
|
||||||
|
# Создание модели рекуррентной нейронной сети
|
||||||
|
model = keras.Sequential([
|
||||||
|
keras.layers.Embedding(len(tokenizer.word_index) + 1, 100, input_length=max_sequence_len-1),
|
||||||
|
keras.layers.Dropout(0.2),
|
||||||
|
keras.layers.LSTM(150),
|
||||||
|
keras.layers.Dense(len(tokenizer.word_index) + 1, activation='softmax')
|
||||||
|
])
|
||||||
|
|
||||||
|
# Компиляция и обучение модели
|
||||||
|
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
|
||||||
|
model.fit(x, y, epochs=epochs, verbose=1)
|
||||||
|
|
||||||
|
return model, tokenizer, max_sequence_len
|
||||||
|
|
||||||
|
def generate_text_from_model(model, tokenizer, max_sequence_len, seed_text, next_words):
|
||||||
|
# Генерация текста
|
||||||
|
for _ in range(next_words):
|
||||||
|
token_list = tokenizer.texts_to_sequences([seed_text])[0]
|
||||||
|
token_list = pad_sequences([token_list], maxlen=max_sequence_len-1, padding='pre')
|
||||||
|
predicted = model.predict(token_list)
|
||||||
|
predict_index = np.argmax(predicted, axis=-1)
|
||||||
|
word = tokenizer.index_word.get(predict_index[0], '')
|
||||||
|
seed_text += " " + word
|
||||||
|
|
||||||
|
return seed_text
|
||||||
|
|
||||||
|
model_rus, tokenizer_rus, max_sequence_len_rus = prepare_and_train_model('russian.txt', 150)
|
||||||
|
rus_text_generated = generate_text_from_model(model_rus, tokenizer_rus, max_sequence_len_rus, "В", 55)
|
||||||
|
|
||||||
|
model_eng, tokenizer_eng, max_sequence_len_eng = prepare_and_train_model('english.txt', 150)
|
||||||
|
eng_text_generated = generate_text_from_model(model_eng, tokenizer_eng, max_sequence_len_eng, "In the", 69)
|
||||||
|
|
||||||
|
with open('russian_generated.txt', 'w', encoding='utf-8') as f_rus:
|
||||||
|
f_rus.write(rus_text_generated)
|
||||||
|
|
||||||
|
with open('english_generated.txt', 'w', encoding='utf-8') as f_eng:
|
||||||
|
f_eng.write(eng_text_generated)
|
35
verina_daria_lab_7/readme.md
Normal file
35
verina_daria_lab_7/readme.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
|
||||||
|
# Генератор Текста на Рекуррентных Нейронных Сетях
|
||||||
|
## Общее задание
|
||||||
|
|
||||||
|
Выбран художественный англоязычный текст для обучения рекуррентной нейронной сети (RNN) с целью генерации текста. Задача включает подбор архитектуры и параметров для приближения к максимально осмысленным результатам. Далее предусмотрено обмен разработанными сетями с партнером, проверка, как архитектура товарища справляется с вашим текстом, и в конечном итоге подбор компромиссной архитектуры, справляющейся хорошо с обоими видами текстов.
|
||||||
|
|
||||||
|
## Задание по вариантам
|
||||||
|
|
||||||
|
Вариант: Нечетный вариант (художественный англоязычный текст).
|
||||||
|
Запуск программы
|
||||||
|
Программу можно запустить через файл app.py.
|
||||||
|
|
||||||
|
Технологии
|
||||||
|
Язык программирования: Python
|
||||||
|
Библиотеки: TensorFlow, Keras, Flask
|
||||||
|
|
||||||
|
## Описание работы программы
|
||||||
|
Программа реализует генерацию текста с использованием рекуррентных нейронных сетей (RNN) с помощью библиотек TensorFlow и Keras. Flask используется для создания веб-приложения, которое взаимодействует с моделью RNN. Пользователь вводит начальный текст (seed text) через веб-интерфейс, после чего программа отправляет запрос на сервер, который в свою очередь использует модель для генерации следующего участка текста, основываясь на введенном начальном тексте.
|
||||||
|
|
||||||
|
Входные данные
|
||||||
|
Текстовый файл (например, 'your_text_file.txt'), содержащий обучающие данные.
|
||||||
|
Веб-интерфейс для ввода начального текста.
|
||||||
|
Выходные данные
|
||||||
|
Сгенерированный текст, отображаемый в веб-интерфейсе.
|
||||||
|
|
||||||
|
## Вывод консоли:
|
||||||
|
![img_2.png](img_2.png)
|
||||||
|
![img_1.png](img_1.png)
|
||||||
|
![img.png](img.png)
|
||||||
|
|
||||||
|
## Получившийся текст:
|
||||||
|
In the bustling cityscape where the rhythm of life beats in harmony with the urban pulse each dawn brings forth a cascade of city lights painting the skyline in hues of gold and amber strangers pass with nods and smiles creating a tapestry of diverse connections skyscrapers line the streets reflecting the vibrant energy of a metropolis in constant motion as night falls the city's heartbeat resonates in lively gatherings at
|
||||||
|
|
||||||
|
## Вывод:
|
||||||
|
В результате выполнения лабораторной работы были успешно созданы и обучены рекуррентные нейронные сети (RNN) для генерации текста на русском и английском языках.
|
1
verina_daria_lab_7/russian.txt
Normal file
1
verina_daria_lab_7/russian.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
В захватывающем мире исследований глубокого космоса, где звезды танцуют свой бескрайний вальс, каждое утро начинается с таинственного свечения далеких галактик, окрашивая космическую панораму в оттенках изумрудных и сапфировых лучей. Космические путешественники встречают друг друга с уважением, обмениваясь впечатлениями о чудесах вселенной. Межзвездные аллеи украшены мерцающими астероидами, создавая ощущение бескрайнего волнения и удивления. По наступлении ночи исследователи созвездий собираются в космических кафе, где звездные истории обретают новые оттенки в мистической атмосфере.
|
1
verina_daria_lab_7/russian_generated.txt
Normal file
1
verina_daria_lab_7/russian_generated.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
В захватывающем мире исследований глубокого где где звезды танцуют свой бескрайний вальс каждое каждое начинается с таинственного свечения далеких галактик окрашивая космическую панораму в оттенках изумрудных и сапфировых лучей космические путешественники встречают друг друга с уважением обмениваясь впечатлениями о чудесах вселенной межзвездные аллеи украшены мерцающими астероидами создавая ощущение бескрайнего волнения и удивления по наступлении ночи исследователи
|
Loading…
Reference in New Issue
Block a user