basharin_sevastyan_lab_7 is ready
This commit is contained in:
parent
71b16e78b7
commit
fc5942cdb1
File diff suppressed because it is too large
Load Diff
@ -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
|
@ -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)
|
||||||
|
|
||||||
|
9
basharin_sevastyan_lab_7/ru.txt
Normal file
9
basharin_sevastyan_lab_7/ru.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Когда человек сознательно или интуитивно выбирает себе в жизни какую-то цель, жизненную задачу, он невольно дает себе оценку. По тому, ради чего человек живет, можно судить и о его самооценке - низкой или высокой.
|
||||||
|
Если человек живет, чтобы приносить людям добро, облегчать их страдания, давать людям радость, то он оценивает себя на уровне этой своей человечности. Он ставит себе цель, достойную человека.
|
||||||
|
Только такая цель позволяет человеку прожить свою жизнь с достоинством и получить настоящую радость. Да, радость! Подумайте: если человек ставит себе задачей увеличивать в жизни добро, приносить людям счастье, какие неудачи могут его постигнуть? Не тому помочь? Но много ли людей не нуждаются в помощи?
|
||||||
|
Если жить только для себя, своими мелкими заботами о собственном благополучии, то от прожитого не останется и следа. Если же жить для других, то другие сберегут то, чему служил, чему отдавал силы.
|
||||||
|
Можно по-разному определять цель своего существования, но цель должна быть. Надо иметь и принципы в жизни. Одно правило в жизни должно быть у каждого человека, в его цели жизни, в его принципах жизни, в его поведении: надо прожить жизнь с достоинством, чтобы не стыдно было вспоминать.
|
||||||
|
Достоинство требует доброты, великодушия, умения не быть эгоистом, быть правдивым, хорошим другом, находить радость в помощи другим.
|
||||||
|
Ради достоинства жизни надо уметь отказываться от мелких удовольствий и немалых тоже… Уметь извиняться, признавать перед другими ошибку - лучше, чем врать.
|
||||||
|
Обманывая, человек прежде всего обманывает самого себя, ибо он думает, что успешно соврал, а люди поняли и из деликатности промолчали.
|
||||||
|
Жизнь - прежде всего творчество, но это не значит, что каждый человек, чтобы жить, должен родиться художником, балериной или ученым. Можно творить просто добрую атмосферу вокруг себя. Человек может принести с собой атмосферу подозрительности, какого-то тягостного молчания, а может внести сразу радость, свет. Вот это и есть творчество.
|
Loading…
Reference in New Issue
Block a user