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

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


Скачать книгу
обучения модель оценивается на тестовом наборе данных для оценки ее производительности. Метрики, такие как точность, полнота и F1-мера, могут использоваться для измерения качества классификации.

      Применение модели:

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

      Пример кода на Python с использованием библиотек TensorFlow и Keras для классификации текста с использованием CNN:

      import tensorflow as tf

      from tensorflow.keras.models import Sequential

      from tensorflow.keras.layers import Embedding, Conv1D, GlobalMaxPooling1D, Dense

      from tensorflow.keras.preprocessing.text import Tokenizer

      from tensorflow.keras.preprocessing.sequence import pad_sequences

      from sklearn.model_selection import train_test_split

      from sklearn.preprocessing import LabelEncoder

      from sklearn.metrics import accuracy_score

      # Подготовка размеченных данных (пример данных)

      texts = ["Политика: новости о выборах", "Спорт: результаты чемпионата", "Экономика: рост ВВП", "Наука: новое исследование"]

      labels = ["Политика", "Спорт", "Экономика", "Наука"]

      # Преобразование меток в числа

      label_encoder = LabelEncoder()

      y = label_encoder.fit_transform(labels)

      # Токенизация и векторизация текстов

      tokenizer = Tokenizer()

      tokenizer.fit_on_texts(texts)

      word_index = tokenizer.word_index

      sequences = tokenizer.texts_to_sequences(texts)

      # Подготовка последовательностей и паддинг

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

      padded_sequences = pad_sequences(sequences, maxlen=max_sequence_length)

      # Разделение на обучающий и тестовый наборы

      x_train, x_test, y_train, y_test = train_test_split(padded_sequences, y, test_size=0.2, random_state=42)

      # Создание CNN модели

      model = Sequential()

      model.add(Embedding(input_dim=len(word_index) + 1, output_dim=100, input_length=max_sequence_length))

      model.add(Conv1D(128, 3, activation="relu")) # Изменено количество фильтров и размер свертки

      model.add(GlobalMaxPooling1D())

      model.add(Dense(len(set(y)), activation="softmax"))

      # Компиляция модели

      model.compile(loss="sparse_categorical_crossentropy", optimizer="adam", metrics=["accuracy"])

      # Обучение модели

      model.fit(x_train, y_train, epochs=10, validation_split=0.2)

      # Оценка модели

      y_pred = model.predict(x_test)

      y_pred = tf.argmax(y_pred, axis=1).numpy()

      accuracy = accuracy_score(y_test, y_pred)

      print(f"Точность: {accuracy:.4f}")

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

      ```python

      accuracy = accuracy_score(y_test, y_pred)

      ```

      `accuracy` – это значение точности, которое будет выведено на экран. Это число будет между 0 и 1 и показывает, какой процент текстов в тестовом наборе был правильно классифицирован моделью.

      Интерпретация результата:

      – Если точность равна 1.0, это означает, что модель идеально классифицировала все тексты в тестовом наборе и не допустила ни одной ошибки.

      – Если точность равна 0.0, это означает, что модель не смогла правильно классифицировать ни один текст.

      – Если точность находится между 0.0 и 1.0, это показывает процент правильно классифицированных текстов. Например, точность 0.8 означает, что модель правильно классифицировала 80% текстов.

      Важно помнить, что точность – это только одна из метрик, которые можно использовать для оценки модели. Для полного понимания производительности модели также рекомендуется рассмотреть другие метрики, такие как точность (precision), полнота (recall), F1-мера (F1-score) и матрица ошибок


Скачать книгу