Amazon Web Services ブログ

Amazon Translate と Amazon Augmented AI を使ったヒューマンレビューワークフローの設計

多くの企業と組織が世界的に拡大するにつれて、世界はますます狭くなっています。企業が異なる言語グループにまたがるより多くの客層にそのビジネス範囲を広げるにあたって、複数言語間での相互運用性に対するニーズも飛躍的に増加します。産業業務の大半は、手動で高額、かつ遅々とした人力によるもので、多くの産業垂直市場がスケーラブルで信頼性とコスト効率性に優れたソリューションを見つけることに苦慮しています。Amazon Translate は、良心的な価格で迅速かつ高品質な翻訳を実現するニューラル機械翻訳サービスです。Amazon Translate は、翻訳コストを低減させながら、2,970 個を超える言語ペアの全体で高品質のオンデマンドおよびバッチ翻訳機能を提供します。

Amazon Translate は、優れた出力を提供するために絶えず学び、進化し続けています。法律、医療、建設、およびエンジニアリングなどの分野に特化したアプリケーションでは、Amazon Translate のカスタム用語を使用することで翻訳品質を常時向上させることができます。これは、ほとんどのユースケースにとって優れたアプローチですが、ヒューマンチームによる簡単なポストエディティングが必要となる外れ値もあるかもしれません。ポストエディティングプロセスは、翻訳で失われる可能性がある現地語のニュアンスをキャッチすることによって、お客様のニーズをより良く理解するために役立ちます。機械翻訳を活用する翻訳者は、より多くのコンテンツを、より迅速に、より手頃な料金でより多くの言語にローカライズするための援助を提供することができます。

人間の知能を使って Amazon Translate (およびその他の Amazon AI サービス) の出力結果を補強したいというこのような企業と組織には、Amazon Augmented AI (Amazon A2I) がそれを行うためのマネージドアプローチを提供します。Amazon A2I はあらゆる開発者にヒューマンレビュー機能を提供するため、ヒューマンレビューシステムの構築、または大勢のレビュー者の管理に関連する「Undifferentiated Heavy Lifting」(差別化につながらない重労働) が取り除かれます。

この記事では、Amazon A2I と Amazon Translate を使って、プライベートワークフォースが Amazon Translate によって翻訳されたドキュメントの効果的なレビュー、修正、およびタグ付けを大規模に行うことを可能にするヒューマンレビューワークフローを作成します。

ソリューションの概要

以下の図は、このソリューションのアーキテクチャを示しています。

このユースケースでは、テキストファイルを処理し、受け取られるファイルの英語からスペイン語への変換を試みます。ファイルは /source フォルダの Amazon S3 バケットにドロップされ、これがイベント通知を通じて AWS Lambda 関数である TA2I-S3Notification をトリガーします。

この関数はオブジェクトをダウンロードして、それを文に分割します。次に、各文に対して TranslateText API を呼び出し、対応する出力を使って一連のソースおよび翻訳済みの文のペアを作成します。関数は Amazon Translate の出力を再構成して、machine_output/ フォルダに未編集の機械出力を作成します。そして、ポストエディット UX をレンダリングし、翻訳された各文を編集するための人による入力を要求する上で Amazon A2I に必要となるすべてのデータが含まれた humanLoopInput JSON オブジェクトを作成します。関数は次に、StartHumanLoop API を呼び出してヒューマンループをトリガーします。

ヒューマンループリクエストが受け取られると、Amazon A2I が事前設定されたチームからのヒューマンワーカーへのタスクの割り当てを処理します。チームメンバーは、セキュアな方法で供給された認証情報を使ってラベリングポータルにサインインできます。Amazon A2I は、Amazon Cognito を使ってユーザーに認証を提供します。

サインインすると、元のテキストと機械出力を左右に並べて、文ごとにレビューできるカスタム UI が表示されます。レビューを完了してタスクを送信すると、Amazon A2I が入力データと人が編集した変更が含まれる JSON ファイルを作成します。これは文レベルでキャプチャされるため、この JSON 出力のコレクションを分野に特化した翻訳メモリとして徐々に保存でき、貴重なアセットが形成されることになります。Amazon A2I はまた、ヒューマンレビュータスクのステータスが変更されるたびに Amazon CloudWatch イベントである SageMaker A2I HumanLoop Status Change を発行します。

