Нейросети. Обработка естественного языка. Джейд Картер
Чтение книги онлайн.

Читать онлайн книгу Нейросети. Обработка естественного языка - Джейд Картер страница 18

СКАЧАТЬ его по карте признаков.

      Полносвязные слои: После применения сверточных и пулинговых слоев информация передается в полносвязные слои для классификации или регрессии. Полносвязные слои работают с вектором признаков, полученным из карты признаков после операции пулинга.

      Преимущество использования CNN для текстовых данных заключается в способности модели извлекать локальные и глобальные признаки из текста, что может улучшить способность модели к анализу и классификации текста. Этот метод также позволяет модели работать с последовательностями разной длины, благодаря использованию окон и пулинга.

      Следующий код решает задачу бинарной классификации текстовых отзывов на положительные и отрицательные. Каждый отзыв имеет метку 1 (положительный) или 0 (отрицательный).

      В результате выполнения этого кода:

      1. Мы создаем модель сверточной нейронной сети (CNN), которая способна анализировать тексты.

      2. Загружаем обучающие данные в виде массива текстов `texts` и их меток `labels`.

      3. Создаем токенизатор для преобразования текстов в численные последовательности и приводим тексты к числовому представлению.

      4. Выравниваем текстовые последовательности до максимальной длины `max_sequence_length`, чтобы их можно было использовать в нейронной сети.

      5. Создаем модель CNN, состоящую из слоев Embedding, Conv1D, GlobalMaxPooling1D и Dense.

      6. Компилируем модель, используя оптимизатор "adam" и функцию потерь "binary_crossentropy".

      7. Обучаем модель на обучающих данных в течение 10 эпох.

      8. Оцениваем модель на тестовых данных (4 отдельных отзыва).

      Результаты этого кода включают в себя точность модели на тестовых данных, которая измеряет, насколько хорошо модель классифицирует новые отзывы как положительные или отрицательные. Вы увидите значение точности на тестовых данных в консоли после выполнения кода. Точность ближе к 1.0 означает, что модель хорошо обучена и способна правильно классифицировать тексты.

      import tensorflow as tf

      import numpy as np

      import matplotlib.pyplot as plt

      # Генерируем примеры текстовых данных

      texts = ["Это отличный продукт.", "Этот товар ужасен.", "Мне нравится эта книга.", "Не советую этот фильм."]

      labels = [1, 0, 1, 0] # 1 – положительный отзыв, 0 – отрицательный отзыв

      # Создаем токенизатор и преобразуем тексты в последовательности чисел

      tokenizer = tf.keras.preprocessing.text.Tokenizer(num_words=1000, oov_token="<OOV>")

      tokenizer.fit_on_texts(texts)

      sequences = tokenizer.texts_to_sequences(texts)

      # Подготавливаем данные для CNN

      max_sequence_length = max([len(seq) for seq in sequences])

      padded_sequences = tf.keras.preprocessing.sequence.pad_sequences(sequences, maxlen=max_sequence_length)

      # Преобразуем метки в массив numpy

      labels = np.array(labels)

      # Создаем модель CNN

      model = tf.keras.Sequential([

      tf.keras.layers.Embedding(input_dim=1000, output_dim=16, input_length=max_sequence_length),

      tf.keras.layers.Conv1D(128, 3, activation='relu'), # Уменьшили размер ядра до 3

      tf.keras.layers.GlobalMaxPooling1D(),

      tf.keras.layers.Dense(1, СКАЧАТЬ