Home Машинное обучение Автоматизируйте предварительную маркировку PDF-файлов для Amazon Comprehend | DeepTech

Автоматизируйте предварительную маркировку PDF-файлов для Amazon Comprehend | DeepTech

0
Автоматизируйте предварительную маркировку PDF-файлов для Amazon Comprehend
 | DeepTech

Amazon Comprehend — это сервис обработки естественного языка (NLP), который предоставляет предварительно обученные и настраиваемые API для получения аналитической информации из текстовых данных. Клиенты Amazon Comprehend могут обучать собственные модели распознавания именованных объектов (NER) для извлечения интересующих объектов, таких как местоположение, имя человека и дата, которые являются уникальными для их бизнеса.

Чтобы обучить пользовательскую модель, вы сначала подготавливаете обучающие данные, вручную аннотируя объекты в документах. Это можно сделать с помощью Инструмент для аннотирования полуструктурированных документов, который создает задание Amazon SageMaker Ground Truth с настраиваемым шаблоном, позволяющим аннотаторам рисовать ограничивающие рамки вокруг объектов непосредственно в PDF-документах. Однако для компаний с существующими табличными данными в ERP-системах, таких как SAP, ручное аннотирование может быть повторяющимся и отнимать много времени.

Чтобы упростить подготовку обучающих данных, мы создали инструмент предварительной маркировки с использованием AWS Step Functions, который автоматически предварительно аннотирует документы, используя существующие данные табличных объектов. Это значительно сокращает объем ручной работы, необходимой для обучения точных моделей распознавания пользовательских объектов в Amazon Comprehend.

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

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

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

Входы и выходы

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

Инструмент также принимает файл манифеста, который сопоставляет PDF-документы с объектами, которые мы хотим извлечь из этих документов. Сущности состоят из двух вещей: expected_text извлечь из документа (например, AnyCompany Bank) и соответствующие entity_type (например, bank_name). Позже в этом посте мы покажем, как создать этот файл манифеста из документа CSV, как показано в следующем примере.

Инструмент предварительной маркировки использует файл манифеста для автоматического аннотирования документов соответствующими объектами. Затем мы можем использовать эти аннотации непосредственно для обучения модели Amazon Comprehend.

Альтернативно вы можете создать задание по маркировке SageMaker Ground Truth для проверки и редактирования человеком, как показано на следующем снимке экрана.

После завершения проверки вы можете использовать аннотированные данные для обучения модели пользовательского распознавания объектов Amazon Comprehend.

Архитектура

Инструмент предварительной маркировки состоит из нескольких функций AWS Lambda, управляемых конечным автоматом Step Functions. Он имеет две версии, в которых используются разные методы создания предварительных аннотаций.

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

Нечеткое сопоставление ищет в документе строки, которые похожи (но не обязательно идентичны) ожидаемым объектам, перечисленным в файле предварительного манифеста. Сначала он вычисляет показатели сходства текста между ожидаемым текстом и словами в документе, а затем сопоставляет все пары, превышающие пороговое значение. Таким образом, даже если точных совпадений нет, нечеткое сопоставление позволяет найти такие варианты, как сокращения и орфографические ошибки. Это позволяет инструменту предварительно маркировать документы, не требуя, чтобы объекты отображались дословно. Например, если 'AnyCompany Bank' указан как ожидаемый объект, нечеткое сопоставление будет комментировать вхождения 'Any Companys Bank'. Это обеспечивает большую гибкость, чем строгое сопоставление строк, и позволяет инструменту предварительной маркировки автоматически маркировать больше объектов.

Следующая диаграмма иллюстрирует архитектуру этого конечного автомата Step Functions.

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

Следующая диаграмма иллюстрирует полную архитектуру.

В следующих разделах мы рассмотрим шаги по реализации решения.

Развертывание инструмента предварительной маркировки

Клонируйте репозиторий на свой локальный компьютер:

