форкнуто от main/is_dnn
Родитель
86af704063
Сommit
f447f0b776
@ -0,0 +1,122 @@
|
|||||||
|
# Лабораторная работа №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["<PAD>"] = 0
|
||||||
|
word_to_id["<START>"] = 1
|
||||||
|
word_to_id["<UNK>"] = 2
|
||||||
|
word_to_id["<UNUSED>"] = 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]
|
||||||
|
|
||||||
|
Отзыв в виде текста:
|
||||||
|
<START> 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 <UNK> <UNK> 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 <UNK> in which you can see brilliant performance of <UNK> actor <UNK> <UNK> in a roll of <UNK> hitler
|
||||||
|
|
||||||
|
Длина отзыва (количество индексов): 121
|
||||||
|
Метка класса: 0 | Класс: Negative
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт №4. Вывод максимальной и минимальной длины отзыва в обучающем множестве.
|
||||||
|
|
||||||
|
```python
|
||||||
|
print("Максимальная длина отзыва:", len(max(X_train, key=len)))
|
||||||
|
print("Минимальная длина отзыва:", len(min(X_train, key=len)))
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат выполнения:**
|
||||||
|
```
|
||||||
|
Максимальная длина отзыва: 2494
|
||||||
|
Минимальная длина отзыва: 11
|
||||||
|
```
|
||||||
|
|
||||||
|
### Пункт №5. Проведение предобработки данных.
|
||||||
|
|
||||||
|
```python
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
**Результат выполнения:**
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
Загрузка…
Ссылка в новой задаче