Классификация текста — это метод машинного обучения, который присваивает набор предопределенных категорий открытому тексту. Классификаторы текста можно использовать для организации, структурирования и категоризации практически любого текста — от документов, медицинских исследований и файлов до всего Интернета. (Взято с: https://monkeylearn.com/text-classification/)

В этой статье будет рассказано о классификации текста с использованием библиотеки TensorFlow.

Импорт библиотеки

Код ниже показывает библиотеку, которая будет использоваться для этого проекта.

Загрузите данные из набора данных и данных предварительной обработки

В этой статье мы будем использовать Набор данных эмоций для НЛП, доступный в наборах данных Kaggle. Данные, взятые для этого проекта, представляют собой только данные train.txt, потому что будет симуляция распределения между набором поездов и набором проверки, который составляет 80% для набора поездов и 20% для набора проверки.

Данные разделены на 2 столбца, а именно столбец «Документ» и столбец «Эмоции». Набор данных содержит в общей сложности 16 000 текстов, соответствующих 6 различным классификациям: радость (5362 текста), печаль (4666 текстов), гнев (2159 текстов), страх (1937 текстов), любовь (1304 текста) и удивление (572 текста). ). Модель предназначена для разработки классификации эмоций с использованием НЛП. Кроме того, эту модель можно использовать для ответа на такие вопросы, как «какое настроение получено на основе комментариев клиентов?».

Чтобы подготовить данные для этого проекта, нам нужно удалить специальный символ, удалив NaN из данных и создав метку для столбца эмоций, используя приведенный ниже синтаксис.

Разделите набор данных на набор для обучения и набор для проверки

В приведенном ниже коде показан синтаксис для разделения набора текстовых данных на набор для обучения и набор для тестирования. Данные разделены на соотношение 80:20, что составляет 80% обучающего набора и 20% проверочного набора. Затем с помощью функции токенизатора.

Построить модель с использованием LSTM и Sequential

Код ниже показывает модель, построенную с использованием LSTM и Sequential. Модель будет скомпилирована оптимизатором Adam.

Определить обратный вызов

Обратный вызов используется для завершения обучения модели в нужное время, чтобы избежать переоснащения или недообучения модели. В этом проекте функция обратного вызова останавливается после достижения точности › 90%.

Обучение и оценка модели

В приведенном ниже коде показан синтаксис для обучения модели с использованием метода подгонки.

Ниже представлен процесс обучения и проверки точности, а также результат обратного вызова.

Функция обратного вызова останавливается после 11 эпохи, а точность достигает 90,22%.

График точности и график потерь для набора поездов и набора проверки

Чтобы понять процесс обучения и оценки, мы можем построить для него график точности и потерь.

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

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

Улучшенную модель можно создать, перестроив синтаксис модели и настроив Embedding, LSTM и Layer Dense.

Исходный код:

https://github.com/Espreilla/Emotion-Categorization-Using-TensorFlow

Использованная литература: