basharin_sevastyan_lab_7 is ready

This commit is contained in:
acidmikk 2023-12-14 22:33:48 +04:00
parent 71b16e78b7
commit fc5942cdb1
4 changed files with 45 additions and 15858 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
## Лабораторная работа 7. Вариант 5.
### Задание
Выбрать художественный текст(четные варианты –русскоязычный, нечетные –англоязычный)и обучить на нем рекуррентную
нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально
осмысленному результату.
В завершении подобрать компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.
### Ход работы
Для английской модели был взят пролог Властелина колец. Модель хоть им получилась удачнее, чем на русском, но время
обучение составило чуть больше часа.
#### Результат rus
здесь был человек прежде всего всего обманывает самого себя ибо он думает что успешно соврал а люди поняли и из
деликатности промолчали промолчали промолчали промолчали промолчали какие его неудачи могут его постигнуть не тому
помочь много ли людей не нуждаются в помощи помощи было врать врать врать молчания молчания а внести то
#### Результат eng
the harfoots were browner of skin smaller and shorter and they were beardless and bootless their hands and feet were
neat and nimble and they preferred highlands and hillsides the stoors were broader heavier in build their feet and
hands were larger and they preferred flat lands and riversides

View File

@ -1,16 +1,17 @@
import torch import numpy as np
import torch.nn as nn from keras.preprocessing.sequence import pad_sequences
import tensorflow as tf from keras.preprocessing.text import Tokenizer
from keras.models import Sequential from keras.models import Sequential
from keras.layers import Embedding, LSTM, Dense from keras.layers import Embedding, LSTM, Dense
from keras.utils import to_categorical
with open('69209.txt', "r") as file: with open('ru.txt', "r", encoding='utf-8') as file:
text = file.read() text = file.read()
# Предварительная обработка текста (в зависимости от вашей задачи) # Предварительная обработка текста (в зависимости от вашей задачи)
# Создание словаря для отображения слов в индексы и обратно # Создание словаря для отображения слов в индексы и обратно
tokenizer = tf.keras.preprocessing.text.Tokenizer() tokenizer = Tokenizer()
tokenizer.fit_on_texts([text]) tokenizer.fit_on_texts([text])
total_words = len(tokenizer.word_index) + 1 total_words = len(tokenizer.word_index) + 1
@ -24,9 +25,9 @@ for line in text.split('\n'):
input_sequences.append(n_gram_sequence) input_sequences.append(n_gram_sequence)
max_sequence_length = max([len(x) for x in input_sequences]) max_sequence_length = max([len(x) for x in input_sequences])
input_sequences = tf.keras.preprocessing.sequence.pad_sequences(input_sequences, maxlen=max_sequence_length, padding='pre') input_sequences = pad_sequences(input_sequences, maxlen=max_sequence_length, padding='pre')
X, y = input_sequences[:,:-1],input_sequences[:,-1] X, y = input_sequences[:,:-1],input_sequences[:,-1]
y = tf.keras.utils.to_categorical(y, num_classes=total_words) y = to_categorical(y, num_classes=total_words)
# Определение архитектуры модели # Определение архитектуры модели
@ -45,16 +46,15 @@ model.fit(X, y, epochs=100, verbose=2)
# Генерация текста с использованием обученной модели # Генерация текста с использованием обученной модели
def generate_text(seed_text, next_words, model, max_sequence_length): def generate_text(seed_text, next_words, model_, max_sequence_length):
for _ in range(next_words): for _ in range(next_words):
token_list = tokenizer.texts_to_sequences([seed_text])[0] token_list = tokenizer.texts_to_sequences([seed_text])[0]
token_list = tf.keras.preprocessing.sequence.pad_sequences([token_list], maxlen=max_sequence_length - 1, token_list = pad_sequences([token_list], maxlen=max_sequence_length - 1, padding='pre')
padding='pre') predicted_probs = model.predict(token_list, verbose=0)[0]
predicted = model.predict_classes(token_list, verbose=0) predicted_index = np.argmax(predicted_probs)
output_word = "" output_word = ""
for word, index in tokenizer.word_index.items(): for word, index in tokenizer.word_index.items():
if index == predicted: if index == predicted_index:
output_word = word output_word = word
break break
seed_text += " " + output_word seed_text += " " + output_word
@ -63,7 +63,7 @@ def generate_text(seed_text, next_words, model, max_sequence_length):
# Пример генерации текста (замените seed_text и next_words на свои значения) # Пример генерации текста (замените seed_text и next_words на свои значения)
seed_text = "your seed text here" seed_text = "здесь был"
next_words = 50 next_words = 50
generated_text = generate_text(seed_text, next_words, model, max_sequence_length) generated_text = generate_text(seed_text, next_words, model, max_sequence_length)

View File

@ -0,0 +1,9 @@
Когда человек сознательно или интуитивно выбирает себе в жизни какую-то цель, жизненную задачу, он невольно дает себе оценку. По тому, ради чего человек живет, можно судить и о его самооценке - низкой или высокой.
Если человек живет, чтобы приносить людям добро, облегчать их страдания, давать людям радость, то он оценивает себя на уровне этой своей человечности. Он ставит себе цель, достойную человека.
Только такая цель позволяет человеку прожить свою жизнь с достоинством и получить настоящую радость. Да, радость! Подумайте: если человек ставит себе задачей увеличивать в жизни добро, приносить людям счастье, какие неудачи могут его постигнуть? Не тому помочь? Но много ли людей не нуждаются в помощи?
Если жить только для себя, своими мелкими заботами о собственном благополучии, то от прожитого не останется и следа. Если же жить для других, то другие сберегут то, чему служил, чему отдавал силы.
Можно по-разному определять цель своего существования, но цель должна быть. Надо иметь и принципы в жизни. Одно правило в жизни должно быть у каждого человека, в его цели жизни, в его принципах жизни, в его поведении: надо прожить жизнь с достоинством, чтобы не стыдно было вспоминать.
Достоинство требует доброты, великодушия, умения не быть эгоистом, быть правдивым, хорошим другом, находить радость в помощи другим.
Ради достоинства жизни надо уметь отказываться от мелких удовольствий и немалых тоже… Уметь извиняться, признавать перед другими ошибку - лучше, чем врать.
Обманывая, человек прежде всего обманывает самого себя, ибо он думает, что успешно соврал, а люди поняли и из деликатности промолчали.
Жизнь - прежде всего творчество, но это не значит, что каждый человек, чтобы жить, должен родиться художником, балериной или ученым. Можно творить просто добрую атмосферу вокруг себя. Человек может принести с собой атмосферу подозрительности, какого-то тягостного молчания, а может внести сразу радость, свет. Вот это и есть творчество.