ソリューションは、このイベントを別の Lambda 関数 TA2I-HumanWorkflowCompleted に結び付けます。この関数は、人による編集内容を使ってドキュメントを再構成し、最終バージョンを作成します。このバージョンは、/post_edits フォルダに保存されます。

このソリューションは、テキストドキュメントの翻訳に対するサーバーレスの従量制料金アプローチを実現し、ヒューマンチームに機械出力を編集して翻訳の品質を補強する機会を提供すると同時に、翻訳メモリ資産を構築するために役立ちます。ソリューションに使用される各コンポーネントは高可用性かつスケーラブルであるため、ビジネスの価値を高め、機械翻訳ニーズを解決することを可能にします。

前提条件

この記事では、CloudFormation テンプレートを起動するために適切な AWS Identity and Access Management (IAM) アクセス許可を持つ AWS アカウントが必要になります。

ソリューションのデプロイメント

ソリューションでは、CloudFormation スタックデプロイメントと、リソースの手動作成を組み合わせて使用します。

  • IAM ロールの作成 – ヒューマンレビューワークフローを作成するには、ヒューマンタスク UI でレンダリングするオブジェクトの読み込み、およびヒューマンレビュー結果の書き込みのために Amazon S3 にアクセスする許可を Amazon A2I に付与する IAM ロールを提供する必要があります。このロールには、Amazon SageMaker にロールを引き受ける許可を付与するための信頼ポリシーがアタッチされている必要もあります。これは、Amazon A2I がロールにアタッチしたアクセス許可に従ってアクションを実行できるようにします。変更し、フロー定義を作成するため使用するロールにアタッチできるポリシーの詳細と例については、「フロー定義の作成に使用する IAM ロールへのアクセス許可の追加」を参照してください。
  • S3 バケットの作成 – この記事の後半で定義するヒューマンレビューワークフローには、結果を書き込むことができる S3 バケットが必要です。Lambda 関数が結果を取得し、今後の使用と記録保持のためにそれらを照合します。バケットの作成手順については、「S3 バケットを作成する方法」を参照してください。S3 バケットの名前を取得して、このチュートリアルで後ほど使用するために保存しておきます。

ステップ 1: プライベートワークチームの作成

ワークチームは、ドキュメントをレビューするために選択したグループです。ワークチームは、Amazon Mechanical Turk ワーカー、ベンダーが管理するワーカー、またはタスクでの作業を行うために招待する独自のプライベートワーカーで構成されるワークフォースから作成できます。どちらのワークフォースタイプを選択しても、Amazon A2I がワーカーへのタスク送信を処理します。この記事では、プライベートワークフォースを使ってワークチームを作成し、自分自身をチームに追加して Amazon A2I ワークフローをプレビューします。

プライベートワークフォースは、Amazon SageMaker コンソールのラベリングワークフォースページを使って作成し、管理することができます。指示に従うと、ワーカーの E メールを入力、または Amazon Cognito ユーザープールから既存のワークフォースをインポートすることでプライベートワークフォースを作成できます。

Amazon SageMaker Ground Truth 用のワークチームがすでに存在する場合は、Amazon A2I でも同じチームを使用できるので、次のステップに進んでください。

プライベートワークチームを作成するには、以下の手順を実行します。

  1. Amazon SageMaker コンソールで [ラベリングワークフォース] を選択します。
  2. [プライベート] タブで、[プライベートチームを作成] を選択します。
  3. [E メールによる新しいワーカーの招待] を選択します。
  4. E メールアドレスには、ワーカー E メールアドレスを入力します。E メールアドレスボックスには、コンマで区切られた最大 50 個の E メールアドレスを入力できます。この記事では、ドキュメント処理タスクを実行するための E メールアドレスを入力します。
  5. 組織名と連絡先 E メールを入力します。
  6. [プライベートチームを作成] を選択します。
    プライベートチームを作成すると、招待 E メールが届きます。以下のスクリーンショットは E メールの例です。
  7. E メールにあるリンクを選択して、パスワードを変更します。これで、このチームに検証済みワーカーとして登録されました。一人だけのチームの準備が整ったところで、ヒューマンレビューワークフローを作成できます。
  8. [プライベート] タブで [ラベリングポータルのサインイン URL] のリンクを選択し、前のステップで生成された認証情報を使ってログインします。

