Amazon Comprehend の PDF 事前ラベル付けを自動化する | アマゾン ウェブ サービス

Amazon Comprehend の PDF 事前ラベル付けを自動化する | アマゾン ウェブ サービス

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

カスタム モデルをトレーニングするには、まずドキュメント内のエンティティに手動で注釈を付けてトレーニング データを準備します。これは、 半構造化ドキュメントの理解注釈ツールを作成します。 Amazon SageMakerグラウンドトゥルース カスタム テンプレートを使用してジョブを作成すると、アノテーターは PDF ドキュメント上でエンティティの周囲に境界ボックスを直接描画できるようになります。ただし、SAP などの ERP システムに既存の表形式のエンティティ データがある企業の場合、手動での注釈付けは反復的で時間がかかる可能性があります。

トレーニング データを準備する労力を軽減するために、次を使用して事前ラベル付けツールを構築しました。 AWSステップ関数 既存の表形式エンティティ データを使用して、ドキュメントに自動的に事前アノテーションを付けます。これにより、Amazon Comprehend で正確なカスタムエンティティ認識モデルをトレーニングするために必要な手動作業が大幅に軽減されます。

この投稿では、事前ラベル付けツールの設定手順を説明し、公開されているドキュメントに自動的に注釈を付ける方法の例を示します。 データセット PDF 形式の銀行取引明細書のサンプル。完全なコードは次の場所で入手できます。 GitHubレポ.

ソリューションの概要

このセクションでは、事前ラベル付けツールの入力と出力について説明し、ソリューション アーキテクチャの概要を示します。

入力と出力

事前ラベル付けツールは、注釈を付けるテキストを含む PDF ドキュメントを入力として受け取ります。デモでは、次の例のようなシミュレートされた銀行取引明細書を使用します。

Automate PDF pre-labeling for Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

このツールは、PDF ドキュメントと、これらのドキュメントから抽出するエンティティをマップするマニフェスト ファイルも受け取ります。エンティティは XNUMX つのものから構成されます。 expected_text ドキュメントから抽出するには (たとえば、 AnyCompany Bank) および対応する entity_type (例えば、 bank_name)。この投稿の後半では、次の例のように CSV ドキュメントからこのマニフェスト ファイルを構築する方法を示します。

Automate PDF pre-labeling for Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

事前ラベル付けツールは、マニフェスト ファイルを使用して、対応するエンティティでドキュメントに自動的に注釈を付けます。これらのアノテーションを直接使用して、Amazon Comprehend モデルをトレーニングできます。

あるいは、次のスクリーンショットに示すように、人間によるレビューと編集のために SageMaker Ground Truth ラベル付けジョブを作成することもできます。

Automate PDF pre-labeling for Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

レビューが完了したら、注釈付きデータを使用して Amazon Comprehend カスタムエンティティ認識モデルをトレーニングできます。

アーキテクチャ

事前ラベル付けツールは複数のツールで構成されます。 AWSラムダ Step Functions ステート マシンによって調整される関数。これには、事前アノテーションを生成するために異なる手法を使用する XNUMX つのバージョンがあります。

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

あいまい一致では、プレマニフェスト ファイルにリストされている予期されるエンティティと類似している (ただし、必ずしも同一であるとは限りません) 文字列がドキュメント内で検索されます。まず、予想されるテキストと文書内の単語の間のテキスト類似性スコアを計算し、次にしきい値を超えるすべてのペアと一致させます。したがって、完全に一致するものがない場合でも、あいまい一致では略語やスペルミスなどのバリエーションを見つけることができます。これにより、ツールはエンティティをそのまま表示する必要なく、ドキュメントに事前にラベルを付けることができます。たとえば、次の場合 'AnyCompany Bank' が予期されるエンティティとしてリストされている場合、ファジー マッチングにより、次の出現箇所に注釈が付けられます。 'Any Companys Bank'。これにより、厳密な文字列一致よりも柔軟性が高まり、事前ラベル付けツールがより多くのエンティティに自動的にラベルを付けることが可能になります。

次の図は、この Step Functions ステート マシンのアーキテクチャを示しています。

Automate PDF pre-labeling for Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

XNUMX 番目のテクニックには、 事前トレーニングされた Amazon Comprehend エンティティ認識モデル。このツールは、次の図に示すワークフローに従って、Amazon Comprehend モデルを使用して事前アノテーションを生成します。

Automate PDF pre-labeling for Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

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

