Создание классификационного конвейера с помощью пользовательской классификации Amazon Comprehend (Часть I)

Создание классификационного конвейера (Часть I) с Amazon Comprehend

«Данные, заблокированные в тексте, аудио, социальных медиа и других неструктурированных источниках, могут стать конкурентным преимуществом для компаний, которые научатся их использовать»

Только 18% организаций, опрошенных в 2019 году в рамках исследования Deloitte, сообщили о возможности использования неструктурированных данных. Большая часть данных, от 80% до 90%, является неструктурированными данными. Это огромный неиспользованный ресурс, который имеет потенциал дать бизнесам конкурентное преимущество, если они научатся его использовать. Бывает сложно найти умозаключения из этих данных, особенно если требуется их классификация, маркировка или пометка. В этой ситуации может быть полезен инструмент Amazon Comprehend для пользовательской классификации. Amazon Comprehend – это сервис обработки естественного языка (Natural Language Processing, NLP), который использует методы машинного обучения для выявления ценных умозаключений и связей в тексте.

Категоризация или классификация документов имеет значительные преимущества во всех сферах бизнеса:

  • Улучшенный поиск и извлечение – Категоризация документов по соответствующим темам или категориям значительно облегчает пользователям поиск и извлечение нужных документов. Они могут осуществлять поиск в конкретных категориях для сужения результатов.
  • Управление знаниями – Систематическая категоризация документов помогает организовать базу знаний организации. Это упрощает поиск нужной информации и позволяет видеть связи между связанным контентом.
  • Оптимизация бизнес-процессов – Автоматическая сортировка документов помогает оптимизировать многие бизнес-процессы, такие как обработка счетов-фактур, поддержка клиентов или соблюдение правил и нормативов. Документы могут быть автоматически направлены нужным людям или процессам.
  • Экономия времени и ресурсов – Ручная категоризация документов является трудоемкой, затратной и занимает много времени. Техники искусственного интеллекта могут взять на себя эту рутинную задачу и классифицировать тысячи документов за короткое время и с меньшими затратами.
  • Формирование умозаключений – Анализ трендов в категориях документов может дать полезные бизнес-умозаключения. Например, увеличение жалоб клиентов в определенной категории товаров может указывать на проблемы, которые нужно решить.
  • Управление и применение политик – Настройка правил категоризации документов помогает гарантировать их правильную классификацию в соответствии с политикой и стандартами организации. Это позволяет более эффективно контролировать и аудитировать.
  • Персонализированный опыт – В контексте, например, контента веб-сайта, категоризация документов позволяет показывать пользователям настроенный контент на основе их интересов и предпочтений, определенных на основе их поведения в Интернете. Это может повысить вовлеченность пользователя.

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

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

Предварительные требования

  • Активная учетная запись AWS (нажмите здесь, чтобы создать новую учетную запись AWS)
  • Доступ к сервисам Amazon Comprehend, Amazon S3, Amazon Lambda, Amazon Step Function, Amazon SNS и Amazon CloudFormation
  • Обучающие данные (полуструктурированные или текстовые), подготовленные в соответствующем разделе
  • Базовые знания о Python и машинном обучении в целом

Подготовка обучающих данных

Это решение может принимать входные данные в формате текста (например, CSV) или полуструктурированного формата (например, PDF).

Входные данные в формате текста

Amazon Comprehend пользовательской классификации поддерживает два режима: многоклассовый и многозначный.

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

КЛАСС, Текст документа 1
КЛАСС, Текст документа 2
...

Пример для набора данных BBC News:

Бизнес, Европа обвиняет США в слабом долларе...
Технологии, Такси собирают гору мобильных телефонов...
...

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

КЛАСС, Текст документа 1
КЛАСС|КЛАСС|КЛАСС, Текст документа 2
...

В CSV-файле не должны быть заголовки ни для одного из режимов обучения.

Полуструктурированный ввод

С 2023 года Amazon Comprehend поддерживает обучение моделей с использованием полуструктурированных документов. Обучающие данные для полуструктурированного ввода представляют собой набор помеченных документов, которые могут быть предварительно идентифицированными документами из репозитория документов, к которому у вас уже есть доступ. Ниже приведен пример файла аннотаций CSV, необходимого для обучения (Пример данных):