以下のスクリーンショットと同様のページが表示されます。

ステップ 2: ワーカータスクテンプレートの作成

ワーカーテンプレートを使って、タスクの作業を行う時にワーカーに表示されるインターフェイスと指示をカスタマイズできます。ワーカータスクテンプレートを作成するには、以下の手順を実行します。

  1. Amazon SageMaker コンソールで、[ワーカータスクテンプレート] を選択します。この記事では、米国東部 (バージニア北部) リージョンを使用しますが、任意のリージョンを使用できます。Amazon Augmented AI と Amazon Translate を利用できるリージョンの詳細については、リージョン表を参照してください。
  2. [テンプレートの作成] を選択します。
  3. テンプレート名には translate-a2i-template と入力します。
  4. GitHub リポジトリから以下のコードをコピーして、テンプレートエディタフィールドに貼り付けます。

    <!-- Copyright Amazon.com, Inc. and its affiliates.All Rights Reserved.
    SPDX-License-Identifier: MIT
      
    Licensed under the MIT License.See the LICENSE accompanying this file
    for the specific language governing permissions and limitations under
    the License. -->
    
    <script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
    
    <style>
      table, tr, th, td {
        border: 1px solid black;
        border-collapse: collapse;
        padding: 5px;
        min-width: 100%;
        background-color: white;
      }
    </style>
    
    <crowd-form>
      <full-instructions header="Translation Quality Check Instructions">
        <p>The source document has been broken up into sentences and each sentence has been translated using <a href="https://aws.amazon.com/translate/" target="blank" >Amazon Translate</a>.The source text, along with their
          <strong>machine generated translation</strong> is shown in the table.Please review the translated text and make changes so the read more like something a person would write rather than an automated translation.
          Please do this for all the sentences.Once done, click on submit to finish the job.The system will reassemble the edited text to match the original source formatting.
          
          System will also "remember" the "translation memory" for future use.
        </p>
    
      </full-instructions>
        <div>
            <h1>Instructions</h1>
            <p>Please review the below translations and make corrections and improvements.Your corrections should:</p>
            <p>
              <ol>
               <li>Make the translated text more accurately express the meaning of the original text.</li>
               <li>Make the translated text read more like something a person would write rather than an automated translation.</li>
              </ol>
            </p>
        </div>
    
        <table>
          <tr>
            <th>Sentence</th>
            <th>Original ({{ task.input.SourceLanguage }})</th>
            <th>Translation  ({{ task.input.TargetLanguage }})</th>
          </tr>
    
          {% for pair in task.input.translationPairs %}
    
            <tr>
              <td>{{ forloop.index }}</td>
              <td>{{ pair.originalText }}</td>
              <td>
                <crowd-text-area name="translation{{ forloop.index }}" value="{{ pair.translation }}" 
                originalValue = "{{ pair.translation }}" char-counter="true" max-rows = "3" rows="3" label="Translated text" placeholder="Please enter the translated version.">
    
                </crowd-text-area>
              </td>
            </tr>
    
          {% endfor %}
    
        </table>
        <br/>
    </crowd-form>
    
  5. [作成] を選択します。

 

ステップ 3: ヒューマンレビューワークフローの作成