Automate PDF pre-labeling for Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

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

事前ラベル付けツールを導入する

リポジトリのクローンをローカル マシンに作成します。

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サーバーレスアプリケーションモデル (AWS SAM) は、サーバーレス アプリケーション インフラストラクチャ コードを定義するために使用できるオープン ソース フレームワークです。

Comprehend Semi-Structured Documents Annotation Tool を以前に導入したことがある場合は、次の FAQ セクションを参照してください。 Pre_labeling_tool/README.md 事前ラベル付けツールに固有のリソースのみをデプロイする方法については、「」を参照してください。

これまでにツールをデプロイしたことがなく、新たに開始する場合は、次の手順を実行してソリューション全体をデプロイします。

現在のディレクトリを注釈ツール フォルダーに変更します。

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) には、予想されるエンティティごとに XNUMX つずつ、辞書のリストが含まれています。辞書には次のキーがあります。

  • 「expected_texts」 – エンティティに一致する可能性のあるテキスト文字列のリスト。
  • 「エンティティタイプ」 – 対応するエンティティ タイプ。
  • 「ignore_list」(オプション) – 一致において無視されるべき単語のリスト。これらのパラメーターは、あいまい一致によって、間違っていることがわかっている単語の特定の組み合わせが一致するのを防ぐために使用する必要があります。これは、名前を表示するときに一部の番号や電子メール アドレスを無視したい場合に便利です。

例えば、 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 シンプル ストレージ サービス (Amazon S3) バケット (以下) bucket) とキー (下 key) ファイルの。
  • 接頭辞 – を作成するために使用されます。 execution_id、出力ストレージの S3 フォルダーと SageMaker Ground Truth ラベル付けジョブ名に名前を付けます。
  • エンティティタイプ – アノテーターがラベルを付けるために UI に表示されます。これらには、予期されるエンティティ ファイル内のすべてのエンティティ タイプが含まれている必要があります。
  • 作業チーム名 (オプション) – 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 コンソールでステート マシンの進行状況を監視できます。次の図は、ステート マシンのワークフローを示しています。

Automate PDF pre-labeling for Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

ステート マシンが完了したら、次の操作を実行します。

  • に保存されている次の出力を検査します。 prelabeling/ のフォルダ comprehend-semi-structured-docs S3バケット:
    • ドキュメントの各ページの個別の注釈ファイル (ドキュメントごとにページごとに XNUMX つ) 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 コンソールでラベル付けジョブのクローンを作成し、新しいジョブに従業員をアタッチできます。

クリーンアップ

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

make delete

まとめ

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

このツールには、ファジーマッチングと Amazon Comprehend ベースの XNUMX つのバージョンがあり、初期アノテーションの生成方法に柔軟性を与えます。ドキュメントに事前にラベルが付けられた後、SageMaker Ground Truth ラベル付けジョブでドキュメントをすばやくレビューしたり、レビューをスキップして Amazon Comprehend カスタムモデルを直接トレーニングしたりすることもできます。

事前ラベル付けツールを使用すると、履歴エンティティ データの価値をすばやく解き放ち、それを特定のドメインに合わせたカスタム モデルの作成に使用できます。通常、プロセスの中で最も労働集約的な部分を高速化することで、Amazon Comprehend によるカスタムエンティティ認識がこれまで以上にアクセスしやすくなります。

SageMaker Ground Truth ラベル付けジョブを使用して PDF ドキュメントにラベルを付ける方法の詳細については、以下を参照してください。 Amazon Comprehend を使用してドキュメント内の名前付きエンティティを抽出するためのカスタムドキュメントアノテーション および Amazon SageMakerGroundTruthを使用してデータにラベルを付ける.


著者について

Automate PDF pre-labeling for Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.オスカー・シュナーク ジェネレーティブ AI イノベーション センターの応用科学者です。彼は、機械学習の背後にある科学を深く掘り下げて、顧客が機械学習を利用できるようにすることに情熱を注いでいます。仕事以外では、オスカーはサイクリングをしたり、情報理論のトレンドを追い続けることを楽しんでいます。

Automate PDF pre-labeling for Amazon Comprehend | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.ロマン・ベソンブ ジェネレーティブ AI イノベーション センターのディープ ラーニング アーキテクトです。彼は、機械学習を使用して顧客のビジネス上の問題に対処するための革新的なアーキテクチャを構築することに情熱を注いでいます。

タイムスタンプ:

より多くの AWS機械学習