# Лабораторная работа №4: Распознавание последовательностей **Аникеев А.А; Чагин С.А. — А-02-22** ## Номер бригады - 5 ### Цель работы Получить практические навыки обработки текстовой информации с помощью рекуррентных искусственных нейронных сетей при решении задачи определения тональности текста. ### Определение варианта - Номер бригады: k = 5 - random_state = (4k - 1) = 19 ### Подготовка среды ```python import os os.chdir('/content/drive/MyDrive/Colab Notebooks/IS_LR4') ``` --- ### Пункт №1. Настройка блокнота для работы с аппаратным ускорителем GPU. ```python import tensorflow as tf device_name = tf.test.gpu_device_name() if device_name != '/device:GPU:0': raise SystemError('GPU device not found') print('Found GPU at: {}'.format(device_name)) ``` ### Пункт №2. Загрузка набора данных IMDb. ```python # загрузка датасета from keras.datasets import imdb vocabulary_size = 5000 index_from = 3 (X_train, y_train), (X_test, y_test) = imdb.load_data(path="imdb.npz", num_words=vocabulary_size, skip_top=0, maxlen=None, seed=19, start_char=1, oov_char=2, index_from=index_from ) ``` **Результат выполнения:** ``` Размер обучающего множества X_train: (25000,) Размер обучающих меток y_train: (25000,) Размер тестового множества X_test: (25000,) Размер тестовых меток y_test: (25000,) ``` ### Пункт №3. Вывод отзывов из обучающего множества в виде списка индексов слов. ```python # создание словаря для перевода индексов в слова # заргузка словаря "слово:индекс" word_to_id = imdb.get_word_index() # уточнение словаря word_to_id = {key:(value + index_from) for key,value in word_to_id.items()} word_to_id[""] = 0 word_to_id[""] = 1 word_to_id[""] = 2 word_to_id[""] = 3 # создание обратного словаря "индекс:слово" id_to_word = {value:key for key,value in word_to_id.items()} idx = 19 review_indices = X_train[idx] print("Отзыв в виде индексов:\n", review_indices) review_text = " ".join(id_to_word.get(i, "?") for i in review_indices) print("\nОтзыв в виде текста:\n", review_text) print("\nДлина отзыва (количество индексов):", len(review_indices)) label = y_train[idx] class_name = "Positive" if label == 1 else "Negative" print("Метка класса:", label, "| Класс:", class_name) ``` **Результат выполнения:** ``` Отзыв в виде индексов: [1, 13, 296, 14, 22, 171, 211, 5, 32, 13, 70, 135, 15, 14, 9, 364, 352, 1916, 5, 15, 12, 127, 24, 28, 233, 8, 81, 19, 6, 147, 479, 2309, 156, 354, 9, 55, 338, 21, 12, 9, 959, 7, 1763, 116, 4361, 259, 37, 296, 14, 22, 150, 242, 104, 7, 2145, 17, 49, 932, 2, 2, 37, 620, 19, 6, 1056, 40, 49, 4618, 2112, 13, 70, 64, 8, 135, 15, 50, 9, 76, 128, 108, 44, 2145, 5, 2321, 11, 148, 153, 5, 15, 2200, 7, 445, 9, 55, 76, 467, 856, 13, 70, 386, 1124, 22, 2, 11, 63, 25, 70, 67, 530, 239, 7, 2, 284, 2, 2, 11, 6, 1686, 7, 2, 2145] Отзыв в виде текста: i watched this film few times and all i can say that this is low budget rubbish and that it does not have anything to do with a real history facts actors performances is very poor but it is result of limited acting possibilities anyone who watched this film now probably think of hitler as some crazy who running with a gun like some chicago gangster i can only to say that there is much better films about hitler and germany in those years and that rise of evil is very much under average i can recommend german film in which you can see brilliant performance of actor in a roll of hitler Длина отзыва (количество индексов): 121 Метка класса: 0 | Класс: Negative ``` ### Пункт №4. Вывод максимальной и минимальной длины отзыва в обучающем множестве. ```python print("Максимальная длина отзыва:", len(max(X_train, key=len))) print("Минимальная длина отзыва:", len(min(X_train, key=len))) ``` **Результат выполнения:** ``` Максимальная длина отзыва: 2494 Минимальная длина отзыва: 11 ``` ### Пункт №5. Проведение предобработки данных. ```python ``` **Результат выполнения:** ``` ```