ヒューマンレビューワークフローは、レビュー者が継続的に介入して、翻訳を監査することを可能にします。ヒューマンレビューワークフローを作成するには、以下の手順を実行します。

  1. Amazon SageMaker コンソールで [人間によるレビューワークフロー] を選択します。
  2. [ヒューマンレビューワークフローを作成] を選択します。
  3. ワークフロー設定セクションで、名前に一意のワークフロー名 (例: translate-a2i-hrw) を入力します。
  4. S3 バケットには、ヒューマンレビュー結果を保存する S3 バケット を入力します。この記事では、前のステップで作成したものと同じバケットを使いますが、/tms のプレフィックスを追加してください。たとえば、translate-a2i-output というバケットを作成した場合は、s3://translate-a2i-output/tms というパスを入力します。このサブフォルダには、作成したヒューマンレビューワークフロージョブすべての翻訳メモリが格納されます。
  5. IAM ロールには、ドロップダウンメニューから [新しいロールを作成する] を選択します。

    Amazon A2I は自動でロールを作成できます。
  6. 指定する S3 バケットには、[特定の S3 バケット] を選択します。
  7. 先ほど作成した S3 バケットの名前を入力します。
  8. [作成] を選択します。

    ロールの作成が完了するとその確認が表示され、IAM ロールのドロップダウンメニューにはそのロールが事前入力されています。
  9. タスクタイプには [カスタム] を選択します。
  10. ワーカータスクテンプレートセクションで、ドロップダウンメニューから [translate-a2i-template] を選択します。
  11. タスクの説明では、ワーカーのためにタスクを簡単に説明します。
  12. ワーカーセクションのワーカータイプには、[プライベート] を選択します。
  13. ドロップダウンメニューから [translate-a2i-private-team] を選択します。
  14. [作成] を選択します。

ヒューマンレビューワークフローの作成が完了すると、確認が表示されます。

ワークフロー ARN をコピーして保存しておきます。これは、この後のステップで必要になります。このステップの終了後は、Amazon Augmented AI ワーカーポータル (ステップ 1 で作成) を開いたままにして、すぐに使えるようにしておく必要もあります。

ステップ 4: CloudFormation スタックのデプロイメント

それでは、CloudFormation スタックを使ってソリューションをデプロイしましょう。スタックは、以下を含めた残りの必要なリソースを作成します。

  • 必要となる Lambda 関数:
    • TA2I-S3Notification – .txt ファイルが source/ サブフォルダにある S3 フォルダにドロップされるとトリガーされます。
    • TA2I-HumanWorkflowCompleted – ヒューマンレビューワークフローでステータスが変更されるとトリガーされます。
  • TA2I-HumanWorkflowCompleted をトリガーする Amazon CloudWatch Events ルール。
  • S3 バケットと TA2I-S3Notification Lambda 関数を結びつける通知設定。これは、CloudFormation カスタムリソースを作成することによって実行します。
  • 縮小された方法で AI サービスとやり取りするために必要な IAM ロールとポリシー。
  1. フロー全体を実行するために必要なスタックをデプロイする CloudFormation スクリプトを起動します。


    これは、翻訳のためのヒューマンレビューワークフローを実行するために必要な残りの要素を作成します。
  2. スタックに対して、以下のようにパラメータを入力します。
  3. 使用するヒューマンレビューワークフローには、前の手順からのワークフロー定義 ARN を入力します。
  4. 使用する S3 バケットには、前の手順で作成した S3 バケットの名前を入力します。
  5. スタックデプロイメントウィザードでは、デフォルトを選択します。
  6. [レビュー] ページの機能と変換セクションで、3 つのチェックボックスをオンにします。
  7. [スタックの作成] を選択します。

スタックがアカウントに正常にデプロイされたことを確認する必要があります。これは、CloudFormation コンソールでスタック名 Translate-A2I を探すことで実行できます。

スタックのステータスが CREATE_COMPLETE に変わったら、次のステップに進むことができます。

ステップ 5: フローのテスト

