Compare commits
1 Commits
main
...
faskhutdin
Author | SHA1 | Date | |
---|---|---|---|
2cc422ae74 |
46023
faskhutdinov_idris_lab_3/Clean_Data_pakwheels.csv
Normal file
84
faskhutdinov_idris_lab_3/Readme.md
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
# Лабораторная работа №3. Деревья решений
|
||||||
|
## 6 вариант
|
||||||
|
### Задание:
|
||||||
|
Решите с помощью библиотечной реализации дерева решений
|
||||||
|
задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету
|
||||||
|
«Методы искусственного интеллекта» на 99% ваших данных. Проверьте
|
||||||
|
работу модели на оставшемся проценте, сделайте вывод
|
||||||
|
|
||||||
|
В моем случае данными является датасет о продаже автомобилей. В датасете представлены следующие столбцы:
|
||||||
|
* id
|
||||||
|
* Company Name
|
||||||
|
* Model Name
|
||||||
|
* Price
|
||||||
|
* Model Year
|
||||||
|
* Location
|
||||||
|
* Mileage
|
||||||
|
* Engine Type
|
||||||
|
* Engine Capacity
|
||||||
|
* Color
|
||||||
|
* Assembly
|
||||||
|
* Body Type
|
||||||
|
* Transmission Type
|
||||||
|
* Registration Status
|
||||||
|
|
||||||
|
### Как запустить лабораторную
|
||||||
|
1. Запустить файл main.py
|
||||||
|
|
||||||
|
### Используемые технологии
|
||||||
|
1. Библиотека pandas
|
||||||
|
2. Библиотека scikit-learn
|
||||||
|
3. Python
|
||||||
|
4. IDE PyCharm
|
||||||
|
|
||||||
|
### Описание лабораторной работы
|
||||||
|
|
||||||
|
Программа загружает данные из файла Clean_Data_pakwheels.csv, после чего выбирает необходимые для создания модели столбцы.
|
||||||
|
Выбранные столбцы разделяются на целевую переменную (Y) и признаки (X). Некоторые столбцы в датасете представлены в виде текстовых значений, поэтому мы представляем их как численные значения
|
||||||
|
Затем программа обучает модель, выполняет прогнозы и оценивает точность. В консоль выводятся признаки по их важности
|
||||||
|
Целевой признак - Registration Status
|
||||||
|
### Результат
|
||||||
|
Accuracy: 0.9327548806941431
|
||||||
|
* Признак Важность
|
||||||
|
* 1 Mileage 0.332722
|
||||||
|
* 2 Price 0.332358
|
||||||
|
* 0 Model Year 0.175522
|
||||||
|
* 34 Transmission Type_Automatic 0.086699
|
||||||
|
* 13 Company Name_Honda 0.021243
|
||||||
|
* 31 Company Name_Toyota 0.015743
|
||||||
|
* 30 Company Name_Suzuki 0.008819
|
||||||
|
* 10 Company Name_Daihatsu 0.007749
|
||||||
|
* 25 Company Name_Nissan 0.007616
|
||||||
|
* 4 Company Name_Audi 0.003018
|
||||||
|
* 23 Company Name_Mercedes 0.001886
|
||||||
|
* 22 Company Name_Mazda 0.001800
|
||||||
|
* 18 Company Name_KIA 0.001416
|
||||||
|
* 24 Company Name_Mitsubishi 0.001044
|
||||||
|
* 29 Company Name_Subaru 0.000787
|
||||||
|
* 5 Company Name_BMW 0.000458
|
||||||
|
* 19 Company Name_Land 0.000407
|
||||||
|
* 27 Company Name_Range 0.000332
|
||||||
|
* 26 Company Name_Porsche 0.000331
|
||||||
|
* 35 Transmission Type_Manual 0.000050
|
||||||
|
* 20 Company Name_Lexus 0.000000
|
||||||
|
* 21 Company Name_MINI 0.000000
|
||||||
|
* 9 Company Name_Daewoo 0.000000
|
||||||
|
* 8 Company Name_DFSK 0.000000
|
||||||
|
* 14 Company Name_Hummer 0.000000
|
||||||
|
* 7 Company Name_Chevrolet 0.000000
|
||||||
|
* 11 Company Name_FAW 0.000000
|
||||||
|
* 17 Company Name_Jeep 0.000000
|
||||||
|
* 28 Company Name_SsangYong 0.000000
|
||||||
|
* 16 Company Name_Jaguar 0.000000
|
||||||
|
* 6 Company Name_Chery 0.000000
|
||||||
|
* 15 Company Name_Hyundai 0.000000
|
||||||
|
* 32 Company Name_United 0.000000
|
||||||
|
* 33 Company Name_Volvo 0.000000
|
||||||
|
* 3 Company Name_Adam 0.000000
|
||||||
|
* 12 Company Name_Fiat 0.000000
|
||||||
|
|
||||||
|
### Вывод
|
||||||
|
Исходя из результатов работы программы можно сделать вывод, что наиболее важным признаком, отвечающим за
|
||||||
|
то, зарегистрирована машина или нет, является её пробег, а так же её цена на рынке. Точность модели составляет 93%, что говорит о том,
|
||||||
|
что она классифицирует данные при заданных условиях с высокой точностью.
|
||||||
|
|
39
faskhutdinov_idris_lab_3/main.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import pandas as pd
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
from sklearn.tree import DecisionTreeClassifier
|
||||||
|
from sklearn.metrics import accuracy_score
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Чтение данных из csv файла
|
||||||
|
data = pd.read_csv("Clean_Data_pakwheels.csv")
|
||||||
|
# Выбор необходимых для создания модели столбцов
|
||||||
|
selected_columns = ['Company Name', 'Model Year', 'Mileage', 'Transmission Type', 'Price', 'Registration Status']
|
||||||
|
data = data[selected_columns]
|
||||||
|
# Разделение данных на признаки (X) и целевую переменную (y), целевая переменная в данном случае Registration Status
|
||||||
|
y = data['Registration Status']
|
||||||
|
data = data.drop(columns=['Registration Status'])
|
||||||
|
# В связи с тем, что некоторые столбцы представляют из себя текстовые значения, мы представляем их в виде числовых значений
|
||||||
|
X = pd.get_dummies(data)
|
||||||
|
# Тестовый набор в данном случае - 1%, обучающий - 99%
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01)
|
||||||
|
model = DecisionTreeClassifier()
|
||||||
|
model.fit(X_train, y_train)
|
||||||
|
# Предсказание на тестовом наборе
|
||||||
|
y_pred = model.predict(X_test)
|
||||||
|
|
||||||
|
# Оценка точности модели
|
||||||
|
accuracy = accuracy_score(y_test, y_pred)
|
||||||
|
print(f"Accuracy: {accuracy}")
|
||||||
|
|
||||||
|
# Важность признаков
|
||||||
|
importance = pd.DataFrame({'Признак': X.columns, 'Важность': model.feature_importances_})
|
||||||
|
importance = importance.sort_values(by='Важность', ascending=False)
|
||||||
|
print(importance)
|
||||||
|
|
||||||
|
|
||||||
|
main()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,93 +0,0 @@
|
|||||||
# Лабораторная работа №7. Рекуррентная нейронная сеть и задача генерации текста
|
|
||||||
## 12 вариант
|
|
||||||
___
|
|
||||||
|
|
||||||
### Задание:
|
|
||||||
Выбрать художественный текст на языке по варианту и обучить на нём рекуррентную
|
|
||||||
нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры
|
|
||||||
так, чтобы приблизиться к максимально осмысленному результату. Далее разбиться
|
|
||||||
на пары чётный-нечётный вариант, обменяться разработанными сетями и проверить,
|
|
||||||
как архитектура товарища справляется с вашим текстом. В завершении подобрать
|
|
||||||
компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.
|
|
||||||
|
|
||||||
### Вариант:
|
|
||||||
- Язык текста: **русский**
|
|
||||||
|
|
||||||
### Художественный текст:
|
|
||||||
- Отрывок из книги Ф.М. Достоевского — "Белые ночи" (в формате .txt)
|
|
||||||
|
|
||||||
___
|
|
||||||
|
|
||||||
### Запуск
|
|
||||||
- Запустить файл lab7.py
|
|
||||||
|
|
||||||
### Используемые технологии
|
|
||||||
- Язык программирования **Python**
|
|
||||||
- Среда разработки **PyCharm**
|
|
||||||
- Библиотеки:
|
|
||||||
* numpy
|
|
||||||
* keras
|
|
||||||
* os
|
|
||||||
|
|
||||||
### Описание программы
|
|
||||||
|
|
||||||
Здесь представлена модель глубокого обучения для генерации текста с помощью
|
|
||||||
библиотеки Keras и алгоритма LSTM. Чтобы построить модель генерации
|
|
||||||
художественного текста, требуются некоторые текстовые данные. В качестве набора
|
|
||||||
данных здесь используется отрывок из книги великого русского писателя-реалиста
|
|
||||||
в формате текстового файла.
|
|
||||||
|
|
||||||
**Шаги написания программы:**
|
|
||||||
1. **Предварительная обработка данных**
|
|
||||||
1. Перевод символов в нижний регистр
|
|
||||||
2. Формирование уникального набора использующихся в тексте символов
|
|
||||||
3. Преобразование текстовых данных в числовые значения
|
|
||||||
4. Создание последовательности символов (X - значений, Y - следующий символ)
|
|
||||||
5. Преобразование данных в массив логических значений
|
|
||||||
2. **Построение базовой модели**
|
|
||||||
1. Инициализация модели **Sequential**. это простой стек слоев,
|
|
||||||
с помощью которого нельзя представить произвольную модель.
|
|
||||||
2. Три слоя **LSTM** (по 200 единиц в каждом):
|
|
||||||
- В первом слое входная форма.
|
|
||||||
- Во втором слое параметр *return_sequences=True* для обработки тех же
|
|
||||||
последовательностей
|
|
||||||
- В третьем слое ничего лишнего
|
|
||||||
2. Три слоя **Dropout** с вероятностью 20% для проверки переобучения.
|
|
||||||
Dropout предполагает случайный кик нейронов из процесса обучения.
|
|
||||||
Он обеспечивает, чтобы нейронная сеть не стала слишком зависимой от
|
|
||||||
любого одного узла.
|
|
||||||
3. Один "плотный" слой **Dense** в конце, который даёт вывод символов.
|
|
||||||
Dense обрабатывает каждый элемент предыдущего слоя, выполняя матричное
|
|
||||||
перемножение этих элементов со своими весами.
|
|
||||||
4. Конфигурация модели для категориальной классификации.
|
|
||||||
3. **Обучение модели**
|
|
||||||
1. **epochs=50** (одна эпоха = один проход вперёд и один проход назад
|
|
||||||
всех обучающих примеров)
|
|
||||||
2. **batch_size=100** (количество обучающих примеров за один проход
|
|
||||||
вперёд/назад. Чем больше размер пакета, тем больше памяти лучше использовать.
|
|
||||||
4. **Сохранение модели** (во избежание повторного обучения и ради экономии времени)
|
|
||||||
5. **Генерация текста на основе сохранённой модели**
|
|
||||||
1. Загрузка модели
|
|
||||||
2. Выбор случайной стартовой точки в исходном тексте
|
|
||||||
3. Генерация назначенного количества символов
|
|
||||||
---
|
|
||||||
### Пример работы
|
|
||||||
|
|
||||||
*В ходе прогона программы было зафиксировано несколько результатов генерации
|
|
||||||
200 символов. Примеры приведены ниже.*
|
|
||||||
|
|
||||||
![Graphics](result_1.jpg)
|
|
||||||
|
|
||||||
![Graphics](result_2.jpg)
|
|
||||||
|
|
||||||
![Graphics](result_3.jpg)
|
|
||||||
|
|
||||||
![Graphics](result_4.jpg)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Вывод
|
|
||||||
Итак, рекуррентная нейронная сеть справилась с задачей генерации текста.
|
|
||||||
Если говорить о качестве, то требуется более глубокое обучение и больше текста.
|
|
||||||
И тогда нейросеть сможет писать даже в стиле Достоевского. Но по времени это
|
|
||||||
слишком затратно. Однако в рамках лабораторной работы результат вышел приемлемый.
|
|
@ -1,127 +0,0 @@
|
|||||||
"""
|
|
||||||
Выбрать художественный текст на языке по варианту и обучить на нём рекуррентную нейронную сеть для решения задачи
|
|
||||||
генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату.
|
|
||||||
|
|
||||||
Далее разбиться на пары чётный-нечётный вариант, обменяться разработанными сетями и проверить, как архитектура товарища
|
|
||||||
справляется с вашим текстом.
|
|
||||||
|
|
||||||
В завершении подобрать компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами текстов.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
# 12 вариант
|
|
||||||
# Вариант языка текста: русский
|
|
||||||
# Художественный текст: Книга "Ф.М. Достоевский — Преступление и наказание"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import os
|
|
||||||
import numpy as np
|
|
||||||
from keras.models import Sequential
|
|
||||||
from keras.layers import Dense, Dropout, LSTM
|
|
||||||
from keras.utils import to_categorical
|
|
||||||
|
|
||||||
|
|
||||||
FILE_NAME = 'belye-nochi.txt'
|
|
||||||
|
|
||||||
# Открытие файла
|
|
||||||
df_text = (open(FILE_NAME, encoding='utf-8').read())
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""
|
|
||||||
ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА ДАННЫХ
|
|
||||||
"""""""""""""""""""""""""""""""""
|
|
||||||
# Перевод всех символов в нижний регистр для упрощения обучения
|
|
||||||
df_text = df_text.lower()
|
|
||||||
|
|
||||||
# Формирование набора символов на основе текста
|
|
||||||
characters = sorted(list(set(df_text)))
|
|
||||||
print("\033[92m\n---> Итого символов: \033[00m", len(characters))
|
|
||||||
|
|
||||||
# Сопоставления символов к номеру
|
|
||||||
char_to_n = {char: n for n, char in enumerate(characters)}
|
|
||||||
|
|
||||||
# Массивы
|
|
||||||
X = [] # обучающий
|
|
||||||
Y = [] # целевой
|
|
||||||
|
|
||||||
# Длина исходного текста
|
|
||||||
length = len(df_text)
|
|
||||||
# Длина последовательности символов для предсказания конкретного символа
|
|
||||||
seq_length = 5
|
|
||||||
|
|
||||||
# Перебора полного текста
|
|
||||||
for i in range(0, length - seq_length, 1):
|
|
||||||
sequence = df_text[i:i + seq_length]
|
|
||||||
label = df_text[i + seq_length]
|
|
||||||
X.append([char_to_n[char] for char in sequence])
|
|
||||||
Y.append(char_to_n[label])
|
|
||||||
|
|
||||||
# Масштабирование целых чисел в диапазон от 0 до 1 для облегчения изучения шаблонов сетью
|
|
||||||
X_modified = np.reshape(X, (len(X), seq_length, 1))
|
|
||||||
X_modified = X_modified / float(len(characters))
|
|
||||||
Y_modified = to_categorical(Y)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""
|
|
||||||
ПОСТРОЕНИЕ МОДЕЛИ
|
|
||||||
"""""""""""""""""""""
|
|
||||||
# Инициализация модели
|
|
||||||
model = Sequential()
|
|
||||||
|
|
||||||
# Пополнение модели атрибутами
|
|
||||||
model.add(LSTM(700, input_shape=(X_modified.shape[1], X_modified.shape[2]), return_sequences=True)) # первый слой на 700 единиц с входной формой
|
|
||||||
model.add(Dropout(0.2)) # кик нейронов с вероятностью 20%
|
|
||||||
model.add(LSTM(700, return_sequences=True)) # второй слой на 700 единиц, обрабатывающий те же последовательности
|
|
||||||
model.add(Dropout(0.2))
|
|
||||||
model.add(LSTM(700)) # третий слой на 700 единиц
|
|
||||||
model.add(Dropout(0.2))
|
|
||||||
model.add(Dense(Y_modified.shape[1], activation='softmax')) # сеть с плотным слоем для вывода символов
|
|
||||||
|
|
||||||
# Конфигурация модели с вычислением категориальных потерь кроссэнтропии
|
|
||||||
model.compile(loss='categorical_crossentropy', optimizer='adam')
|
|
||||||
|
|
||||||
# Обучение модели, если сохранённая модель в текущей папке отсутствует
|
|
||||||
if not os.path.exists('save_text_generator_deeper_model.h5'):
|
|
||||||
# Обучение модели на 50 эпохах и 100 обучающих примерах за один проход
|
|
||||||
model.fit(X_modified, Y_modified, epochs=50, batch_size=100)
|
|
||||||
# Сохранение обученной модели в файл в текущей папке
|
|
||||||
model.save_weights('save_text_generator_deeper_model.h5')
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
Генерация текста
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
# Загрузка обученной модели с текущей папки
|
|
||||||
model.load_weights('save_text_generator_deeper_model.h5')
|
|
||||||
# Сопоставления номеров обратно к символам
|
|
||||||
n_to_char = dict((i, c) for i, c in enumerate(characters))
|
|
||||||
|
|
||||||
# Выбор случайной точки старта в тексте для генерации
|
|
||||||
start = np.random.randint(0, len(X) - 1)
|
|
||||||
# Последовательность этой точки
|
|
||||||
pattern = X[start]
|
|
||||||
|
|
||||||
txtxt = "" # строка результата
|
|
||||||
# сохранение старта в результат
|
|
||||||
for value in pattern:
|
|
||||||
txtxt += n_to_char[value]
|
|
||||||
print("\033[92m\n---> Точка старта: \033[00m", txtxt)
|
|
||||||
|
|
||||||
# Генерация 200 символов
|
|
||||||
for i in range(200):
|
|
||||||
# Масштабирование последовательности символов
|
|
||||||
x = np.reshape(pattern, (1, len(pattern), 1))
|
|
||||||
x = x / float((len(characters)))
|
|
||||||
prediction = model.predict(x, verbose=0) # прогноз вероятностей к каждому символу
|
|
||||||
index = np.argmax(prediction) # выбор индекса лучшего по вероятности
|
|
||||||
txtxt += n_to_char[index] # запись символа с таким индексом в результат
|
|
||||||
# сохранение индекса символа в конечную результирующую последовательность
|
|
||||||
pattern.append(index)
|
|
||||||
pattern = pattern[1:len(pattern)]
|
|
||||||
|
|
||||||
print("\033[92m\n[----------> Результат <----------]\033[00m")
|
|
||||||
print(txtxt)
|
|
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB |
@ -1 +0,0 @@
|
|||||||
Amidst the bustling cityscape, where the rhythm of life beats in harmony with the urban pulse, each dawn brings forth a cascade of city lights painting the skyline in hues of gold and amber. Strangers pass with nods and smiles, creating a tapestry of diverse connections. Skyscrapers line the streets, reflecting the vibrant energy of a metropolis in constant motion. As night falls, the city's heartbeat resonates in lively gatherings at eclectic eateries, where stories are exchanged, and the city's vibrant spirit comes alive.
|
|
@ -1 +0,0 @@
|
|||||||
In the bustling cityscape where the rhythm of life beats in harmony with the urban pulse each dawn brings forth a cascade of city lights painting the skyline in hues of gold and amber strangers pass with nods and smiles creating a tapestry of diverse connections skyscrapers line the streets reflecting the vibrant energy of a metropolis in constant motion as night falls the city's heartbeat resonates in lively gatherings at
|
|
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 50 KiB |
@ -1,68 +0,0 @@
|
|||||||
import numpy as np
|
|
||||||
from tensorflow import keras
|
|
||||||
from tensorflow.keras.preprocessing.text import Tokenizer
|
|
||||||
from tensorflow.keras.preprocessing.sequence import pad_sequences
|
|
||||||
|
|
||||||
def prepare_and_train_model(file_path, epochs):
|
|
||||||
# Считывание данных из файла
|
|
||||||
with open(file_path, encoding='utf-8') as f:
|
|
||||||
data = f.read()
|
|
||||||
|
|
||||||
# Создание токенизатора
|
|
||||||
tokenizer = Tokenizer()
|
|
||||||
tokenizer.fit_on_texts([data])
|
|
||||||
|
|
||||||
# Преобразование текста в последовательности чисел
|
|
||||||
sequences = tokenizer.texts_to_sequences([data])
|
|
||||||
|
|
||||||
# Создание обучающих данных
|
|
||||||
input_sequences = []
|
|
||||||
for sequence in sequences:
|
|
||||||
for i in range(1, len(sequence)):
|
|
||||||
n_gram_sequence = sequence[:i+1]
|
|
||||||
input_sequences.append(n_gram_sequence)
|
|
||||||
|
|
||||||
# Предобработка для получения одинаковой длины последовательностей
|
|
||||||
max_sequence_len = max([len(sequence) for sequence in input_sequences])
|
|
||||||
input_sequences = pad_sequences(input_sequences, maxlen=max_sequence_len, padding='pre')
|
|
||||||
|
|
||||||
# Разделение на входные и выходные данные
|
|
||||||
x, y = input_sequences[:, :-1], input_sequences[:, -1]
|
|
||||||
|
|
||||||
# Создание модели рекуррентной нейронной сети
|
|
||||||
model = keras.Sequential([
|
|
||||||
keras.layers.Embedding(len(tokenizer.word_index) + 1, 100, input_length=max_sequence_len-1),
|
|
||||||
keras.layers.Dropout(0.2),
|
|
||||||
keras.layers.LSTM(150),
|
|
||||||
keras.layers.Dense(len(tokenizer.word_index) + 1, activation='softmax')
|
|
||||||
])
|
|
||||||
|
|
||||||
# Компиляция и обучение модели
|
|
||||||
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
|
|
||||||
model.fit(x, y, epochs=epochs, verbose=1)
|
|
||||||
|
|
||||||
return model, tokenizer, max_sequence_len
|
|
||||||
|
|
||||||
def generate_text_from_model(model, tokenizer, max_sequence_len, seed_text, next_words):
|
|
||||||
# Генерация текста
|
|
||||||
for _ in range(next_words):
|
|
||||||
token_list = tokenizer.texts_to_sequences([seed_text])[0]
|
|
||||||
token_list = pad_sequences([token_list], maxlen=max_sequence_len-1, padding='pre')
|
|
||||||
predicted = model.predict(token_list)
|
|
||||||
predict_index = np.argmax(predicted, axis=-1)
|
|
||||||
word = tokenizer.index_word.get(predict_index[0], '')
|
|
||||||
seed_text += " " + word
|
|
||||||
|
|
||||||
return seed_text
|
|
||||||
|
|
||||||
model_rus, tokenizer_rus, max_sequence_len_rus = prepare_and_train_model('russian.txt', 150)
|
|
||||||
rus_text_generated = generate_text_from_model(model_rus, tokenizer_rus, max_sequence_len_rus, "В", 55)
|
|
||||||
|
|
||||||
model_eng, tokenizer_eng, max_sequence_len_eng = prepare_and_train_model('english.txt', 150)
|
|
||||||
eng_text_generated = generate_text_from_model(model_eng, tokenizer_eng, max_sequence_len_eng, "In the", 69)
|
|
||||||
|
|
||||||
with open('russian_generated.txt', 'w', encoding='utf-8') as f_rus:
|
|
||||||
f_rus.write(rus_text_generated)
|
|
||||||
|
|
||||||
with open('english_generated.txt', 'w', encoding='utf-8') as f_eng:
|
|
||||||
f_eng.write(eng_text_generated)
|
|
@ -1,35 +0,0 @@
|
|||||||
|
|
||||||
# Генератор Текста на Рекуррентных Нейронных Сетях
|
|
||||||
## Общее задание
|
|
||||||
|
|
||||||
Выбран художественный англоязычный текст для обучения рекуррентной нейронной сети (RNN) с целью генерации текста. Задача включает подбор архитектуры и параметров для приближения к максимально осмысленным результатам. Далее предусмотрено обмен разработанными сетями с партнером, проверка, как архитектура товарища справляется с вашим текстом, и в конечном итоге подбор компромиссной архитектуры, справляющейся хорошо с обоими видами текстов.
|
|
||||||
|
|
||||||
## Задание по вариантам
|
|
||||||
|
|
||||||
Вариант: Нечетный вариант (художественный англоязычный текст).
|
|
||||||
Запуск программы
|
|
||||||
Программу можно запустить через файл app.py.
|
|
||||||
|
|
||||||
Технологии
|
|
||||||
Язык программирования: Python
|
|
||||||
Библиотеки: TensorFlow, Keras, Flask
|
|
||||||
|
|
||||||
## Описание работы программы
|
|
||||||
Программа реализует генерацию текста с использованием рекуррентных нейронных сетей (RNN) с помощью библиотек TensorFlow и Keras. Flask используется для создания веб-приложения, которое взаимодействует с моделью RNN. Пользователь вводит начальный текст (seed text) через веб-интерфейс, после чего программа отправляет запрос на сервер, который в свою очередь использует модель для генерации следующего участка текста, основываясь на введенном начальном тексте.
|
|
||||||
|
|
||||||
Входные данные
|
|
||||||
Текстовый файл (например, 'your_text_file.txt'), содержащий обучающие данные.
|
|
||||||
Веб-интерфейс для ввода начального текста.
|
|
||||||
Выходные данные
|
|
||||||
Сгенерированный текст, отображаемый в веб-интерфейсе.
|
|
||||||
|
|
||||||
## Вывод консоли:
|
|
||||||
![img_2.png](img_2.png)
|
|
||||||
![img_1.png](img_1.png)
|
|
||||||
![img.png](img.png)
|
|
||||||
|
|
||||||
## Получившийся текст:
|
|
||||||
In the bustling cityscape where the rhythm of life beats in harmony with the urban pulse each dawn brings forth a cascade of city lights painting the skyline in hues of gold and amber strangers pass with nods and smiles creating a tapestry of diverse connections skyscrapers line the streets reflecting the vibrant energy of a metropolis in constant motion as night falls the city's heartbeat resonates in lively gatherings at
|
|
||||||
|
|
||||||
## Вывод:
|
|
||||||
В результате выполнения лабораторной работы были успешно созданы и обучены рекуррентные нейронные сети (RNN) для генерации текста на русском и английском языках.
|
|
@ -1 +0,0 @@
|
|||||||
В захватывающем мире исследований глубокого космоса, где звезды танцуют свой бескрайний вальс, каждое утро начинается с таинственного свечения далеких галактик, окрашивая космическую панораму в оттенках изумрудных и сапфировых лучей. Космические путешественники встречают друг друга с уважением, обмениваясь впечатлениями о чудесах вселенной. Межзвездные аллеи украшены мерцающими астероидами, создавая ощущение бескрайнего волнения и удивления. По наступлении ночи исследователи созвездий собираются в космических кафе, где звездные истории обретают новые оттенки в мистической атмосфере.
|
|
@ -1 +0,0 @@
|
|||||||
В захватывающем мире исследований глубокого где где звезды танцуют свой бескрайний вальс каждое каждое начинается с таинственного свечения далеких галактик окрашивая космическую панораму в оттенках изумрудных и сапфировых лучей космические путешественники встречают друг друга с уважением обмениваясь впечатлениями о чудесах вселенной межзвездные аллеи украшены мерцающими астероидами создавая ощущение бескрайнего волнения и удивления по наступлении ночи исследователи
|
|