Amazon Web Services ブログ
Amazon SageMaker Ground Truth に固有表現抽出用のデータラベル付けワークフローが追加
AWS re:Invent 2018 にて発表された Amazon SageMaker Ground Truth を使用すると、機械学習 (ML、machine learning) システムのトレーニングに必要なデータセットを、効率的かつ正確にラベル付けすることが可能になります。Ground Truth にはラベル付けのワークフローが組み込まれており、ラベル付けワーカーは、それによってステップバイステップでタスクを実行したり、成果をあげるのに役立つツールを利用したりすることができます。組み込まれたワークフローは現在、物体検出、画像分類、テキスト分類、セマンティックセグメンテーションによるラベル付けジョブで利用可能です。
そして本日より AWS は、新しいユースケースである固有表現抽出 (NER、named entity recognition) のサポートを開始しました。NER とは、テキストデータを選別して固有表現と呼ばれる名詞句を特定し、「人」「組織」「ブランド」などのラベルによってそれぞれを分類する作業のことです。 たとえば「私は最近 Amazon プライムに登録した」というテキストがあった場合、「Amazon プライム」が固有表現とみなされ、「ブランド」として分類されます。
こうしたユースケースを拡大して、あらかじめ規定されたラベルを使って、もっと長いテキストのラベル付けや配列の分類を行うことが可能です。例として、次のスクリーンショットをご覧ください。パフォーマンス評価のテキストにおいて、Amazon のリーダーシッププリンシプルである「Customer Obsession」についての言及箇所が特定されています。
概要
この記事では、NER のラベル付けジョブの作成方法について解説していきます。
- データセットを収集します。
- ラベル付けジョブを作成します。
- 労働力を選択します。
- タスクの指示を作成します。
今回の例では、NER のラベル付けタスクとして、データセットからブランド名の特定を行います。サンプルのデータセットとして、Amazon の Twitter アカウントから 10 個のツイートを用意しました。これを使用してもいいですし、自分でデータセットを用意して、個々のユースケースに関連した NER のラベル付けタスクを定義してもらっても構いません。
前提条件
以下の手順を実行するには、AWS アカウントを所有していて、AWS のサービスにアクセスできることが前提となります。
ステップ 1: データセットを収集して Amazon S3 に保存する
ラベル付けするデータセットを収集してテキストファイルに保存し、そのファイルを Amazon S3 にアップロードします。例として、10 個のツイートを収集し、ツイートごとに改行で区切ってテキストファイルに保存し、テキストファイルを “ner-blog” という名前の S3 バケットにアップロードします。 参考として、アップロードしたテキストファイルのツイートが含まれるボックスを以下に示します。
ステップ 2: ラベル付けジョブを作成する
- Amazon SageMaker のコンソールで、[ラべリングジョブ]、[ラベリングジョブの作成] の順に選択します。
- 入力データセットの場所をセットアップするため、[マニフェストファイルを作成します] を選択します。
- ステップ 1 でアップロードしたテキストファイルがある S3 の場所を指定し、[テキスト]、[作成] を選択します。
- 作成プロセスが完了したら、[Use this manifest] を選択し、以下のフィールドに入力します。
- [ジョブ名] – カスタム値。
- [入力データセットの場所] – ラベル付けするテキストファイルが置かれている S3 の場所(このフィールドは 1 つ前のステップにより入力されているはずです)。
- [出力データセットの場所] – Amazon SageMaker からラベルとジョブのメタデータが送信される S3 の場所。
- [IAM ロール] – このタスクの入力データセットと出力データセットがある S3 の場所に対して、読み取りと書き込みのアクセス許可を持つロール。
- [タスクのタイプ] の [Task Category] で [Text] を選択します。
- [タスクの選択] で [Named entity recognition] を選択します。
ステップ 3: ラベル付けの労働力を選択する
ワーカーのインターフェイスには 3 つのワーカータイプがあります。
- パブリック – Amazon Mechanical Turk。24 時間年中無休、オンデマンドで対応するクラウドソーシングの労働力。
- プライベート – ユーザー独自の労働力。
- ベンダー管理下 – 機密データの処理に対処する能力をもったサードパーティーの労働力。
このコンソールには、他に [タスクあたりの料金] やオプションの [データセットオブジェクトあたりのワーカー数] などのワーカー設定があります。
このデモンストレーションでは [パブリック] を使用します。[タスクあたりの料金] は 0.024 USD に設定します。Mechanical Turk のワーカーは、ブランドを特定する比較的単純なこのタスクを、1 ツイートにつき 5~7 秒で実行します。
[データセットオブジェクトあたりのワーカー数] (このケースでは 1 個のツイート) にはデフォルト値を使用します。今回は 3 です。SageMaker Ground Truth は、3 人のワーカーに対して各ツイートにラベル付けを行うよう指示し、これら 3 ワーカーの応答を 1 つの高精度なラベルに統合します。統合アプローチに関する詳細は、「注釈統合」を参照してください。
ステップ 4: ラベル付けタスクの指示を作成する
きわめて重要なことですが、ラベル付けの指示を効果的に出すには、しばしば、非常に多くの反復と実験が必要になります。高品質な指示を作成するためのベストプラクティスについては、Amazon SageMaker Ground Truth でのラベリングジョブ用の優れた説明の作成を参照してください。今回の例では、ツイート内のブランド名の特定に重点をおきました。ツイート内にブランド名がない場合、ラベル付けワーカーは、ツイート内にブランド名がないことを示すオプションを選択します。
次のスクリーンショットは、ラベル付けの指示の例を示したものです。
まとめ
今回の記事では、Amazon SageMaker Ground Truth のデータのラベル付けについて取り上げ、データセットの収集、NER のラベル付けジョブの作成、労働力の選択、指示の作成、ジョブの開始の方法をそれぞれご紹介しました。今回の例はほんの 10 個のツイートを使用した小規模なラベル付けジョブです。Mechanical Turk のワーカーであれば 1 時間以内で作業を完了します。AWS マネジメントコンソールにアクセスしてさっそく開始しましょう。
いつものように、AWS では皆さんのフィードバックをお待ちしています。コメントまたはご質問については、以下から送信してください。
著者について
Vikram Madan は Amazon SageMaker Ground Truth のプロダクトマネージャーです。機械学習ソリューションの構築を容易にできる製品を提供することに力を注いでいます。余暇には、長距離のランニングやドキュメンタリーの鑑賞などをして過ごしています。