git clone https://github.com/aws-samples/amazon-comprehend-automated-pdf-prelabeling-tool.git

Этот репозиторий создан на основе инструмента аннотирования полуструктурированных документов Comprehend и расширяет его функциональные возможности, позволяя вам запустить задание по маркировке SageMaker Ground Truth с предварительными аннотациями, уже отображенными в пользовательском интерфейсе SageMaker Ground Truth.

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

Если вы ранее использовали инструмент аннотирования полуструктурированных документов Comprehend, обратитесь к разделу часто задаваемых вопросов в Pre_labeling_tool/README.md инструкции о том, как развернуть только те ресурсы, которые относятся к инструменту предварительной маркировки.

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

Измените текущий каталог на папку с инструментом аннотаций:

cd amazon-comprehend-semi-structured-documents-annotation-tools

Создайте и разверните решение:

make ready-and-deploy-guided

Создайте файл предварительного манифеста

Прежде чем вы сможете использовать инструмент предварительной маркировки, вам необходимо подготовить данные. Основными входными данными являются PDF-документы и файл предварительного манифеста. Файл предварительного манифеста содержит расположение каждого PDF-документа в разделе 'pdf' и расположение файла JSON с ожидаемыми объектами, которые нужно пометить под 'expected_entities'.

Записная книжка генерировать_premanifest_file.ipynb показывает, как создать этот файл. В демо файл предварительного манифеста показывает следующий код:

(
  {
    'pdf': 's3://<bucket>/data_aws_idp_workshop_data/bank_stmt_0.pdf',
    'expected_entities': 's3://<bucket>/prelabeling-inputs/expected-entities/example-demo/fuzzymatching_version/file_bank_stmt_0.json'
  },
  ...
)

Каждый файл JSON, указанный в файле предварительного манифеста (в разделе expected_entities) содержит список словарей, по одному для каждого ожидаемого объекта. Словари имеют следующие ключи:

  • ‘ожидаемые_тексты’ – Список возможных текстовых строк, соответствующих объекту.
  • ‘тип объекта’ – Соответствующий тип объекта.
  • «игнорировать_список» (необязательно) – Список слов, которые следует игнорировать в совпадении. Эти параметры следует использовать, чтобы предотвратить нечеткое сопоставление с определенными комбинациями слов, которые, как вы заведомо, неверны. Это может быть полезно, если вы хотите игнорировать некоторые номера или адреса электронной почты при просмотре имен.

Например, expected_entities PDF-файл, показанный ранее, выглядит следующим образом:

(
  {
    'expected_texts': ('AnyCompany Bank'),
    'entity_type': 'bank_name',
    'ignore_list': ()
  },
  {
    'expected_texts': ('JANE DOE'),
    'entity_type': 'customer_name',
    'ignore_list': ('JANE.DOE@example_mail.com')
  },
  {
    'expected_texts': ('003884257406'),
    'entity_type': 'checking_number',
    'ignore_list': ()
  },
 ...
)

Запустите инструмент предварительной маркировки

Используя файл предварительного манифеста, который вы создали на предыдущем шаге, запустите инструмент предварительной маркировки. Подробности смотрите в блокноте start_step_functions.ipynb.

