やみんちゅの備忘録

情報系院生(元工大生)の日々のぼやきや技術的な話など

ReactとAmazon Mechanical Turkによる実践アノテーションツール(概要編)

 お久しぶりです,やみんちゅです.

 最近,研究室でAmazon Mechanical Turk(以下Mturk)とReact製Webアプリケーションによるアノテーションツールの作成を行ないました.しかしMTurk自体が日本ではあまりメジャーどころではない(?)のと,そもそも外部サイトに誘導してのアノテーションというトンチキなことをやっている人も少なく,ドキュメントがなくて何度も落とし穴にハマりました.なので,そのような被害者をこれ以上生み出さないよう,今回の作業で得た知見を共有していきたいと思います.

今回の記事(概要編)で分かること

Amazon Mechanical Turkとは?

 "Amazon Mechanical Turk"とは,人の知能が必要な単調作業をクラウドソーシングするための,AmazonによるWebサービスです.ここでいう単調作業は,文字起こしや画像のタグ付け等,多岐にわたります.

www.mturk.com

このWebサービスでは,まず作業を依頼する"Requester"が"HITs(Human Inteligence Tasks)"と呼ばれるタスクを作成し,"Worker"が任意のHITsを選択して作業を行います.そして,作業が完了したらRequesterがWorkerへ報酬を, Amazonへショバ代をそれぞれ支払う,というのがタスクを投げた際の一連の流れになります.

 

Mturkの良いところ

 Mturkでは様々なタスクについてテンプレートが用意されており,大抵の場合はデータさえ用意できれば簡単にタスクを投げることができます.下の画像では写真のタグ付けについてのテンプレートの画像で,左側にVisionやLanguageなどの様々な分野についてのテンプレートが用意されていることが確認できます.また,多少の改変はMturk上で用意されたエディタを利用して行えます.

f:id:Oishi_Tsukudani:20211211164236p:plain

Mturkのタスクテンプレート画面

Mturkだけで完結できるアノテーションは?

 基本的なアノテーションタスクなら,Mturkで用意されたテンプレートをそのまま使うか,もしくは多少改造すれば事足りるので,MturkのWebサービス上で作業が全て完結します.しかし,複雑なアノテーションについては自前でアノテーションツールを用意し,Mturk上で人を誘導する必要が出てきます.ここのMturkで完結できるアノテーションかどうかの判断は,概ね下のフロー図に基づいて判断できると思います.

f:id:Oishi_Tsukudani:20211211171055p:plain

Mturkで完結できるか判断フローチャート

条件分岐について一つずつ見ていきます.

静的なデータに対してのアノテーションであるか.

 Mturk上で完結させたい場合,必要なデータを予め全て用意しておく必要があります.ですので,「対話システムとインタラクティブに会話させてシステムの評価をしたい」「ユーザからのinputに合わせてリアルタイムに画像を生成し,結果を評価させたい」というようなインタラクティブな動作をする必要があるものは,Mturk上では基本的に完結できません(頑張ればできるかもしれない).

 

集めるデータがテキストベースであるか.

 Mturk上で保存できるデータは,タグや書き起こしといった,テキストとして保持できるようなデータに限られます.なので音声や画像・映像を収集したい場合はMturk上では完結できません.

 

用意されたテンプレートを流用できるか.

 上の二つの条件をクリアした上で,テンプレートをそのまま使うことが難しい場合,Mturkで完結させるならテンプレートを魔改造する必要があります.生のhtmlを編集しなければいけないので,大幅な変更が必要ならば外部サイトに自分の好きなフレームワークでツールを作成して誘導する方が多分簡単です.html得意なら頑張ればできるかもしれません.

Mturkだけで完結できないアノテーションを行う方法と必要な道具

では実際にMturkで完結できないアノテーションをするにはどうすればいいのか,という話にですが,このためには

  1. アノテーションを行うためのウェブアプリケーションを作成する.
  2. (音声・画像・動画収集の場合)データ保存場所を用意する.
  3. ウェブアプリケーションのデプロイ
  4. Mturk上でHITsを作成し,ウェブアプリケーションに誘導する.

という手順が必要になります.それぞれ何でやってもいいのですが,

  1. webアプリ作成→jQuery, React, Angular, Next.jsなど
  2. データ保存場所→AWS S3,Google Firebaseなど
  3. webアプリのデプロイ→AWS Amplify,AWS S3など
  4. Webアプリへの誘導→mturk用のAPIを利用

あたりを利用することになるかと思います.もし音声収集をするとすれば,した図のような構成になります.

f:id:Oishi_Tsukudani:20211211173254p:plain

音声収集する場合の構成図

 

まとめ

 今回は主にAmazon Mechanical Turkの概要と,外部サイトを利用するかの判断やアノテーションを行う際の大まかな流れについて説明しました.次回からは外部サイトを利用するためのMturkやAWSで行う作業について解説します.タイトルにReactが入ってますが,Reactの話が出るのはだいぶ先になりそうです.