Merge pull request 'sergeev_evgenii_lab_7' (#166) from sergeev_evgenii_lab_7 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/166
This commit is contained in:
commit
cd9d5ea87a
60
sergeev_evgenii_lab_7/lab7.py
Normal file
60
sergeev_evgenii_lab_7/lab7.py
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
import numpy as np
|
||||||
|
import tensorflow as tf
|
||||||
|
from keras.models import Sequential
|
||||||
|
from keras.layers import Embedding, LSTM, Dense
|
||||||
|
from keras.preprocessing.text import Tokenizer
|
||||||
|
from keras.utils import pad_sequences
|
||||||
|
|
||||||
|
# Путь к файлу
|
||||||
|
file_path = 'vlastelin-kolec.txt'
|
||||||
|
|
||||||
|
# Замените 'your_text_file.txt' на путь к вашему файлу с художественным текстом
|
||||||
|
with open(file_path, 'r', encoding='utf-8') as file:
|
||||||
|
text = file.read()
|
||||||
|
|
||||||
|
tokenizer = Tokenizer()
|
||||||
|
tokenizer.fit_on_texts([text])
|
||||||
|
total_words = len(tokenizer.word_index) + 1
|
||||||
|
|
||||||
|
input_sequences = []
|
||||||
|
for line in text.split('\n'):
|
||||||
|
token_list = tokenizer.texts_to_sequences([line])[0]
|
||||||
|
for i in range(1, len(token_list)):
|
||||||
|
n_gram_sequence = token_list[:i+1]
|
||||||
|
input_sequences.append(n_gram_sequence)
|
||||||
|
|
||||||
|
max_sequence_length = max([len(x) for x in input_sequences])
|
||||||
|
input_sequences = pad_sequences(input_sequences, maxlen=max_sequence_length, padding='pre')
|
||||||
|
|
||||||
|
X, y = input_sequences[:, :-1], input_sequences[:, -1]
|
||||||
|
y = tf.keras.utils.to_categorical(y, num_classes=total_words)
|
||||||
|
|
||||||
|
model = Sequential()
|
||||||
|
model.add(Embedding(total_words, 100, input_length=max_sequence_length-1))
|
||||||
|
model.add(LSTM(100))
|
||||||
|
model.add(Dense(total_words, activation='softmax'))
|
||||||
|
|
||||||
|
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
|
||||||
|
|
||||||
|
model.fit(X, y, epochs=100, verbose=1)
|
||||||
|
|
||||||
|
next_words = 100
|
||||||
|
while True:
|
||||||
|
seed_text = input('Введите текст: ')
|
||||||
|
if seed_text == "0":
|
||||||
|
break
|
||||||
|
for _ in range(next_words):
|
||||||
|
token_list = tokenizer.texts_to_sequences([seed_text])[0]
|
||||||
|
token_list = pad_sequences([token_list], maxlen=max_sequence_length-1, padding='pre')
|
||||||
|
predicted = np.argmax(model.predict(token_list), axis=-1)
|
||||||
|
output_word = ""
|
||||||
|
for word, index in tokenizer.word_index.items():
|
||||||
|
if index == predicted:
|
||||||
|
output_word = word
|
||||||
|
break
|
||||||
|
seed_text += " " + output_word
|
||||||
|
|
||||||
|
print(seed_text)
|
||||||
|
|
||||||
|
|
||||||
|
|
35
sergeev_evgenii_lab_7/readme.md
Normal file
35
sergeev_evgenii_lab_7/readme.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Лабораторная работа 7. Рекуррентная нейронная сетьи задача генерациитекста
|
||||||
|
## Задание
|
||||||
|
Обучить на русскоязычном (24 % 2 == 0) художественном тексте
|
||||||
|
рекуррентную нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы
|
||||||
|
приблизиться к максимально осмысленному результату.
|
||||||
|
Далее разбиться на пары четный-нечетный вариант, обменяться разработанными сетями и проверить, как
|
||||||
|
архитектура товарища справляется с вашим текстом.
|
||||||
|
В завершении подобрать компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.
|
||||||
|
|
||||||
|
### Запуск программы
|
||||||
|
Файл lab7.py содержит и запускает программу.
|
||||||
|
|
||||||
|
### Технологии
|
||||||
|
TensorFlow-это бесплатная библиотека программного обеспечения
|
||||||
|
с открытым исходным кодом для машинного обучения. Она может быть
|
||||||
|
использована в широком спектре задач, но имеет особое значение для обучения и вывода глубоких нейронных сетей.
|
||||||
|
Библиотека Keras. Используются для создания и тренировки рекуррентных нейронных сетей (RNN) с использованием LSTM-ячеек.
|
||||||
|
|
||||||
|
### Описание программы
|
||||||
|
Программа состоит из нескольких частей:
|
||||||
|
1. Загружается текст - часть из книги "Властелин Колец"
|
||||||
|
2. Далее нейронная сеть тренируется
|
||||||
|
3. Происходит проверка работы сети
|
||||||
|
### Результаты тестирования
|
||||||
|
По результатам тестирования, можно сказать следующее:
|
||||||
|
|
||||||
|
Вывод:
|
||||||
|
"Мелкора они томили томили нестерпимым как тьме он как выражаются средиземья средиземья на заметит «властелина «властелина к нему к нему к 20 20 годов нашего нашего века в а текстов среди среди среди и среди ее ее ее ее ее ее а божества божества божества божества божества божества божества божества отступают за горизонт к горизонт и горизонт и их 20 годов мелкора мелкора от история пока и но похитить это это но было похитить было похитить это в цикл в в однократна в в 20 20 годов нашего века и среди как текстов для для своего своего своего своего брата намеки и намеки"
|
||||||
|
|
||||||
|
Довольно плохой результат. Надо увеличить количество эпох либо объем тренировочного текста
|
||||||
|
|
||||||
|
Увеличил количество эпох до 100
|
||||||
|
"Мелкора они томили нестерпимым вожделеньем он с того и начал что возжаждал света но для одного себя и до времени затаился во тьме ведь похитить деревья было нельзя но вот открылся путь к прежде недостижимому – погасить свет и оставить его себе и путь этот открыл феанор ибо сильмариллы созданы были не во славу света мастер возлюбил дело рук своих рукотворное сокровище паче нерукотворного да и волшебство всегда связано с заклятием а заклятие – с проклятием такие и тому подобные азбучно мифологические прописи так сказать заповедные мифологемы образуют подоплеку сюжетной игры «сильмариллиона» задуманного как нечто вроде «суммы мифологии» пока и поскольку это так"
|
||||||
|
|
||||||
|
Текст стал намного осмысленней, довольно неплохой результат
|
20
sergeev_evgenii_lab_7/vlastelin-kolec.txt
Normal file
20
sergeev_evgenii_lab_7/vlastelin-kolec.txt
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Зато не мешает знать, откуда взялись в Средиземье гномы, а также орки, драконы, тролли и прочая нечисть, не говоря уже о самом Властелине Колец. Гномы – плод самодеятельности одного из демиургов, мастеровитого и нетерпеливого: он никак не мог дождаться, когда же наконец вседержителю благоугодно будет кого-нибудь сотворить. Будучи как бы телепатически в общих чертах знаком с вышним замыслом, демиург сотворил существа кряжистые и упорные, хорошо приспособленные к борьбе со злом (изначально опоганившим Средиземье), но несколько аляповатые. Он не сообразил, что даровать им свободу воли не в его власти, и так бы и остались гномы големами, если бы вседержитель не смилостивился и не разрешил гномов – с тем только, что они покамест будут почивать в горных недрах, а выйдут на свет божий в свой черед. Поэтому в Средиземье и бытует легенда, будто гномы сами собой произошли из камня.
|
||||||
|
|
||||||
|
Зло в Средиземье, как сказано, присутствует изначально: прародитель его, сперва самый могущественный из демиургов, звался Мелкор. Он тоже был соучастником замысла творения, но, движимый гордыней, своеволием и своекорыстием, сделался его извратителем, самозваным князем мира сего. Он-то и развел на земле нежить и нечисть, и одним из самых мерзостных его деяний было выведение орков, ибо это – порченные мукой и чародейством эльфы. Самовластие не терпит сопротивления, достоинства и независимости, оно ненасытно, оно стремится быть вездесущим – и Мелкор от начала веков и дней Средиземья всеми силами возвеличивался путем разрушения, подавления, осквернения. Он – злой дух истории. Его главный подручный, Саурон, – из числа младших демиургов – особенно искусен по части лжи и коварства. Пока не пришел его срок, он был тенью Мелкора, потом стал его местоблюстителем.
|
||||||
|
|
||||||
|
Когда Средиземье еще пребывало во тьме, Валинор озаряло сияние двух деревьев; туда переселились благороднейшие из эльфов, и главный их искусник, Феанор, изготовил и огранил три несравненных бриллианта – Сильмарилла; оживленные его мастерством, они впитали свет деревьев и лучились ярче звезд.
|
||||||
|
|
||||||
|
Мелкора они томили нестерпимым вожделеньем: он с того и начал, что возжаждал Света, но для одного себя, и до времени затаился во тьме, ведь похитить деревья было нельзя. Но вот открылся путь к прежде недостижимому – погасить Свет и оставить его себе. И путь этот открыл Феанор, ибо Сильмариллы созданы были не во славу Света: мастер возлюбил дело рук своих, рукотворное сокровище, паче нерукотворного. Да и волшебство всегда связано с заклятием, а заклятие – с проклятием. Такие и тому подобные азбучно-мифологические прописи, так сказать заповедные мифологемы, образуют подоплеку сюжетной игры «Сильмариллиона», задуманного как нечто вроде «Суммы мифологии». Пока и поскольку это так, «Сильмариллион» немногим более чем лакомое блюдо для своего брата специалиста, способного углядеть намеки и отсылки, оценить сопряжения и соответствия, то есть прочесть его при свете «Калевалы» и «Старшей Эдды». И все же… и все же есть здесь и свой нравственный заряд, и самостоятельное сюжетное напряжение, да и игровое начало не сводится к академическим забавам. Не нужно, правда, забывать, что мы говорим о «Книге утраченных сказаний» в ее окончательном виде, то есть о некоем синтезе попыток написать ее. А теперь вернемся к лиходейскому умыслу Мелкора.
|
||||||
|
|
||||||
|
Первым делом он нашел себе сообщницу – исчадие мрака и пустоты, именуемое Унголиант и принявшее облик громадной паучьей самки. Во время праздника прокрались они к светоносным деревьям, и Мелкор пронзил их черным копьем, а Унголиант высосала животворное сиянье. Сильмариллы были ревниво укрыты от чужих глаз во дворце Феанора; тем легче было Мелкору их похитить.
|
||||||
|
|
||||||
|
В наступившей вселенской тьме он перенесся на север Средиземья, воздвиг там неприступную и неоглядную крепость Тонгородрим и в глубине ее воссел на черный трон; чело его венчала железная корона с тремя Сильмариллами.
|
||||||
|
|
||||||
|
С тех пор он уже не Мелкор, а Моргот («черный супостат» по-эльфийски – так назвал его разъяренный Феанор); эта перемена имени знаменует его превращение из подобия Локи, злокозненного божества древнескандинавского пантеона, в сущего Люцифера, Владыку Мрака. Феанор же с сыновьями и родичами дали страшную, кощунственную клятву вернуть Сильмариллы любой ценой – «и лучше бы им этой клятвы не давать, но нарушить ее было нельзя».
|
||||||
|
|
||||||
|
Отсюда начинается уже не мифологическая, а легендарная предыстория Средиземья, на которую, как заметит читатель, нередко оглядываются герои «Властелина Колец»; и среди ее героев все больше людей. Архангелы-божества отступают за горизонт, а бессмертные (их, правда, можно убить, и они могут зачахнуть) и благороднейшие эльфы, поглощенные нескончаемыми войнами с Морготом, сплошь и рядом оказываются деспотами, убийцами и вероломными злодеями. Худую службу служит им их бессмертье, невозможность оглянуться на прожитую жизнь. Их жизнь может только оборваться. Они в плену своей судьбы, а их союзники люди, не покорившиеся злу и не связанные с ним порукой волшебства, судьбе неподвластны. Нет нужды пересказывать эти легенды: по мере надобности это делает сам Толкин, но уже совсем в другом качестве, не в качестве автора «Сильмариллиона».
|
||||||
|
|
||||||
|
Мрачные, зловещие и несколько однообразные саги повествуют о том, как тяготеющее над Сильмариллами двойное проклятье сгубило всех причастных к нему, да и не только их. Одно за другим сокрушают Моргот и Саурон царства эльфийского края Белерианда. И лишь сыну смертного витязя и эльфийской царевны Эарендилу удается при путеводном свете отнятого у Моргота человеческой рукой Сильмарилла доплыть до Валинора и вымолить спасение Средиземья от всевластия мрака. Тонгородрим пал, и Моргот был навеки ввергнут во тьму кромешную, но Саурон избежал его участи.
|
||||||
|
|
||||||
|
Так закончилась Первая эпоха Средиземья, или, как выражаются эльфы, Древняя Пора. «Сильмариллиону» тоже конец, эпилог приписан к нему гораздо позже, в 20-е годы, между ним и Древней Порой зияла первозданная пустота. История пока что была историей эльфов (вмещавшей миф о сотворении мира) и, как таковая, бесперспективна, вроде эльфийского бессмертия. Разве что начинать новый ее цикл – чему мифология определенно противится, мифологическая эпоха в принципе однократна – или шлифовать мифы, умножать и переписывать легенды. Этим Толкин и занимается – скорее по инерции, довольно вяло. Куда больше занимает его работа над всеобъемлющим толковым словарем английского языка (это детище было зачато в Оксфорде в 1878 году и к началу 20-х годов нашего века еще не родилось), издание англосаксонских текстов, пропаганда среди коллег древнеанглийской и древнеисландской литератур; наконец, и едва ли не в первую очередь, – преподавание: в 1925 году, тридцати семи лет от роду, он стал профессором Оксфордского университета, такое редко случалось.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user