データ製造
1人の開発者が、様々な発話のセットを作成することは困難です。特に複数のインテントまたはMLエンティティのトレーニング・データを用意する必要がある場合は、不可能なことさえあります。単独でトレーニング・データを用意しようとするかわりに、Oracle Digital Assistantを使用してこのタスクをクラウド・ソーシングできます。これをクラウドに割り当てることは、アプリケーションまたはドメインのエキスパートのみが提供できる発話が必要な場合には特に役立ちます。
データ製造ジョブとは
データ製造ジョブは、クラウド・ワーカーに割り当てられたタスクの集合です。ジョブ自体は、インテントやMLエンティティを改善する様々な方法に重点を置いています。
注釈ジョブ
アノテーション・ジョブを割り当てるのは、インテントに分類する必要があるロギング・データがある場合、または1つのインテントが広範囲で、複数のインテントに分割する必要がある場合です。また、クラウド・ワーカーを割り当てて、MLエンティティに関連するトレーニング・データからキーワードやフレーズに注釈を付けることもできます。
データ製造ジョブのワークフロー
データ製造ジョブを作成するには、最初にジョブを作成し、その進捗をモニターします。ジョブが正式に終了する前(クラウド・ワーカーがもうジョブで作業していない場合など)にデータにアクセスするには、ジョブを取り消すことができます。最後に、結果をレビューした後で、承認してトレーニング・データに追加するか、却下してトレーニング・データから除外します。
ジョブの作成
- 左側のナビゲーション・バーで「製造」
をクリックします。
- 「ジョブ」ページで「ジョブの追加」をクリックします。
- ジョブのタイプ(「パラフレーズ」、「検証」または 「注釈」)を選択します。
- クラウド・ワーカーが使用する言語を選択します。デフォルト言語はスキルの主言語ですが、ネイティブにサポートされている他の言語から選択できます。ただし、翻訳サービスによって有効になっている言語は選択できません。
- 「起動」をクリックします。ジョブを起動すると、そのステータスが「ジョブ」ページで「実行中」と表示されます。実行中のジョブは編集できません。変更を行う必要がある場合は、まずジョブを取り消して、複製し、編集した後で、再起動する必要があります。
- ジョブをクラウドに送信するために、「リンクのコピー」をクリックします。次に、クラウドにブロードキャストする電子メールにリンクを貼り付けます。
クラウド・ワーカーは、このリンクをクリックしてジョブを引き受けます。クラウド・ワーカーは、ジョブを引き受けた後で、パラフレーズ・ジョブ、注釈ジョブまたは検証ジョブの全般的なルールを確認します。ノート
クラウド・ワーカーは、トラッキングのために名前と電子メール・アドレスを提供します。結果を名前でソートして、タスクの進捗状況を判断します。
クラウド・ワーカーの進捗のモニター
終了したジョブまたは取り消されたジョブは、「結果」ページからダウンロードできます。通常、このページを使用して結果にアクセスして変更できます。これには、Excelなどのスプレッドシート・プログラムで操作できるCSVファイルとして結果をダウンロードします。
ジョブの数が増えるにつれ、「承認済」、「却下済」または「未決定」でフィルタ処理できます。「未決定」は、承諾も却下もされていないジョブ用です。
ヒント:
「承認済」または「却下済」ステータスは、ジョブの作業が完了したことを示すため、多くの場合は「未決定」でフィルタ処理することになるでしょう。結果のレビュー
- 「表示」をクリックして結果を調べます。
ほどんどの結果が一様に正しくない場合は、「却下」をクリックします。クラウド・ワーカーを混乱または誤解させる不適切な着想のジョブを却下したり、テストとして行われたジョブを却下したりする場合があります。結果が正しい場合は、「承認」をクリックしてトレーニング・セットに追加できます。このオプションを選択する前に、この操作が元に戻せないことに注意してください。選択すると、結果のセット全体がトレーニング・データに追加されます。不適切な発話を誤って追加すると、インテントを編集しないかぎり削除できなくなるため、結果をダウンロードして編集した後でトレーニング・コーパスに受け入れることをお薦めします。
ダウンロードしたCSVファイルを編集することで、結果をクリーンアップできます。パラフレーズ・ジョブでは、結果をトレーニング・セットにコミットする前に編集すると、発話を変更したり、正確でない発話を削除したりできます。ノート
result
列の内容はジョブ・タイプによって異なります。パラフレーズ・ジョブの場合、クラウド・ワーカーの発話がこの列に移入されます。検証ジョブの場合はタスクに対する発話のワーカーによる評価(正しい、正しくない、不明)であり、注釈ジョブの場合は発話と一致するインテントです。
ジョブをダウンロードするには、「結果」ページまたは「結果の表示」ダイアログで「ダウンロード」をクリックします。ジョブをローカル・システムに保存し、スプレッドシート・プログラムを使用してCSVを開きます。
- 編集が終了したら、「結果」ページで「アップロード」をクリックします。
- スキルを再トレーニングします。
パラフレーズ・ジョブ
パラフレーズ・ジョブでクラウド・ワーカーから発話を収集します。パラフレーズ・ジョブを引き受けるワーカーは、提供されるプロンプトやヒントの形式でのガイドラインを使用して有効な発話を生成します。プロンプトは、ユーザーがスキルに何をして欲しいかという本質を表すものです。ヒント(オプション)は、言葉遣いやエンティティ値などの詳細情報をクラウド・ワーカーに提供するものです。たとえば、「金額(ドル)を使用して業者の経費を作成する」は、「経費精算書の作成」インテントのプロンプトです。付随するヒントは、「業者名ACME、金額は$50未満を使用します」です。
- プロンプトは発話ではありません。発話は、その特異性のためにクラウド・ワーカーの創造力を抑制する可能性があります。発話は例としては使用されずに、ワーカーは、わずかな違いのバリエーションを生成するだけになります。そうした不要なフレーズのために、トレーニング・コーパスにノイズが含まれるようになり、スキルの認知度は向上しません。
- 1つのインテントに複数のプロンプトがある場合は、変化を付けます。パラフレーズ・ジョブの各プロンプトは、様々なクラウド・ワーカーに配布される可能性があります。1人のクラウド・ワーカーが同じパラフレーズ・ジョブの複数のプロンプトを取得した場合でも、別のプロンプトを使用することでワーカーの視点が変わります。
- ヒントを使用してバリエーションを促します。発話に含める(または含めない)すべてのものについてヒントを定義できます。プロンプトを変化させるときは、対応するヒントも同様に変化させる必要があります。
プロンプト ヒント 空港駐車場の経費の作成 空港コード(SFO、LAXなど)、日付(dd/mm/yyyy)および金額(USドル)を含めます。 食事の経費の作成 レストランの名前、日付(dd/mm/yyyy)、金額(USドル)を含めます。
パラフレーズ・ジョブの作成
- まだジョブを作成していない場合は、「ジョブの追加」をクリックします(まだジョブを作成していない場合はランディング・ページ、既存のジョブがある場合は「ジョブ」タブ)。
- 「パラフレーズ」を選択します。
- ジョブ名を入力します。
- クラウド・ワーカーが使用する言語を選択します。デフォルトでは、スキルの主言語が表示されますが、スキルに設定されている、ネイティブにサポートされる他の言語から選択できます。
- インテントのプロンプトとヒント(オプション)を追加します。これらは、CSVファイル(
intentName
、prompt
およびhint
という名前の列を含む)にオフラインで作成してからバッチとして追加することも、「新規ジョブ」ダイアログを使用して1つずつ追加することもできます。CSVファイルには、これらの列を任意の順序で追加できます。ノート
スキルの主言語以外の言語を選択した場合は、プロンプトとヒントもその言語にする必要があります。 - プロンプト、ヒントおよびインテント名をCSVに追加したら、「アップロード」をクリックし、ファイルを参照して選択します。次に、「続行」をクリックします。
- 必要に応じて、さらにプロンプトの追加
、編集
、またはプロンプトの削除
を行うか、プロンプトごとの発話数を変更します。「起動」をクリックします。
- パラフレーズ・ジョブを手動で作成するには、「選択」をクリックします。
- 「インテント」フィールドをクリックしてメニューからインテントを選択するか、インテントのセット全体にプロンプトを追加する場合は「インテント...個をすべて選択」オプションをクリックします。
- 「続行」をクリックします。
- 「プロンプト」フィールド内をクリックするか、「編集」
をクリックして、プロンプトを入力します。
- 「ヒント」フィールド内をクリックするか、「編集」
をクリックして、プロンプトを入力します。
- 「追加」
をクリックしてもう1つプロンプトを作成します。新しいプロンプトそれぞれは潜在的に個別のジョブになる可能性が高く、異なるクラウド・ワーカーによって処理されることに注意してください。
- 必要に応じて、プロンプトまたはヒントを削除または修正します。
- 「追加」
- プロンプトごとのパラフレーズ数を選択します。
- 終了したら、「起動」をクリックします。
パラフレーズ・ジョブは、「ジョブ」ページに新しい行として表示され、そのステータスが「実行中」と表示されます。 - 行内の「リンクのコピー」をクリックして、クラウドにブロードキャストする電子メールにリンクを貼り付けます。クラウド・ワーカーは、このリンクをクリックしてジョブを引き受けます。クラウド・ワーカーは、ジョブを引き受けた後で、パラフレーズ・ジョブの全般的なルールを確認します。ノートその後、ワーカーがパラフレーズを送信します。
ワーカーのブラウザのロケールは、「ジョブの作成」ダイアログで選択した言語に設定されます。
「ジョブ」ページで実行の進行状況をリアルタイムでモニターできます。
パラフレーズ・ジョブのヒント
トレーニング・コーパスを真に改善するパラフレーズ・ジョブの結果を得るには、ユースケースの多様で実際のフレーズを明示する方法で設定することが重要です。パラフレーズ・ジョブをより成功させるためのヒントを次に示します。
- タスクのシードとして使用できるユースケースを慎重に策定します。
- 「シード・ユース・ケース」を使用して、ユーザーがフレーズにバリエーションを求めるのではなく、発話を提供する必要がある具体的なシナリオを説明します。
- 同じインテントに対して複数のシナリオを提供します。
- 「ヒント」フィールドを使用して、パースペクティブを広げるヒントを指定します。たとえば、経費目的の場合は、「移動しているかのように異なる通貨を含める」というヒントを追加できます。
パラフレーズ・ジョブのレビュー
発話をトレーニング・セットに追加する前に、発話をセマンティクス、スペルミスまたはスパムについて確認することをお薦めします。
- ジョブが完了するまで待ちます。または、実行中のジョブに対してすべてのコントリビューションが行われたと思われる場合は、「ジョブ」ページの「取消」をクリックします。
- 「結果」をクリックします。取り消されたジョブまたは完了したジョブのみが「結果」ページに表示されます。
- 発話の読取り専用ビューを表示するには、「表示」をクリックします。このダイアログのオプションを使用して、ジョブをCSVとしてダウンロードしたり、ジョブ全体の承認または却下を行ったりできます。
一度にすべてのジョブ・タスクの却下または承認を実行すると、自動的に元に戻すことはできません。かわりに、ジョブをダウンロードしてから結果をクリーンアップした後で、トレーニング・セットに追加することをお薦めします。この方法に従う場合は、このダイアログまたは「結果」ページで「ダウンロード」をクリックします。ヒント:
発話を受け入れると簡単に削除できなくなる前に、スキルの新しいバージョンを作成するか、予防措置としてクローニングできます。 - スプレッドシート・プログラムでCSVファイルを開きます。
result列の発話を
IntentName
列とprompt列に対してレビューします。必要な箇所のresult列の発話を更新するか、行全体(1つまたは複数)を削除します。発話を修正しようがない場合は、行全体を削除できます。クラウド・ワーカーが、プロンプトを理解していないため、またはパラフレーズの一般ガイドラインに従わないために、不適切な発話を繰り返し入力している場合は、contributor列でワークシートをソートしてから複数の行を削除できます。行を削除する場合は、必ず完全に削除してください。そうしないと、ファイルをアップロードできません。ヒント:
スプレッドシートのintentName
、prompt
、result
およびcontributor
列のみに注目してください。その他は無視できます。 - 終了したら、「結果」ページで「アップロード」をクリックします。CSVファイルを参照し、選択します。「インテント・パラフレーズ」を選択し、名前を入力して、「アップロード」をクリックします。
- 発話をインテントのトレーニング・データに追加する場合は、「結果」ページで「承認」をクリックします。トレーニング・セットに追加しない場合は、「却下」をクリックします。ジョブを却下するのは、ジョブがテストである場合や、プロンプトやヒントが適切に作成されなかったために修復できない場合です。
注釈ジョブ
インテントにマップまたはMLエンティティに注釈を付ける必要があるチャット・データがある場合は、いつでも注釈ジョブを作成できます。就業者は、発話とインテントを照合してインテントの注釈ジョブを完了します。エンティティ注釈ジョブの場合、ワーカーはMLエンティティの発話のテキストにラベルを付けます。これらのジョブは、utterance
列、以前に完了した注釈ジョブ、または2つのアプローチを組み合せてCSVファイルを使用して作成できます。リトレーナで収集された発話からインテント注釈ジョブを作成することもできます。
図注釈の説明-csv.png
インテント注釈ジョブの作成
- ジョブ・ページで「+新規ジョブ」をクリックします。
- 「インテント注釈」を選択します。
- 名前を入力します。
- クラウド・ワーカーが使用する言語を入力します。
- ファイルをアップロードし、「続行」をクリックして、ジョブのアイテム数を確認し、「起動」をクリックします。
- 「リンクのコピー」をクリックして、そのリンクを、クラウド・ワーカーにブロードキャストする電子メールに貼り付けます。ワーカーは、このリンクをクリックしてジョブを引き受けます。クラウド・ワーカーはサインインしてから、発話を分類する方法に関する基本ルールを確認します。
能動学習によって、発話と一致する可能性の高さに応じてスキルのすべてのインテントがランク付けされ、ワーカーにとって役立ちます。発話と一致する可能性が最も高いインテントが一番目になります。同様に、現在コーパスに含まれている発話(クラウド・ワーカーがガイドとして使用する)も、発話と一致する可能性の順にランク付けされます。
「ジョブ」ページで進行状況をモニターできます。
注釈ジョブのレビュー
- ジョブが完了した後で、またはジョブがほとんど完了したとみなして「取消」をクリックしてから、「表示」をクリックします。
- 同意できないクラウド・ワーカーの決定がある場合は、「ダウンロード」をクリックして、結果のCSVをローカル・システムにダウンロードします。
- CSVで、必要なインテント名を
intentName
列に入力します。 intentName
列に入力したインテントの会話名を入力して、result
列のクラウド・ワーカーが選択したインテントをオーバーライドします。- レビューが終了したら、「結果」ページで「アップロード」をクリックします。次に、ファイルを選択し、名前を入力して、「アップロード」をクリックします。
ノート結果は現在のジョブにマージされます。
結果からエントリを削除することはできません。CSVから行を削除してアップロードした場合でも、結果のすべてのエントリは保持されます。不適切なエントリを削除したい場合(ジョブ全体を却下したくない場合)は、jobId
列とId
列のない湯を削除してからファイルをアップロードすることで、ジョブに所属しない別の結果セットを作成する必要があります。 - スキルを再トレーニングします。
ノート
インテントと一致する発話のみがトレーニング・データに追加されます。「これらのインテントに該当しない」または「わからない」に分類されたものは除外されます。
エンティティ注釈ジョブの作成
スキルには、このジョブに対して少なくとも1つのMLエンティティが必要です。非MLエンティティを含むエンティティ注釈ジョブは作成できません。
- ジョブ・ページで「+新規ジョブ」をクリックします。
- 「エンティティ注釈」を選択します。
- 名前を入力します。
- クラウド・ワーカーが使用する言語を入力します。
- クラウド・ワーカーが選択するMLエンティティ(またはMLエンティティ)を選択します。理想的には、これらのエンティティには役に立つ名前と簡潔な説明があります。
- これが最初のエンティティ注釈ジョブの場合は、参照してCSVファイルを選択します。次のファイルの形式に応じて、注釈付き発話または注釈なし発話のいずれかを就業者に提供できます。
- 注釈のない発話の場合は、単一の列
utterance
の下にプレーン発話を編成するCSVをアップロードします。utterance I want to order a family size pepperoni pizza with thin crust and mozzarella cheese I want to order a large supreme pizza with regular crust and provolone cheese I want to order a medium size meat-lover pizza with gluten-free crust and goat cheese
- 注釈付き発話の場合は、単一の列
annotation
を含むCSVをアップロードし、各発話はJSONオブジェクトとして表されます。beginOffset
およびendOffset
プロパティは、MLエンティティのラベルが付いたテキストの先頭と末尾を表します。MLエンティティの作成では、このオブジェクトの他のプロパティについて説明します。
クラウド・ワーカーは、これらの相殺によって定義された既存のラベルをレビューし、正しくないときに変更します。annotation "[ { ""Utterance"":{ ""utterance"":""I want to order a family size pepperoni pizza with thin crust and mozzarella cheese"", ""languageTag"":""en"", ""entities"":[ { ""entityValue"":""family"", ""entityName"":""MLPizzaCrust"", ""beginOffset"":18, ""endOffset"":24 }, { ""entityValue"":""mozzarella"", ""entityName"":""MLCheeseType"", ""beginOffset"":66, ""endOffset"":76 }, { ""entityValue"":""pepperoni"", ""entityName"":""MLPizzaType"", ""beginOffset"":30, ""endOffset"":39 } ] } } ]" "[ { ""Utterance"":{ ""utterance"":""I want to order a large supreme pizza with regular crust and provolone cheese"", ""languageTag"":""en"", ""entities"":[ { ""entityValue"":""supreme"", ""entityName"":""MLPizzaType"", ""beginOffset"":24, ""endOffset"":31 }, { ""entityValue"":""provolone"", ""entityName"":""MLCheeseType"", ""beginOffset"":61, ""endOffset"":70 }, { ""entityValue"":""regular"", ""entityName"":""MLPizzaCrust"", ""beginOffset"":43, ""endOffset"":50 }, { ""entityValue"":""large"", ""entityName"":""MLPizzaSize"", ""beginOffset"":18, ""endOffset"":23 } ] } } ]"
- 注釈のない発話の場合は、単一の列
- 「続行」をクリックし、レコード数を確認してから、「起動」をクリックします。
- クラウド・ワーカーにブロードキャストする電子メールにリンクをコピーして貼り付けます。ワーカーは、このリンクをクリックしてジョブを引き受けます。注釈による発話のラベル付けを開始する前に、注釈によるコンテンツのラベル付け方法に関する基本的なルールを確認します。発話に、ページにリストされているMLエンティティと一致するテキストが含まれている場合、クラウド・ワーカーは該当するテキストを強調表示し、MLエンティティ・ラベルを適用します。発話にすでに注釈が付けられている場合、就業者はラベルをレビューし、必要に応じて調整できます。
- ジョブが完了したら(就業者が注釈を完了したか、取り消したため)、結果を表示してMLエンティティのトレーニング・コーパスに受け入れることができます。
ただし、結果を追加する前に、エンティティ検証ジョブを起動して、クラウド・ワーカーに確認させることができます。検証ジョブからの正しい結果のみがコーパスに追加されます。必要に応じて、MLエンティティの「データセット」タブで、ジョブ結果に追加の修正および追加を行うことができます。
検証ジョブ
検証ジョブの場合、クラウド・ワーカーは、パラフレーズ・ジョブ、エンティティ注釈ジョブまたはリトレーナから生成されたインテント検証ジョブの結果をレビューします。パラフレーズ・ジョブを検証するには、発話(パラフレーズ・ジョブまたはからの結果)と、パラフレーズ・ジョブのプロンプトのタスクを比較します。エンティティ注釈ジョブの場合、発話をレビューして、正しいMLエンティティが識別され、テキストに完全にラベルが付けられていることを確認します。
インテント・パラフレーズ検証ジョブの作成
- 「ジョブ」ページで「ジョブの追加」をクリックします。
- 「インテント・パラフレーズ検証」を選択します。
- 名前を入力します。
- クラウド・ワーカーが使用する言語を入力します。
- まだ承認されていないパラフレーズ・ジョブ(つまり「終了」または「取消済」のジョブ)を追加します。CSVファイルをローカル・システムからアップロードすることも、1つ以上のパラフレーズ・ジョブを選択することも、両方でジョブを作成することもできます。
- 「続行」をクリックし、レコード数を確認してから、「起動」をクリックします。
- 検証ジョブの行が「ジョブ」ページに追加されたら(場合によっては「リフレッシュ」をクリックしてください)、「リンクのコピー」をクリックします。
- クラウド・ワーカーにブロードキャストする電子メールにリンクを貼り付けます。クラウド・ワーカーは、ジョブを引き受けた後で、発話を評価するための基本ルールを確認します。
その後、発話を評価します。
「ジョブ」ページでワーカーの進行状況をモニターできます。
検証ジョブのレビュー
ワーカーが検証ジョブを完了した後で(またはジョブがほぼ完了したとみなして取り消した場合)、ジョブを確認して、ジョブ全体を承認または却下できます。検証ジョブに含まれる結果は数千件に及ぶ可能性もありますが(これはクラウド・ソーシングの理由でもある)、個別にレビューすることをお薦めします。たとえば、「結果の表示」ダイアログに、同意できない回答が表示される場合があります。結果をトレーニング・データにコミットする前に、変更または削除することをお薦めします。
図review-validationの説明-job.png
- 「結果の表示」ダイアログから、または「結果」ページで「ダウンロード」をクリックし、ジョブをCSVとしてダウンロードします。
- スプレッドシート・プログラムでCSVを開きます。
IntentName
列とprompt列のエントリを比較し、必要に応じて結果エントリを変更します。その列のみを編集することも、行全体を削除することもできます。
通常は、注目する必要があるのはこれら3つの列のみです。また、contributor列でソートして、特定のクラウド・ワーカーの作業を区別できるようにしてもよいでしょう。そのワーカーの決定が一貫して信頼できない場合は、そのコントリビュータのすべての行を削除できます。ノート
行を削除する場合は、必ず完全に削除してください。部分的な行が含まれるCSVはアップロードできません。- 終了したら、「結果」ページで「アップロード」をクリックします。CSVファイルを参照し、選択します。「検証」を選択し、名前を入力して、「アップロード」をクリックします。
- 「承認」または「却下」をクリックします。ジョブを承認すると、正しい発話のみがトレーニング・セットに追加されます。この操作を元に戻すことはできません。手作業でしかそれらの発話を削除することはできません。
- スキルを再トレーニングします。
エンティティ注釈検証ジョブの作成
- ジョブ・ページで「新規ジョブ」をクリックします。
- 「エンティティ検証」を選択します。
- 名前を入力します。
- クラウド・ワーカーが使用する言語を入力します。
- ローカル・システムからCSVファイルをアップロードするか、完了したエンティティ注釈ジョブ(就業者が完了したジョブまたは取り消したジョブを含む)を1つ以上選択するか、それらを組み合せて単一のジョブを作成できます。CSVの形式は、注釈付き発話のエンティティ注釈ジョブへの追加に使用される形式と同じで、発話の単一の
annotation
列およびJSONオブジェクトがあります。annotation "[ { ""Utterance"":{ ""utterance"":""I want to order a family size pepperoni pizza with thin crust and mozzarella cheese"", ""languageTag"":""en"", ""entities"":[ { ""entityValue"":""family"", ""entityName"":""MLPizzaCrust"", ""beginOffset"":18, ""endOffset"":24 }, { ""entityValue"":""mozzarella"", ""entityName"":""MLCheeseType"", ""beginOffset"":66, ""endOffset"":76 }, { ""entityValue"":""pepperoni"", ""entityName"":""MLPizzaType"", ""beginOffset"":30, ""endOffset"":39 } ] } } ]" ...
- 「続行」をクリックし、レコード数を確認して、「起動」をクリックします。
- クラウド・ワーカーにブロードキャストする電子メールにリンクを貼り付けます。
クラウド・ワーカーは、ジョブを受け入れると、注釈を評価するための基本ルールを確認します。そこから、注釈を正しい、正しくない、または不明として分類して、注釈をレビューします。
「ジョブ」ページでワーカーの進行状況をモニターできます。ジョブが完了したら、結果を確認してから受け入れるか拒否できます。
「受入」をクリックして、MLエンティティのトレーニング・セットに正しい結果を追加します。必要に応じて、「データセット」タブでさらに編集できます。
テスト・スイートの作成
- 「結果」ページでレポートを選択し、次をクリックします。
- 「テスト・スイート」を選択します。
- テスト・スイートと名前を指定し、発話をテストする言語を選択して、ダイアログを完了します。次に、「作成」をクリックします。
- 発話テスターを開き、テスト・スイートを実行します。