КЛАСС, документ1.pdf, 1
КЛАСС, документ1.pdf, 2
...

CSV-файл с аннотациями содержит три столбца: первый столбец содержит метку для документа, второй столбец – имя документа (т.е. имя файла), последний столбец – номер страницы документа, которую вы хотите включить в обучающий набор данных. В большинстве случаев, если файл CSV с аннотациями находится в той же папке, что и все остальные документы, то достаточно указать имя документа во втором столбце. Однако, если файл CSV находится в другом месте, то вам нужно указать путь к местоположению во втором столбце, например, путь/к/префиксу/документ1.pdf.

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

Обзор решения

  1. Обучающий конвейер Amazon Comprehend запускается, когда обучающие данные (файл .csv для текстового ввода и файл аннотаций .csv для полуструктурированного ввода) загружаются в отдельный бакет Amazon Simple Storage Service (Amazon S3).
  2. Функция AWS Lambda вызывается Amazon S3 триггером таким образом, что каждый раз, когда объект загружается в указанное место Amazon S3, функция AWS Lambda извлекает имя и ключ исходного бакета загруженного объекта и передает их в рабочий процесс шага обучения.
  3. В рабочем процессе обучения, после получения имени бакета обучающих данных и ключа объекта в качестве входных параметров, запускается рабочий процесс обучения модели с помощью серии функций AWS Lambda, описанных ниже:
    1. StartComprehendTraining: Эта функция AWS Lambda определяет объект ComprehendClassifier в зависимости от типа входных файлов (текст или полуструктурированный) и затем запускает задачу обучения классификации пользовательской классификации Amazon Comprehend, вызывая API create_document_classifier Application Programming Interface (API), которая возвращает уникальный идентификатор задачи обучения Amazon Resource Names (ARN). Затем эта функция проверяет статус задачи обучения, вызывая API describe_document_classifier. Наконец, она возвращает уникальный идентификатор задачи обучения ARN и статус задачи в качестве выходных данных для следующего этапа рабочего процесса обучения.
    2. GetTrainingJobStatus: Эта функция AWS Lambda проверяет статус задачи обучения каждые 15 минут, вызывая API describe_document_classifier, пока статус задачи обучения не изменится на Complete (Завершена) или Failed (Сбой).
    3. GenerateMultiClass или GenerateMultiLabel: Если вы выбрали да для отчета о производительности при запуске стека, одна из этих двух функций AWS Lambda выполнит анализ в соответствии с выходными данными модели Amazon Comprehend, что генерирует анализ производительности для каждого класса и сохраняет его в Amazon S3.
    4. GenerateMultiClass: Эта функция AWS Lambda будет вызвана, если ваш ввод является MultiClass и вы выбрали да для отчета о производительности.
    5. GenerateMultiLabel: Эта функция AWS Lambda будет вызвана, если ваш ввод является MultiLabel и вы выбрали да для отчета о производительности.
  4. После успешного завершения обучения решение генерирует следующие выходные данные:
    1. Пользовательская модель классификации: Обученный идентификатор модели будет доступен в вашей учетной записи для последующей работы с выводом.
    2. Матрица ошибок [Опционально]: Матрица ошибок (confusion_matrix.json) будет доступна в пользовательском заданном пути вывода Amazon S3, в зависимости от выбора пользователя.
    3. Уведомление Amazon Simple Notification Service [Опционально]: Письмо с уведомлением о статусе задачи обучения будет отправлено подписчикам, в зависимости от начального выбора пользователя.

Пошаговая инструкция

Запуск решения

Для развертывания вашего конвейера выполните следующие шаги:

  1. Выберите кнопку Запустить стек:

  1. Выберите Далее

  1. Укажите детали конвейера с настройками, соответствующими вашему случаю использования:

Информация для каждой детали стека:

  • Имя стека (Обязательно) – имя, которое вы указали для этого стека AWS CloudFormation. Имя должно быть уникальным в регионе, в котором вы его создаете.
  • Q01ClassifierInputBucketName (Обязательно) – имя бакета Amazon S3 для хранения входных данных. Оно должно быть уникальным глобальным именем, и стек AWS CloudFormation помогает вам создать бакет при его запуске.
  • Q02ClassifierOutputBucketName (Обязательно) – имя бакета Amazon S3 для хранения результатов работы Amazon Comprehend и конвейера. Оно также должно быть уникальным глобальным именем.
  • Q03InputFormat – выпадающий список, вы можете выбрать текст (если ваши данные для обучения представлены в виде CSV-файлов) или полуструктура (если ваши данные для обучения являются полуструктурированными [например, файлы PDF]) на основе формата входных данных.
  • Q04Language – выпадающий список, выберите язык документов из поддерживаемого списка. Обратите внимание, что в настоящее время поддерживается только английский язык, если формат ваших входных данных является полуструктурированным.
  • Q05MultiClass – выпадающий список, выберите да, если ваш входной режим MultiClass. В противном случае выберите нет.
  • Q06LabelDelimiter – требуется только, если ваш ответ на Q05MultiClass нет. Этот разделитель используется в ваших данных для обучения для разделения каждого класса.
  • Q07ValidationDataset – выпадающий список, измените ответ на да, если вы хотите протестировать производительность обученного классификатора с помощью собственных тестовых данных.
  • Q08S3ValidationPath – требуется только, если ваш ответ на Q07ValidationDataset да.
  • Q09PerformanceReport – выпадающий список, выберите да, если вы хотите сгенерировать отчет о производительности на уровне классов после обучения модели. Отчет будет сохранен в указанном вами бакете для вывода Q02ClassifierOutputBucketName.
  • Q10EmailNotification – выпадающий список. Выберите да, если вы хотите получать уведомление после обучения модели.
  • Q11EmailID – введите действительный адрес электронной почты для получения уведомления о производительности. Обратите внимание, что вы должны подтвердить подписку с вашей электронной почты после запуска стека AWS CloudFormation, прежде чем вы сможете получать уведомления о завершении обучения.
  1. В разделе Amazon Configure stack options добавьте необязательные теги, разрешения и другие расширенные настройки.

  1. Выберите Далее
  2. Проверьте детали стека и выберите Я подтверждаю, что AWS CloudFormation может создавать ресурсы AWS IAM.

  1. Выберите Отправить. Это инициирует развертывание конвейера в вашей учетной записи AWS.
  2. После успешного развертывания стека вы можете начать использовать конвейер. Создайте папку /training-data в указанном вами месте хранения в Amazon S3. Примечание: Amazon S3 автоматически применяет шифрование на стороне сервера (SSE-S3) для каждого нового объекта, если вы не указываете другую опцию шифрования. Пожалуйста, ознакомьтесь с разделом Защита данных в Amazon S3 для получения дополнительной информации о защите данных и шифровании в Amazon S3.

  1. Загрузите свои обучающие данные в папку. (Если данные обучения являются полуструктурированными, то сначала загрузите все файлы PDF, а затем информацию о метках в формате .csv).

Вы закончили! Вы успешно развернули свой конвейер, и вы можете проверить статус конвейера в развернутой функции шага. (У вас будет обученная модель в панели настраиваемой классификации Amazon Comprehend).

Если вы выберете модель и ее версию в консоли Amazon Comprehend, то вы можете увидеть подробную информацию о только что обученной модели. Она включает выбранный вами режим, соответствующий опции Q05MultiClass, количество меток и количество обученных и тестовых документов в ваших обучающих данных. Вы также можете проверить общую производительность ниже; однако, если вы хотите проверить детальную производительность для каждого класса, то обратитесь к отчету о производительности, сгенерированному развернутым конвейером.

Квоты службы

Ваша учетная запись AWS имеет квоты по умолчанию для Amazon Comprehend и AmazonTextract, если входные данные имеют полуструктурированный формат. Чтобы просмотреть квоты службы, пожалуйста, обратитесь сюда для Amazon Comprehend и сюда для AmazonTextract.

Очистка

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

  1. В консоли Amazon S3 вручную удалите содержимое внутри созданных вами входных и выходных бакетов.
  2. В консоли AWS CloudFormation выберите Стеки в панели навигации.
  3. Выберите основной стек и выберите Удалить.

Это автоматически удалит развернутый стек.

  1. Ваша обученная модель настраиваемой классификации Amazon Comprehend останется в вашей учетной записи. Если вам она больше не нужна, в консоли Amazon Comprehend удалите созданную модель.

Заключение

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

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