フロー全体をテストするには、以下の手順を実行します。

  1. Amazon S3 コンソールで S3 バケット に移動します。この記事では translate-a2i-output という名前のバケットを使用しますが、バケット名は、前提条件として作成し、CloudFormation スタックのデプロイ時にパラメータとして入力したものと同じである必要があります。
  2. source という名前の新しいフォルダを作成します。
  3. 使用したい暗号化設定を選択してください。これは、TA2I-S3Notification 関数をトリガーするために Amazon S3 がモニタリングするプレフィックスです。
  4. 任意のテキストエディタを使ってコンピュータで新しいテキストファイルを作成し、小説「戦争と平和」からの以下のテキストを入力します。
    Just then another visitor entered the drawing room: Prince Andrew
    Bolkónski, the little princess’ husband.He was a very handsome young
    man, of medium height, with firm, clearcut features.Everything about
    him, from his weary, bored expression to his quiet, measured step,
    offered a most striking contrast to his quiet, little wife.It was
    evident that he not only knew everyone in the drawing room, but had
    found them to be so tiresome that it wearied him to look at or listen to
    them.And among all these faces that he found so tedious, none seemed
    to bore him so much as that of his pretty wife.He turned away from
    her with a grimace that distorted his handsome face, kissed Anna
    Pávlovna’s hand, and screwing up his eyes scanned the whole company.
    
  5. このファイルを flow_test.txt として保存します。
  6. [アップロード] を選択します。
  7. 先ほど作成した source フォルダに flow_test.txt をアップロードします。
  8. Amazon A2I のワークフォースページに移動します。
  9. [プライベート] タブを選択します。

  10. Amazon A2I ワーカーポータルに移動します。
  11. リストされているジョブから [ヒューマンレビュータスク] を選択します。
  12. [作業を開始する] を選択します。

    以下のスクリーンショットにあるようなページが表示されます。このチュートリアルを検証するため、少なくともひとつのテキストボックスでテキストを編集してください。
  13. S3 バケットに移動します。PO-flow_test.txt という名前のファイルが post_edits フォルダにあるはずです。
  14. このファイルをダウンロードし、任意のテキストエディタを使ってその内容を開きます。

以下のテキストが表示されます。

コスト

Amazon Translate と Amazon A2I では、処理したテキストの文字数に基づいた従量制料金、およびヒューマンレビューが行われた各オブジェクトに対する料金を支払います。この例を実行するためのコストは 1 USD 未満です。実際のコストについては、Amazon TranslateAmazon A2I の料金ページを参照してください。

クリーンアップ

今後の料金が発生しないように、使用していないリソースを削除します。

まとめ

この記事では、Amazon Translate を使って行われた翻訳に対するヒューマンレビューワークフローを構築するために使用できるようになった Amazon A2I の使用方法を説明しました。これは、翻訳する必要がある重要なドキュメントのための、独自のプライベートワークフォースを使ったレビューワークフローの作成を可能にし、正確性とコンテキストを向上させます。また、このアプローチはヒューマンチームが作成する翻訳のメモリをキャプチャすることも可能にし、これは貴重な知的財産アセットとなります。

このチュートリアルのコードベースについては、GitHub リポジトリを参照してください。この PoC が記載された Jupyter ノートブックについては、GitHub リポジトリを参照してください。Amazon Textract の Amazon A2I との統合に関する詳細については、重要なドキュメントを処理するための Amazon Textract と Amazon Augmented AI の併用をお読みください。


著者について

Mayank Thakkar は、AWS のグローバルヘルスケアおよびライフサイエンスチームのシニアソリューションアーキテクトです。サーバーレス、人工知能、機械学習ベースのソリューションの構築を専門としています。AWS において、彼は、グローバルに展開する製薬会社と緊密に連携して、実際の業界の問題の解決に焦点を当てた最先端のソリューションを構築しています。仕事以外では、家が焼け落ちたり、水浸しになったりしないようにしながら、妻と一緒に元気でいたずら好きな 2 人の男の子、Aaryan (6 歳) と Kiaan (4 歳) を育てるために奔走しています。

 

 

Purnesh Tripathi は、アマゾン ウェブ サービスのアソシエイトソリューションアーキテクトです。以前はデータサイエンティストであった Purnesh は、機械学習と人工知能がビジネスにもたらすメリットに情熱を傾けており、ニュージーランドの独立系ソフトウェアベンダーとスタートアップ企業が AWS を使ってより迅速に革新できるように支援しています。