lab7 done
This commit is contained in:
parent
9613109f32
commit
879a1c5730
33
ilbekov_dmitriy_lab_7/README.md
Normal file
33
ilbekov_dmitriy_lab_7/README.md
Normal file
@ -0,0 +1,33 @@
|
||||
# Лабораторная работа 7
|
||||
### Вариант 10
|
||||
|
||||
### Задание:
|
||||
- Выбрать художественный текст (четные варианты – русскоязычный, нечетные – англоязычный)и обучить на нем рекуррентную нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату.
|
||||
### Запуск
|
||||
- Запустить файл lab7.py (Для английского языка необходимо в коде выбрать соответсвующий файл и начальную строку)
|
||||
|
||||
### Технологии
|
||||
- Язык - 'Python'
|
||||
- Библиотеки numpy, keras, tensorflow
|
||||
|
||||
### Что делает
|
||||
- Программа читает текст из файла .txt
|
||||
- Программа использует `Tokenizer` с настройкой `char_level=True`, что позволяет упразднить использование `Embedding` слоя далее
|
||||
- Программа подготавливает исходный текст и последовательности для обучения модели
|
||||
- Далее строится последовательная рекуррентная нейронная сеть `Sequential` (использует LSTM-ячейки) с двумя слоями LSTM. `LSTM` (Long Short-Term Memory) является типом рекуррентной нейронной сети, который хорошо подходит для работы с последовательными данными, такими как текст. Использование двух слоев позволяет модели иметь больше гибкости и уловить более сложные зависимости в тексте. Слой `Dense` с функцией активации softmax используется для предсказания следующего слова
|
||||
- Модель компилируется с использованием функции потерь `sparse_categorical_crossentropy` и оптимизатора `Adam`.
|
||||
- После чего происходит обучение модели на 100 эпохах (оптимальный вариант)
|
||||
- После обучения программа, используя начальный текст генерирует текст размером 250 (по умолчанию) символами
|
||||
|
||||
### Пример работы
|
||||
Пример работы представлен в виде скриншотов:
|
||||
|
||||
Сгенерированный текст:
|
||||
- (RUS) Уходили в тайгу в середине октября, когда выпадал первый снег. это было чудесное время. за одну ночь природа преображалась: все вокруг светлело. остывший воздух становился упругим и звонким. всюду на снегу виднелись следы зверьков — так тайга перед человеком открыв
|
||||
- (ENG) I had last night. but was too drunk to remember to shut the popholes. with the ring of light from his lantern dancing from side to side, he lurched across the yard, kicked off his boots at the back door. when major saw that they should all meet in the bedroom went o
|
||||
|
||||
Скриншоты:
|
||||
![Console](console_rus.jpg)
|
||||
![Graphics](console_eng.jpg)
|
||||
|
||||
- В результате программа генерирует вполне себе осмысленный текст как на русском, так и на английском языках.
|
BIN
ilbekov_dmitriy_lab_7/console_eng.jpg
Normal file
BIN
ilbekov_dmitriy_lab_7/console_eng.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
BIN
ilbekov_dmitriy_lab_7/console_rus.jpg
Normal file
BIN
ilbekov_dmitriy_lab_7/console_rus.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 92 KiB |
71
ilbekov_dmitriy_lab_7/lab7.py
Normal file
71
ilbekov_dmitriy_lab_7/lab7.py
Normal file
@ -0,0 +1,71 @@
|
||||
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, Dropout
|
||||
|
||||
# Чтение текста из файла
|
||||
with open('text_russian.txt', 'r', encoding='utf-8') as file:
|
||||
text = file.read()
|
||||
# with open('text_english.txt', 'r', encoding='utf-8') as file:
|
||||
# text = file.read()
|
||||
|
||||
# Параметры модели
|
||||
seq_length = 10
|
||||
|
||||
# Создание экземпляра Tokenizer и обучение на тексте
|
||||
tokenizer = Tokenizer(char_level=True)
|
||||
tokenizer.fit_on_texts([text])
|
||||
|
||||
# Преобразование текста в последовательности чисел
|
||||
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)
|
||||
|
||||
# Преобразование входных и выходных данных в формат массивов numpy
|
||||
X = pad_sequences(X_data, maxlen=seq_length)
|
||||
y = np.array(y_data)
|
||||
|
||||
# Создание модели RNN
|
||||
vocab_size = len(tokenizer.word_index) + 1
|
||||
model = Sequential()
|
||||
model.add(LSTM(256, input_shape=(seq_length, 1), return_sequences=True))
|
||||
model.add(LSTM(128, input_shape=(seq_length, 1)))
|
||||
model.add(Dense(vocab_size, activation='softmax'))
|
||||
|
||||
# Компиляция модели
|
||||
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
|
||||
|
||||
# Обучение модели
|
||||
model.fit(X, y, epochs=100, 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)[0]
|
||||
predicted_index = np.argmax(prediction)
|
||||
predicted_char = tokenizer.index_word[predicted_index]
|
||||
generated_text += predicted_char
|
||||
seed_text += predicted_char
|
||||
seed_text = seed_text[1:]
|
||||
|
||||
return generated_text
|
||||
|
||||
# Генерация текста
|
||||
seed_text = "Уходили в тайгу"
|
||||
# seed_text = "I had last night"
|
||||
generated_text = generate_text(seed_text, 250)
|
||||
print(generated_text)
|
||||
|
11
ilbekov_dmitriy_lab_7/text_english.txt
Normal file
11
ilbekov_dmitriy_lab_7/text_english.txt
Normal file
@ -0,0 +1,11 @@
|
||||
Mr. Jones, of the Manor Farm, had locked the hen-houses for the night, but was too drunk to remember to shut the popholes. With the ring of light from his lantern dancing from side to side, he lurched across the yard, kicked off his boots at the back door, drew himself a last glass of beer from the barrel in the scullery, and made his way up to bed, where Mrs. Jones was already snoring.
|
||||
|
||||
As soon as the light in the bedroom went out there was a stirring and a fluttering all through the farm buildings. Word had gone round during the day that old Major, the prize Middle White boar, had had a strange dream on the previous night and wished to communicate it to the other animals. It had been agreed that they should all meet in the big barn as soon as Mr. Jones was safely out of the way. Old Major (so he was always called, though the name under which he had been exhibited was Willingdon Beauty) was so highly regarded on the farm that everyone was quite ready to lose an hour’s sleep in order to hear what he had to say.
|
||||
|
||||
At one end of the big barn, on a sort of raised platform, Major was already ensconced on his bed of straw, under a lantern which hung from a beam. He was twelve years old and had lately grown rather stout, but he was still a majestic-looking pig, with a wise and benevolent appearance in spite of the fact that his tushes had never been cut. Before long the other animals began to arrive and make themselves comfortable after their different fashions. First came the three dogs, Bluebell, Jessie, and Pincher, and then the pigs, who settled down in the straw immediately in front of the platform. The hens perched themselves on the window-sills, the pigeons fluttered up to the rafters, the sheep and cows lay down behind the pigs and began to chew the cud.The two cart-horses, Boxer and Clover, came in together, walking very slowly and setting down their vast hairy hoofs with great care lest there should be some small animal concealed in the straw. Clover was a stout motherly mare approaching middle life, who had never quite got her figure back after her fourth foal. Boxer was an enormous beast, nearly eighteen hands high, and as strong as any two ordinary horses put together. A white stripe down his nose gave him a somewhat stupid appearance, and in fact he was not of first-rate intelligence, but he was universally respected for his steadiness of character and tremendous powers of work. After the horses came Muriel, the white goat, and Benjamin, the donkey. Benjamin was the oldest animal on the farm, and the worst tempered. He seldom talked, and when he did, it was usually to make some cynical remark – for instance, he would say that God had given him a tail to keep the flies off, but that he would sooner have had no tail and no flies. Alone among the animals on the farm he never laughed. If asked why, he would say that he saw nothing to laugh at.Nevertheless, without openly admitting it, he was devoted to Boxer; the two of them usually spent their Sundays together in the small paddock beyond the orchard, grazing side by side and never speaking.
|
||||
|
||||
The two horses had just lain down when a brood of ducklings, which had lost their mother, filed into the barn, cheeping feebly and wandering from side to side to find some place where they would not be trodden on. Clover made a sort of wall round them with her great foreleg, and the ducklings nestled down inside it and promptly fell asleep. At the last moment Mollie, the foolish, pretty white mare who drew Mr. Jones’s trap, came mincing daintily in, chewing at a lump of sugar. She took a place near the front and began flirting her white mane, hoping to draw attention to the red ribbons it was plaited with. Last of all came the cat, who looked round, as usual, for the warmest place, and finally squeezed herself in between Boxer and Clover; there she purred contentedly throughout Major’s speech without listening to a word of what he was saying.
|
||||
|
||||
All the animals were now present except Moses, the tame raven, who slept on a perch behind the back door. When Major saw that they had all made themselves comfortable and were waiting attentively, he cleared his throat and began:
|
||||
|
||||
‘Comrades, you have heard already about the strange dream that I had last night. But I will come to the dream later. I have something else to say first. I do not think, comrades, that I shall be with you for many months longer, and before I die, I feel it my duty to pass on to you such wisdom as I have acquired. I have had a long life, I have had much time for thought as I lay alone in my stall, and I think I may say that I understand the nature of life on this earth as well as any animal now living. It is about this that I wish to speak to you.
|
23
ilbekov_dmitriy_lab_7/text_russian.txt
Normal file
23
ilbekov_dmitriy_lab_7/text_russian.txt
Normal file
@ -0,0 +1,23 @@
|
||||
Самолет сделал разворот над аэродромом и взял курс на север. Внизу проплыли пригородные поселки, а затем вдаль и вширь разлилось таежное безбрежье. Проходит час, другой. Напряженно всматриваюсь в маленькое оконце самолета: ни единой юрты, ни единого зимовейка, только кое-где белеют небольшие озера. Лес сверху кажется чахлым, похожим на редкую щетку. Горы сгладились и утратили свою первоначальную величавую красоту. И кажется, под нами проплывает холодная безжизненная пустыня, кое-как прикрытая жалкой растительностью.
|
||||
|
||||
Но это — обман зрения. Под нами север, суровый и непокорный. В этих краях я родился и вырос. И первое, что увидел в жизни и запомнил, — это синие дали гор, голубые столбы дымокуров возле изб. А еще стаи чаек над рекой.
|
||||
|
||||
Моим первым другом был старый пес Варнак. В свое время он верно служил отцу. Теперь плохо слышал, задыхался и, как говорил отец, был списан в куриные сторожа. Я приносил Варнаку лакомства, а потом ездил на нем верхом. Когда надоедало это занятие, мы укрывались где-нибудь в тени. Варнак растягивался на земле, клал морду на лапы и закрывал глаза. Из рассказов отца я знал все «подвиги» моего друга. Я садился рядом с ним и, подражая отцу, начинал говорить: «Вот это ухо Варнаку порвал медведь-шатун в тот год, когда ты, сын, родился. Ох и матерый зверь был…» Потом я брал лук, и мы шли за амбар стрелять в мишень.
|
||||
|
||||
Самым большим событием для нас, мальчишек, были проводы отцов и братьев на охоту. Они уходили в тайгу в середине октября, когда выпадал первый снег. Это было чудесное время. За одну ночь природа преображалась: все вокруг светлело. Остывший воздух становился упругим и звонким. Всюду на снегу виднелись следы зверьков — так тайга перед человеком открывала свои тайны, вводила его в свой загадочный мир. Мы провожали охотников до леса и с завистью смотрели им вслед.
|
||||
|
||||
Проходили недели, месяцы, снега заваливали избы, вьюги заметали тропы, а охотники все были в тайге. В длинные зимние вечера, которым не было ни конца ни края, мать рассказывала мне сказки и легенды про охотников и зверей. И передо мной открывался удивительный таежный мир. Утром я надевал лыжи и отправлялся к горам, но мужества хватало дойти только до опушки леса.
|
||||
|
||||
Но вот наступал январь с его морозами, и охотники возвращались из тайги. Они были бородатыми, исхудавшими, пропахшими хвоей, потом и дымом. Нам, ребятишкам, охотники приносили гостинцы: по мешочку серы и испеченные на костре лепешки. В первый же день мы узнавали о тех, кто добывал медведя, а на следующее утро делали берлогу на опушке леса и разыгрывали во всех подробностях схватку охотника со зверем.
|
||||
|
||||
…Сорок первый год. Война. Нам пришлось на таежных тропах заменить мужчин, ушедших на фронт. Мы месяцами жили в зимовьях, промышляя белок и медведей, сохатых и горностаев, кормили стариков и женщин.
|
||||
|
||||
Дорого доставался нам кусок хлеба: мы блуждали в тайге, утопали в снегах, в сорокаградусные морозы наживали простуду у костров, нередко за свою неопытность расплачивались кровью: в нас стреляли собственные ружья, нас калечили звери.
|
||||
|
||||
Теперь все это кажется далеким сном.
|
||||
|
||||
…И вот я снова возвращаюсь к порогу своей юности. Впереди показалась река Нёпа, приток Нижней Тунгуски. Будто какой-то великан взмахнул белой лентой, она извилась и упала среди гор. Даже отсюда, с высоты, я узнаю знакомые места. Хребет Юктокон. С высоты он похож на спящего медведя с темным загривком, отливающим зеленью. У его подножия дымится незамерзающее озеро, и кажется, что зверь дышит. Вот сейчас он услышит гул самолета, поднимет морду, покрытую куржаком, и недовольно зарычит на весь лес.
|
||||
|
||||
Я внимательно оглядываю тайгу вокруг хребта, надеясь увидеть зимовейко или палатку. Где-то здесь стоянка старой эвенки Авдо, которая во время войны на таежных тропах была для меня и матерью, и старшим товарищем.
|
||||
|
||||
Помню, как-то заблудился я, двое суток кружил по тайге, выбился из сил. Разложил костер и отдался на милость судьбы.
|
Loading…
Reference in New Issue
Block a user