Назад в библиотеку

Формирование датасета для решения задач машинного обучения

В. О. Вовченко, В. А. Светличная, Н. К. Андриевская

Донецкий национальный технический университет, г. Донецк

Источник: Информатика и кибернетика № 2 (32), 2023, Донецк, ДонНТУ - С. 5-12

Введение

Одной из постоянных задач менеджера отдела продаж любого предприятия по производству продукции, в том числе и косметической, является ежедневная работа с рекламациями. В процессе анализа поступающих рекламаций возникла необходимость разработки современного интеллектуального инструмента, применение которого автоматизировало бы процесс обработки рекламаций [1]. Повышение эффективности претензионной деятельности должно проводиться за счёт применения актуальных средств информационных технологий, в частности машинного обучения (МО) и интеллектуального анализа данных (ИАД) [2].

Интеллектуальная обработка документов позволяет преобразовать неструктурированные и полуструктурированные данные в удобный структурированный формат. Другими словами данные из документов (сообщения, PDF-файлы, сканы, электронные письма и т. д.) извлекаются и преобразуются в текстовые оцифрованные данные, готовые к обработке [3].

Решение задач, связанных с извлечением информации из текстов, часто требует наличия специально подготовленных текстовых коллекций, собранных, обработанных и размеченных в соответствии со спецификой решаемой задачи. Такие коллекции называются текстовыми корпусами. Корпус текстов — это вид корпуса данных, единицами которого являются тексты или их достаточно значительные фрагменты, включающие, например, какие-то фрагменты текстов данной проблемной области и являются исходными материалами для дальнейшей обработки и получении датасетов, используемых в дальнейшем при МО и ИАД.

Датасет (англ. dataset) – это обработанный и структурированный массив данных, который состоит из двух основных компонентов: непосредственно объекта и его параметров. Параметры объекта обычно задают не словами, а цифрами [4].

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

  1. Таблица, в строках которой расположены данные, а в колонках – параметры.
  2. Граф, содержащий данные о связях между объектами. Данные графовой модели можно представить в виде таблицы, где в строках и колонках указаны данные, а в пересечениях – связи между ними.
  3. Упорядоченные записи для данных, для которых основную роль играет конкретное расположение в таблице.

Часто бывает так, что датасетов по конкретному запросу не существует. В таком случае датасет приходится формировать самостоятельно.

Целью данной статьи является исследование этапов и методов предобработки текстов для формирования собственного датасета для МО.

Этапы предподготовки данных

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

Типовой процесс решения задач с МО и ИАД

Рисунок 1 – Типовой процесс решения задач с МО и ИАД

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

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

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

Методов обработки пропусков числовых данных предостаточно. Для обработки текстовых данных целесообразно применять следующие методы:

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

Цель третьего этапа заключается в том, чтобы обеспечить структурированность, однородность и согласованность данных.

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

Задача процесса нормализации – улучшить качество работы алгоритмов за счёт приведения данных к нужному диапазону. К основным методам можно отнести: нормализацию на максимум; нормализацию на интервале; ранговую нормализацию.

Задача стандартизации заключается в улучшении качества работы алгоритмов за счёт приведения данных к стандартному нормальному распределению.

Нормализация и стандартизация существенно повышают эффективность метрических алгоритмов классификации: метода ближайшего соседа (k-Nearest Neighbors), метода k-средних (k-means), метода машин опорных векторов (Support Vector Machine).

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

Формирование корпуса

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

