「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リポジトリで入手できます。
- 『AWSプロトタイピングによるICL-GroupのAmazon SageMaker上でのコンピュータビジョンモデルの構築』
- 「2024年に探索する必要のある10の最高のGPU」
- 一緒にAIを学びましょう−Towards AIコミュニティニュースレター#5
ソリューションの概要
このセクションでは、プリラベリングツールの入力と出力について説明し、ソリューションアーキテクチャの概要を提供します。
入力と出力
プリラベリングツールの入力は、注釈付け対象のテキストを含む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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- このAI論文は、高度な時空間予測のためのニューラルオペレータの自己回帰エラーに対するディープラーニングソリューションを探求しています
- デシAIはDeciLM-7Bを紹介します:超高速かつ超高精度の70億パラメータの大規模言語モデル(LLM)
- 「CNNにおけるアトラウス畳み込みの総合ガイド」
- 「AIアクトの解読」
- インドのスタートアップ、OpenHathiをリリース:初のヒンディー語LLM
- このAI論文は、イメージとテキストのアラインメントモデルにおける詳細なテキストとビジュアルの説明のための高度な技術を紹介しています
- このAI論文は、「Vary」という新しいアプローチを明らかにしています:高度な多言語認識タスクのための大規模なビジョン言語モデルの視覚語彙を拡張するためのアプローチ