Чтобы запустить инструмент предварительной маркировки, укажите event следующими ключами:

  • Преманифест – Сопоставляет каждый PDF-документ с его expected_entities файл. Он должен содержать корзину Amazon Simple Storage Service (Amazon S3) (в разделе bucket) и ключ (под key) файла.
  • Префикс – Используется для создания execution_idкоторый называет папку S3 для хранения выходных данных и имя задания маркировки SageMaker Ground Truth.
  • типы_сущностей – Отображается в пользовательском интерфейсе для комментаторов, которые могут пометить. Они должны включать все типы объектов в ожидаемых файлах объектов.
  • имя_рабочей_команды (необязательно) – Используется для создания задания по маркировке SageMaker Ground Truth. Это соответствует использованию частной рабочей силы. Если он не указан, вместо задания маркировки SageMaker Ground Truth будет создан только файл манифеста. Вы можете использовать файл манифеста для создания задания по маркировке SageMaker Ground Truth позже. Обратите внимание, что на момент написания этой статьи вы не могли предоставить внешнюю рабочую силу при создании задания по маркировке из записной книжки. Однако вы можете клонировать созданное задание и назначить его внешнему сотруднику на консоли SageMaker Ground Truth.
  • comprehend_parameters (необязательно) – Параметры для непосредственного обучения модели пользовательского распознавания объектов Amazon Comprehend. Если этот параметр опущен, этот шаг будет пропущен.

Чтобы запустить конечный автомат, запустите следующий код Python:

import boto3
stepfunctions_client = boto3.client('stepfunctions')

response = stepfunctions_client.start_execution(
stateMachineArn=fuzzymatching_prelabeling_step_functions_arn,
input=json.dumps(<event-dict>)
)

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

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

  • Проверьте следующие выходные данные, сохраненные в prelabeling/ папка comprehend-semi-structured-docs Ведро S3:
    • Отдельные файлы аннотаций для каждой страницы документов (по одному на страницу каждого документа) в temp_individual_manifests/
    • Манифест задания по маркировке SageMaker Ground Truth в consolidated_manifest/consolidated_manifest.manifest
    • Манифест, который можно использовать для обучения пользовательской модели Amazon Comprehend в consolidated_manifest/consolidated_manifest_comprehend.manifest
  • На консоли SageMaker откройте задание по маркировке SageMaker Ground Truth, созданное для просмотра аннотаций.
  • Проверьте и протестируйте обученную пользовательскую модель Amazon Comprehend.

Как упоминалось ранее, инструмент может создавать задания по маркировке SageMaker Ground Truth только для частных сотрудников. Чтобы передать работу по маркировке людей на аутсорсинг, вы можете клонировать задание по маркировке на консоли SageMaker Ground Truth и подключить к новому заданию любую рабочую силу.

Очистить

Чтобы избежать дополнительных расходов, удалите созданные вами ресурсы и удалите стек, который вы развернули, с помощью следующей команды:

Заключение

Инструмент предварительной маркировки предоставляет компаниям мощный способ использовать существующие табличные данные для ускорения процесса обучения пользовательских моделей распознавания объектов в Amazon Comprehend. Автоматическое предварительное аннотирование PDF-документов значительно сокращает количество ручных усилий, необходимых в процессе маркировки.

У инструмента есть две версии: нечеткое сопоставление и версия на базе Amazon Comprehend, обеспечивающая гибкость при создании исходных аннотаций. После того как документы предварительно помечены, вы можете быстро просмотреть их с помощью задания по маркировке SageMaker Ground Truth или даже пропустить проверку и напрямую обучить пользовательскую модель Amazon Comprehend.

Инструмент предварительной маркировки позволяет вам быстро раскрыть ценность исторических данных объекта и использовать их при создании пользовательских моделей, адаптированных к вашему конкретному домену. Ускоряя, как правило, самую трудоемкую часть процесса, распознавание пользовательских объектов с помощью Amazon Comprehend становится более доступным, чем когда-либо.

Дополнительную информацию о том, как маркировать PDF-документы с помощью задания по маркировке SageMaker Ground Truth, см. в разделах Пользовательская аннотация документа для извлечения именованных объектов из документов с помощью Amazon Comprehend и Использование Amazon SageMaker Ground Truth для маркировки данных.


Об авторах

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

Ромен Бесомб — архитектор глубокого обучения в Инновационном центре генеративного искусственного интеллекта. Он увлечен созданием инновационных архитектур для решения бизнес-задач клиентов с помощью машинного обучения.

LEAVE A REPLY

Please enter your comment!
Please enter your name here