diff --git a/kurmyza_pavel_lab_7/README.md b/kurmyza_pavel_lab_7/README.md new file mode 100644 index 0000000..50a3ef1 --- /dev/null +++ b/kurmyza_pavel_lab_7/README.md @@ -0,0 +1,47 @@ +# Лабораторная работа №7 + +## ПИбд-41, Курмыза Павел + +## Как запустить ЛР + +- Запустить файл main.py + +## Используемые технологии + +- Язык программирования Python +- Библиотеки: numpy, keras, tensorflow + +## Что делает программа + +- Программа считывает текст из файла формата .txt. +- Для работы без использования слоя встраивания, программа использует Tokenizer с настройкой char_level=True. +- После подготовки исходного текста и последовательностей для обучения модели, создается последовательная рекуррентная + нейронная сеть Sequential с двумя слоями LSTM (Long Short-Term Memory), который хорошо подходит для работы с + текстовыми данными. +- В слое Dense используется функция активации softmax для предсказания следующего слова. +- Модель компилируется с использованием функции потерь sparse_categorical_crossentropy и оптимизатора Adam. +- Далее модель обучается на 100 эпохах. +- После обучения программа использует начальный текст для генерации текста длиной 250 символов по умолчанию. + +## Тестирование + +Запустив программу, можно увидеть сгенерированный текст как на русском, так и на английском: + +### Русский + +Текст: Птица размахнула могучими крыльямичн ваего обманывает самого себя, ибо он думает, что успешно соврал, а люди +поняли и из деликатности промолчали. + +![Russian](out_russian.jpg) + +### Английский + +Текст: It seemed a longer job a pid ere event that the doctor has two minutes to discuss the situ it wnow about the +final, one asked if she had to know about the final, one asked if she had to know about the final, one asked if she had +to know about the final, one asked if she. + +![English](out_english.jpg) + +## Вывод + +По итогам выполнения программы, создается осмысленный текст как на русском, так и на английском языках. \ No newline at end of file diff --git a/kurmyza_pavel_lab_7/english.txt b/kurmyza_pavel_lab_7/english.txt new file mode 100644 index 0000000..9b3d162 --- /dev/null +++ b/kurmyza_pavel_lab_7/english.txt @@ -0,0 +1,19 @@ +Trying to get my students excited about biology is no easy task. Putting things in perspective helps. + +If you’re majoring in architecture or philosophy, you probably don’t think you need to take a semester of college biology. But you do. For me, teaching this required class has been an education. The first year, I tried to humanize biological research by inviting colleagues in, to describe their projects. This went well until a visiting geneticist’s presentation was drowned out by students shouting about how “disgusting” and “vile” research was. Uh-oh. We’ve got trouble, right here in the nonmajors’ classroom. Trouble with a capital T, and that rhymes with B and that stands for Bad Public Relations. + +Leaping to the defense of history’s researchers, I pointed out that no one in the room had polio, thanks to the treatment developed by our college’s own alumnus Jonas Salk. The angriest student looked at me blankly as I cited the thousands of chick embryos sacrificed in experiments that led to the vaccine. Like virtually all therapies for humans, the polio vaccine was tested in animals first. She stopped shouting. + +I’ve tried to look at biology as an outsider, as someone who experiences my field only on TV, where female scientists apparently spend a lot time blow-drying their hair and shopping for push-up bras between blood-sample-scraping expeditions. I wanted to get things in perspective: If law students had to spend five or six years in school, think up a novel law and get it passed, then their training would resemble that of a biology Ph.D. If a med student had to invent and test a new treatment for patients – and prove it successful – before being awarded an M.D., ditto. If my students remember nothing else, I’d be happy if they leave with the idea that, just like art or music, science is a creative process. + +Research is unpredictable. Put five biologists around a table in any bar, and a weird synergy takes over. Unexpected ideas emerge as new experiments are hastily diagrammed on cocktail napkins. Science isn’t old information pressed like crumbling fall leaves between the pages of forgotten books. It’s alive – growing and shifting and blossoming. Funding basic research means that scientists can pursue ideas and chase down the unexpected zigs and zags that lead to important findings. If you fund us, they will come. I need these students – voters – to get this. + +Each class has its own personality, and my third group acted like a chronically irritated 14-year-old. Every classroom activity was accompanied by eye rolls and sighs of exasperation. I’m old enough now to realize that I can’t really teach anyone anything; I can just try to create conditions that foster learning. When students meet me halfway, it sometimes works. Still, I felt personally affronted by the slacker attitude, because real science is an art. I tried a video of hydras – tiny tentacle-draped pond animals – to reveal how a creature with no legs or arms moves around, captures prey and reproduces. A film on sea horses, a species whose males handle pregnancy, drew laughter at the birth scenes. + +With a week left in the semester, the students wanted to know about the final. One asked if she had to know the structure of a cell. I said yes, cells are fundamental. She retorted, “Why the hell do we need to know about a phospholipids bilayer?” + +I sighed. “Here’s why you need to know about the phospholipids bilayer. Some day you are going to be in the intensive-care unit with someone you love hooked up to a lot of tubes. You are going to be asking for a new treatment or a new drug or demanding to know why they aren’t getting better. If you remember anything about how research works, you’ll be saying, “I want this patient enrolled in a clinical trial! Now!” + +I had everyone’s rapt attention. Like Bible salesman in foxholes, proresearch lobbyists would do a brisk business in an ICU. I continued, “In the event that the doctor has two minutes to discuss the situation and to describe the biology underlying the disease so that you can look up clinical trials, you are going to need to know what a cell is and how disease can impact it.” + +It was a pretty good rant, aside from my use of “impact” as a verb. They got it, noting “cell structure” on their on their to-do lists. I showed the last of the sea-horse film. It wasn’t going to be on the final, but I wanted to end the semester with something unique, something they didn’t already know. Something we’re aware of only because some passionate scientist spends 12 hours a day underwater filming it. Something beautiful and amazing. Biology. diff --git a/kurmyza_pavel_lab_7/main.py b/kurmyza_pavel_lab_7/main.py new file mode 100644 index 0000000..2012b30 --- /dev/null +++ b/kurmyza_pavel_lab_7/main.py @@ -0,0 +1,69 @@ +import numpy as np +from keras.layers import LSTM, Dense +from keras.models import Sequential +from keras.preprocessing.sequence import pad_sequences +from keras.preprocessing.text import Tokenizer + + +# Функция для генерации текста +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 + + +# Чтение текста из файла +# with open('russian.txt', 'r', encoding='utf-8') as file: +# text = file.read() +with open('english.txt', 'r', encoding='utf-8') as file: + text = file.read() + +# Создание экземпляра Tokenizer и обучение на тексте +tokenizer = Tokenizer(char_level=True) +tokenizer.fit_on_texts([text]) + +# Преобразование текста в последовательности чисел +sequences = tokenizer.texts_to_sequences([text])[0] + +# Параметры модели +seq_length = 10 + +# Создание входных и выходных последовательностей +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) + +# Создание модели +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) + +# Генерация текста +# seed_text = "Птица размахнула могучими крыльями" +seed_text = "It seemed a longer job" + +generated_text = generate_text(seed_text, 250) +print(generated_text) diff --git a/kurmyza_pavel_lab_7/out_english.jpg b/kurmyza_pavel_lab_7/out_english.jpg new file mode 100644 index 0000000..9d76337 Binary files /dev/null and b/kurmyza_pavel_lab_7/out_english.jpg differ diff --git a/kurmyza_pavel_lab_7/out_russian.jpg b/kurmyza_pavel_lab_7/out_russian.jpg new file mode 100644 index 0000000..5ed5a7d Binary files /dev/null and b/kurmyza_pavel_lab_7/out_russian.jpg differ diff --git a/kurmyza_pavel_lab_7/russian.txt b/kurmyza_pavel_lab_7/russian.txt new file mode 100644 index 0000000..32819a1 --- /dev/null +++ b/kurmyza_pavel_lab_7/russian.txt @@ -0,0 +1,17 @@ +Когда человек сознательно или интуитивно выбирает себе в жизни какую-то цель, жизненную задачу, он невольно дает себе оценку. По тому, ради чего человек живет, можно судить и о его самооценке - низкой или высокой. + +Если человек живет, чтобы приносить людям добро, облегчать их страдания, давать людям радость, то он оценивает себя на уровне этой своей человечности. Он ставит себе цель, достойную человека. + +Только такая цель позволяет человеку прожить свою жизнь с достоинством и получить настоящую радость. Да, радость! Подумайте: если человек ставит себе задачей увеличивать в жизни добро, приносить людям счастье, какие неудачи могут его постигнуть? Не тому помочь? Но много ли людей не нуждаются в помощи? + +Если жить только для себя, своими мелкими заботами о собственном благополучии, то от прожитого не останется и следа. Если же жить для других, то другие сберегут то, чему служил, чему отдавал силы. + +Можно по-разному определять цель своего существования, но цель должна быть. Надо иметь и принципы в жизни. Одно правило в жизни должно быть у каждого человека, в его цели жизни, в его принципах жизни, в его поведении: надо прожить жизнь с достоинством, чтобы не стыдно было вспоминать. + +Достоинство требует доброты, великодушия, умения не быть эгоистом, быть правдивым, хорошим другом, находить радость в помощи другим. + +Ради достоинства жизни надо уметь отказываться от мелких удовольствий и немалых тоже… Уметь извиняться, признавать перед другими ошибку - лучше, чем врать. + +Обманывая, человек прежде всего обманывает самого себя, ибо он думает, что успешно соврал, а люди поняли и из деликатности промолчали. + +Жизнь - прежде всего творчество, но это не значит, что каждый человек, чтобы жить, должен родиться художником, балериной или ученым. Можно творить просто добрую атмосферу вокруг себя. Человек может принести с собой атмосферу подозрительности, какого-то тягостного молчания, а может внести сразу радость, свет. Вот это и есть творчество. \ No newline at end of file