Для ее решения были реализованы следующие подходы:

  1. Способ получения данных из отзывов на продукцию данного предприятия на маркетплейсе Wildberries. Прежде всего, следует отметить, что все отзывы делятся на 5 уровней по степени негативности. Для обработки отзывов из личного кабинета Wildberries, были оставлены только отзывы уровня 1, 2 и 3, что говорит больше о негативности отзыва. Разметка данных, включая ее категорию, выполнялись вручную (см. рис. 2 и рис. 3).
  2. Способ, использующий для формирования корпуса данных внешние источники с аналогичными данными. Датасет Nykaa-Cosmetics-Products-Review- 2021 с отзывами на косметику (на английском языке) был скачан с сайта Kaggle.com. Полученные данные переведены на русский язык, представлены в виде таблицы, отсортированы по оценке, и вручную отнесены к определенной категории (см. рис. 4-6).
  3. Данные из личного кабинета Wildberries

    Рисунок 2 – Данные из личного кабинета Wildberries

    Размеченные данные из личного кабинета Wildberries

    Рисунок 3 – Размеченные данные из личного кабинета Wildberries

    Данные с сайта Kaggle.com

    Рисунок 4 – Данные с сайта Kaggle.com

    Обработанные данные с сайта Kaggle.com

    Рисунок 5 – Обработанные данные с сайта Kaggle.com

    Размеченные данные с сайта Kaggle.com

    Рисунок 6 – Размеченные данные с сайта Kaggle.com

  4. Способ, использующий для формирования корпуса данных ChatGPT – языковую модель на базе искусственного интеллекта, разработанную OpenAI, с помощью которой можно генерировать творческие тексты (версия – бот в Telegram https://t.me/chatsgpts_bot). Для получения набора негативных отзывов (рекламаций) с различными категориями претензий, были сформированы запросы нескольких видов. Примеры запросов и ответов к ChatGPT показаны на рисунках 7 и 8.
  5. Генерация первого вида отзывов с помощью нейросети

    Рисунок 7 – Генерация первого вида отзывов с помощью нейросети

    Генерация второго вида отзывов с помощью нейросети

    Рисунок 8 – Генерация второго вида отзывов с помощью нейросети

В качестве исходных данных получили набор в формате .csv из 1109 размеченных отзывов и рекламаций.

Анализ полученного корпуса данных

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

На рисунках 9 и 10 представлены зависимости количества встретившихся фактов по размеченным категориям для наборов из реальных данных и всего полученного корпуса.

Распределение рекламаций по категориям в наборе из реальных данных

Таблица 9 – Распределение рекламаций по категориям в наборе из реальных данных

Распределение рекламаций по категориям в наборе из реальных данных

Таблица 10 – Распределение рекламаций по категориям в наборе из реальных данных

Результаты оценки сбалансированности корпуса представлены в таблице 1.

Таблица 1 – Процентное соотношение данных по категориям
Категория Кол-во по корпусу Процентное распределение по категориям Кол-во по реал. данным Процентное распределение по категориям Погрешность
1-Запах1560,14066790,1698110,02914
2-Консистенция1590,14337280,1509430,00757
3-Ошибочный товар1390,12533840,0943470,04841
4-Срок годности1240,11181270,1320750,02026
5-Упаковка3420,308386150,2830190,02536
6-Эффект1890,17042490,1698110,00061

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

Кодирование категориальных данных

В большинстве алгоритмов машинного обучения набор данных может содержать текстовые или категориальные значения (в основном не числовые значения). Несколько алгоритмов, таких как CatBoost [5] могут достаточно хорошо обрабатывать категориальные значения, но большинство алгоритмов работают лучше с числовыми данными. Следовательно, основная задача заключается в том, чтобы преобразовать текстовые категориальные данные в числовые результаты.

Есть два основных метода кодировки Label-Encoder и One-Hot Encoding, которые являются частью библиотеки Scikit-learn (Python) и используются для преобразования текстовых или категориальных данных в числовые данные.

Метод Label Encoder включает преобразование каждого значения в столбце в число. Категориальные признаки рекламаций сведены в таблицу 2.

Таблица 2 – Метод Label-Encoder
Категория (текст) Категория (число)
запах0
консистенция1
ошибочный товар2
срок годности3
упаковка4
эффект5

При кодировании способом меток появляется проблема, связанная с использованием ряда чисел. Хотя нет никакой связи между различными категориями, создается впечатление, что категории ранжированы. Существует альтернативный метод, называемый «One-Hot-Encoding». В этом алгоритме каждое значение категории преобразуется в новый столбец, и столбцу присваивается значение 1 или 0 (см. табл. 3).

Хотя этот подход устраняет проблемы порядка, но приводит к значительному увеличению количества столбцов. Выбор между методами Label-Encoder и One-Hot-Encoding зависит от конкретного набора данных и модели, которую в дальнейшем планируется применить.

Таблица 3 – Метод One-Hot Encoding
Категория (текст) 0 1 2 3 4 5
0 - запах100000
1 - консистенция010000
2 - ошибочный товар001000
3 - срок годности000100
4 - упаковка000010
5 - эффект000001

В случае, если категориальная особенность не является порядковой и количество категорий небольшое, для выбора правильной техники кодирования предпочтительным будет использование метода One-Hot Encoding.

Если же категориальная особенность является порядковой и количество категорий довольно велико метод One-Hot-Encoding может привести к высокому потреблению памяти и следует использовать метод Label-Encoder.

В рассматриваем случае использовался метод One-Hot Encoding (см. рисунок 11).

Категории, записанные с помощью One Hot Encoding

Таблица 11 – Категории, записанные с помощью One Hot Encoding

Обработка датасета с помощью NLP

NLP или обработка естественного языка – это область искусственного интеллекта (ИИ), которая лежит на пересечении машинного обучения и математической лингвистики и помогает взаимодействовать между компьютерами и человеческим языком.

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

Основные методы предобработки текста изображены на рис. 12.

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

ООсновные методы предобработки текстов процесса решения задач с МО и ИАД

Рисунок 12 – Основные методы предобработки текстов процесса решения задач с МО и ИАД

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

Следующий этап – стемминг (stemming). Так как русский язык обладает богатой морфологической структурой, то для МО лучше привести их к одной форме для уменьшения размерности. В частности, он обрезает окончания слов. В Python-библиотеке NLTK для этого есть метод SnowballStemmer, который поддерживает русский язык. Проблемы могут возникнуть со словами, которые значительно изменяются в других формах. Поэтому лучше применить другой метод – лемматизацию [5].

На этапе лемматизации над словом можно провести морфологический анализ и выявить его начальную форму (это когда слова сводятся к их корневым формам для обработки). Для этого возможно воспользоваться Pymorphy2 –инструментом для морфологического анализа русского и украинского языков [6] Метод Parse возвращает список объектов Parse, которые обозначают виды грамматических форм анализируемого слова.

Процесс NLP-предобработки данных

Алгоритм процесса предобработки представлен ниже.

  1. Подключение Pymorphy2 – для морфологического анализа слов, pandas – для работы с данными и NLTK – для обработки текста.
  2. Данные, считанные из файла

    Рисунок 13 – Данные, считанные из файла

  3. Считывание рекламации из файла. Результат изображен на рисунке 14.
  4. Данные, считанные из файла

    Рисунок 14 – Данные, считанные из файла

  5. Загрузка из NLTK модуля для стоп-слов.

Фрагмент кода загрузки модуля стоп-слов приведен на рисунке 15.

Загрузка модуля стоп-слов

Рисунок 15 – Загрузка модуля стоп-слов

  1. Сохранение в переменную одну из рекламаций и перевод её в нижний регистр. Фрагмент кода, удаляющий стоп-слова и знаки пунктуации приведен на рисунке 16.
  2. Преобразование регистра

    Рисунок 16 – Преобразование регистра

  3. Разбивка текста на токены (слова и символы) с помощью токенизатора Python-библиотеки NLTK. Результат токенизации приведен на рисунке 17.
  4. Результат после этапа токенизации

    Рисунок 17 – Результат после этапа токенизации

  5. Переход к этапу очистки данных, на котором происходит исключение стоп-слова из исходного текста. Библиотека NLTK имеет список стоп-слов на русском языке. Этот список можно скачать и использовать. Список же пунктуационных знаков, которые требуется удалять, необходимо создавать самим. Таким же образом можно расширять список стоп-слов. Для морфологического анализа используется метод из Pymorphy2. Фрагмент кода, удаляющий стоп-слова и знаки пунктуации приведен на рисунке 18.
  6. Результат после этапа очистки данных

    Рисунок 18 – Результат после этапа очистки данных

  7. Лемматизация данных. Результаты лемматизации некоторой произвольной фразы изображены на рисунке 19.
  8. Результат после этапа лемматизации

    Рисунок 19 – Результат после этапа лемматизации

Выводы

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

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

С помощью NLP-методов предобработки подготовлен набор данных, который будет в дальнейшем использован при векторизации данных и решении задачи классификации методами МО.

Литература

  1. Глазкова, А.В. Формирование текстового корпуса для автоматического извлечения биографических фактов из русскоязычного текста // International Journal of Open Information Technologies. 2019. №1. URL: https://cyberleninka.ru/article/n/formirovanie-tekstovogo-korpusa-dlya-avtomaticheskogo-izvlecheniya-biograficheskih-faktov-iz-russkoyazychnogo-teksia (дата обращения: 10.04.2023).
  2. Вовченко, В. О. Структурно-функциональная модель процесса анализа рекламаций / В. О. Вовченко, В. А. Светличная // Информатика, управляющие системы, математическое и компьютерное моделирование (ИУСМКМ-2022) : Материалы XIII Международной научно-технической конференции в рамках VIII Международного Научного форума Донецкой Народной Республики, Донецк, 25–26 мая 2022 года. – Донецк: Донецкий национальный технический университет, 2022. – С. 202-207.
  3. Андриевская, Н. К. Онтологический подход в системах обработки данных научных и научно-образовательных организаций //Проблемы искусственного интеллекта. – 2020. – №. 1. – С. 23-36.
  4. Датасеты для машинного обучения и анализа данных: что это, виды - где взять датасеты (yandex.ru). URL: https://practicum.yandex.ru/blog/dataset-dlya-mashimogo-obucheniya-i-analiza/ (дата обращения: 10.04.2023).
  5. What is One Hot Encoding? Why And When do you have to use it? [Электронный ресурс]/2019 г. — Режим доступа: https://hackernoon.com/what-is-one-hot-encoding-why-and-when-do-you-have-to-use-it-e3c6186d008f
  6. ML | Label Encoding of datasets in Python [Электронный ресурс]/2019 г. — Режим доступа: https://www. geeksforgeeks.org/ml-label-encoding-of-datasets-in-python/
  7. Главная страница Python-School. [Электронный ресурс] — URL: https://python-school.ru/nlp-vectorization-methods/ (Дата обращения: 18.03.2023).