「Amazon ComprehendのためのPDFの事前ラベル付けを自動化する」

「Amazon Comprehendを活用したPDFの事前ラベル付けを自動化する方法」

Amazon Comprehendは、テキストデータから洞察を導出するための事前学習済みおよびカスタムAPIを提供する自然言語処理(NLP)サービスです。Amazon Comprehendの顧客は、ビジネスに固有の場所、人名、日付などの興味のあるエンティティを抽出するためのカスタム名前付きエンティティ認識(NER)モデルをトレーニングできます。

カスタムモデルをトレーニングするには、まずドキュメント内のエンティティを手動で注釈付けするためのトレーニングデータを準備します。これは、Comprehendセミストラクチャ化ドキュメント注釈ツールを使用して行うことができ、このツールはPDFドキュメント上でエンティティのバウンディングボックスを直接描画するカスタムテンプレートを使用してAmazon SageMaker Ground Truthジョブを作成します。ただし、既存のSAPなどのERPシステムに存在する表形式のエンティティデータを持つ企業にとっては、手動の注釈付けは繰り返しと時間がかかる場合があります。

トレーニングデータの準備の手間を減らすために、既存の表形式のエンティティデータを使用してドキュメントを自動的に予め注釈付けするためのプリラベリングツールを作成しました。このツールでは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のカスタムエンティティ認識モデルをトレーニングすることができます。

アーキテクチャ

プリラベリングツールは、Step Functionsステートマシンによって組織化された複数のAWS Lambda関数で構成されています。これには、予備注釈を生成するために異なるテクニックを使用する2つのバージョンがあります。

最初のテクニックはfuzzy matchingです。これには予期されるエンティティを含んだ事前マニフェストファイルが必要です。ツールはファジーマッチングアルゴリズムを使用してテキストの類似性を比較し、プレアノテーションを生成します。

ファジーマッチングは、ドキュメント内で予期されるエンティティと類似している(必ずしも同一ではない)文字列を検索します。まず、予期されるテキストとドキュメント内の単語とのテキストの類似度スコアを計算し、それから閾値を超える全てのペアをマッチングします。したがって、正確な一致がなくても、ファジーマッチングは略語やスペルミスなどのバリエーションを見つけることができます。これにより、ツールはエンティティが独字で表示されることを求めずにドキュメントにプレラベルを付けることができます。たとえば、予期されるエンティティとして'AnyCompany Bank'がリストされている場合、ファジーマッチングは'Any Companys Bank'の出現を注釈付けします。これにより、厳密な文字列一致よりも柔軟性が増し、プレラベリングツールはより多くのエンティティに自動的にラベルを付けることができます。

次の図はこのステップ関数のステートマシンのアーキテクチャを示しています。

2番目の技術には事前学習済みのAmazon Comprehendエンティティ認識モデルが必要です。ツールはAmazon Comprehendモデルを使用してプレアノテーションを生成し、以下の図に示すワークフローに従います。

次の図は完全なアーキテクチャを示しています。

次のセクションでは、ソリューションの実装手順について説明します。

プレラベリングツールのデプロイ

リポジトリをローカルマシンにクローンします:

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

このリポジトリはComprehend Semi-Structured Documents Annotation Toolをベースに構築されており、SageMaker Ground TruthのUIですでにプレアノテーションが表示された状態でSageMaker Ground Truthのラベリングジョブを開始する機能を拡張しています。

プレラベリングツールには、Comprehend Semi-Structured Documents Annotation Toolリソースとプレラベリングツール固有のいくつかのリソースが含まれています。このソリューションはAWS Serverless Application Model(AWS SAM)を使用してデプロイできます。これは、サーバーレスアプリケーションの基盤コードを定義するために使用できるオープンソースのフレームワークです。

もし以前にComprehend Semi-Structured Documents Annotation Toolをデプロイしたことがある場合は、Pre_labeling_tool/README.mdのFAQセクションを参照してプレラベリングツール固有のリソースだけをデプロイする手順を調べてください。

これまでツールをデプロイしておらず、新しく始める場合は、以下の手順でソリューション全体をデプロイしてください。

現在のディレクトリをアノテーションツールフォルダに変更します:

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

ソリューションをビルドしてデプロイします:

make ready-and-deploy-guided

プレマニフェストファイルの作成

プレラベリングツールを使用する前に、データの準備をする必要があります。主な入力はPDFドキュメントとプレマニフェストファイルです。プレマニフェストファイルには、各PDFドキュメントの場所が'pdf'の下に、ラベル付けする予期されるエンティティのJSONファイルの場所が'expected_entities'の下に含まれています。

ノートブック generate_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_texts’ – エンティティに一致する可能性のあるテキスト文字列のリスト。
  • ‘entity_type’ – 対応するエンティティのタイプ。
  • ‘ignore_list’(オプション) – マッチングから特定の単語の組み合わせを除外するために使用される単語のリスト。これらのパラメータは、特定の組み合わせの単語が間違っていることを知っている場合に、ぼんやりと一致することを防ぐために使用する必要があります。名前を見るときに数字やメールアドレスなどを無視したい場合に役立ちます。

たとえば、前述のPDFの expected_entities は次のようになります:

[ { '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 を提供します:

  • Premanifest – 各PDFドキュメントをその expected_entities ファイルにマッピングします。これには、ファイルの bucket の下に Amazon Simple Storage Service (Amazon S3) バケットとキーの情報が含まれている必要があります。
  • Prefix – 出力のストレージ用のS3フォルダとSageMaker Ground Truthのラベリングジョブ名に名前を付ける execution_id を作成するために使用されます。
  • entity_types – 注釈付けを行うためのUIに表示されるエンティティのタイプです。これには、予測されるエンティティファイルのすべてのエンティティタイプが含まれる必要があります。
  • work_team_name (オプション) – SageMaker Ground Truthのラベリングジョブを作成するために使用されます。これは、使用するプライベートワークフォースに対応します。提供されない場合、SageMaker Ground Truthのラベリングジョブの代わりにマニフェストファイルの作成のみが行われます。マニフェストファイルを使用して、後でもSageMaker Ground Truthのラベリングジョブを作成できます。ただし、この時点では、このノートブックからラベリングジョブを作成する場合、外部ワークフォースを提供することはできません。ただし、SageMaker Ground Truthコンソールで作成されたジョブを複製して、外部ワークフォースに割り当てることはできます。
  • comprehend_parameters (オプション) – Amazon Comprehendカスタムエンティティ認識モデルを直接トレーニングするためのパラメータ。省略された場合、このステップはスキップされます。

状態マシンを開始するために、以下のPythonコードを実行します:

import boto3stepfunctions_client = boto3.client('stepfunctions')

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

これにより、状態マシンの実行が開始されます。状態マシンの進捗状況は、Step Functionsコンソールで監視できます。次の図は、状態マシンのワークフローを示しています。

ステートマシンが完了したら、以下の手順を実行してください:

  • comprehend-semi-structured-docs S3 バケットの prelabeling/ フォルダに保存された以下の出力を確認します:
    • temp_individual_manifests/ 内の各ドキュメントの各ページごとの個別の注釈ファイル
    • consolidated_manifest/consolidated_manifest.manifest 内の SageMaker Ground Truth ラベリングジョブ用のマニフェスト
    • consolidated_manifest/consolidated_manifest_comprehend.manifest 内のカスタム Amazon Comprehend モデルのトレーニングに使用できるマニフェスト
  • SageMaker コンソールで、アノテーションを確認するために作成された SageMaker Ground Truth ラベリングジョブを開きます
  • トレーニングされたカスタム Amazon Comprehend モデルを確認およびテストします

先述の通り、このツールはプライベート労働力のための SageMaker Ground Truth ラベリングジョブの作成しか行えません。人手のラベリング作業を外部に委託する場合、SageMaker Ground Truth コンソールでラベリングジョブをクローンし、新しいジョブに労働力をアタッチできます。

クリーンアップ

追加料金が発生しないように、作成したリソースとデプロイしたスタックを削除するには、以下のコマンドを使用してください:

make delete

結論

このプレーベリングツールは、企業が既存の表形式データを使用して Amazon Comprehend でカスタムエンティティ認識モデルのトレーニングプロセスを加速するための強力な手段を提供します。PDFドキュメントに自動的に前アノテーションをつけることで、ラベリングプロセスに必要な手作業を大幅に削減します。

このツールには、ファジー一致バージョンと Amazon Comprehend ベースのバージョンの2つがあり、初期アノテーションを生成する方法に柔軟性をもたらします。ドキュメントが前ラベリングされた後、SageMaker Ground Truth ラベリングジョブで迅速に確認するか、レビューをスキップして直接 Amazon Comprehend カスタムモデルをトレーニングすることができます。

このプレーベリングツールを使用すると、歴史的なエンティティデータの価値を迅速に引き出し、特定のドメインに特化したカスタムモデルを作成することができます。プロセスの中で通常最も労力を要する部分を高速化することで、Amazon Comprehend を使用したカスタムエンティティ認識がこれまで以上に利用しやすくなります。

SageMaker Ground Truth ラベリングジョブを使用して PDF ドキュメントにラベル付けする方法の詳細については、「Custom document annotation for extracting named entities in documents using Amazon Comprehend」および「Use Amazon SageMaker Ground Truth to Label Data」を参照してください。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

「今日の市場においてAIパワードモバイルアプリが際立っているのは何か?」

AIはモバイルアプリを革命し、個人の経験を提供します最新技術を駆使したアプリ開発の利点、成功、そして将来を探求してください

データサイエンス

「埋め込みモデルでコーパス内の意味関係を探索する」

最近、私はいくつかの仲間の学生や学者と話をしてきましたが、彼らは自由形式のテキストの分析に関心を持っていました残念な...

人工知能

「責任ある生成AIのための3つの新興プラクティス」

「中間報告として、私たちはこの指針に基づいて行った事前の設計、レビュー、および生成型AIの開発に基づいて、私たちのベス...

データサイエンス

デコード Transformersを平易な英語で説明します

コード、数学、またはキー、クエリ、値の言及なし

人工知能

「時間管理のための15の最高のChatGPTプロンプト」

今週はこれらの15のChatGPTのプロンプトで早めに仕事を終わらせましょう

AIニュース

「AIサイバーセキュリティのスタートアップ企業、ヨーロッパと今度はアメリカからも、参集!」

新しいGoogle for Startups成長アカデミーの開始:ヨーロッパとアメリカに拠点を置く企業のためのAIセキュリティプログラムの...