進行状況の追跡を始めよう
Trailhead のホーム
Trailhead のホーム

データセットの作成

学習の目的

この単元を完了すると、次のことができるようになります。
  • 深層学習モデルでデータが重要な理由を説明する。
  • インテント表示ラベルと例を含むデータセットを作成する。
  • API を使用してデータセットの状況を照会する。

データと深層学習

良質で大量のデータは、深層学習の成功にとって重要な構成要素です。アルゴリズムはデータを使用して「学習」します。そのため、モデルが作成すると見込まれる予測の種類に、データが対応できるようにする必要があります。適切なデータに加えて、データに適切な表示ラベルが付けられるようにします。データの量と質は、最終的なモデルの精度に直接関係します。

Einstein Language API は次のファイル形式のデータをサポートしています。
  • .csv (カンマ区切り値)
  • .tsv (タブ区切り値)
  • .json

この単元では、.csv ファイルからデータセットを作成します。簡略化のために、データセットの作成に使用する .csv ファイルはこちらで用意します。このデータファイルには、Cloud Kicks がサイトのサービス要求フォームで収集するような質問が含まれています。

.csv ファイルのデータは「"インテント文字列",表示ラベル」形式です。以下は、ファイルのデータ例です。
"need to reset my password",Password Help
"when will my order arrive?",Shipping Info
"can I buy another pair, these are great?",Sales Opportunity

インテント文字列 — たとえば、"need to reset my password" (私のパスワードをリセットする必要があります) は、サービス要求にユーザが入力する可能性があるテキストです。

表示ラベル — この場合は「Password Help」(パスワードヘルプ) が要求の種別です。次のセクションで作成するデータセットでは、インテント文字列の例が表示ラベルに関連付けられています。Cloud Kicks のソリューションでは、Web サイトが表示ラベルを使用して要求を適切な部署に転送します。

API をコールしてデータセットを作成

すべての準備作業が完了したので、実際の作業を始めます。最初のステップでは、データセットを作成します。データセットは、以下の cURL コマンドで参照される case_routing_intent.csv という .csv ファイルから作成します。.csv ファイル内の各インテント文字列が、表示ラベルに関連付けられた 1 件の例になります。データセットは、後で作成するモデルの基礎になります。
  1. コマンドラインウィンドウを開きます。
  2. 次の cURL コマンドを入力します。その際、<TOKEN> を生成したトークンに置き換えます。この手順では、テキストエディタを使用してコマンドをコピーし、生成したさまざまな ID を保存できます。
    curl -X POST -H "Authorization: Bearer <TOKEN>" -H "Cache-Control: no-cache" -H "Content-Type: multipart/form-data" -F "type=text-intent" -F "path=http://einstein.ai/text/case_routing_intent.csv" https://api.einstein.ai/v2/language/datasets/upload
    メモ

    メモ

    このモジュールのすべての cURL コマンドは、Mac OSX、Windows、および Linux で動作します。オペレーティングシステムによっては、二重引用符の処理方法が異なる場合があります。そのため、cURL エラーが表示されたら、引用符の書式の再設定が必要になる場合があります。

    Einstein Intent API への初めてのコールを実行し、データセットを作成しました! API からの応答は、次の JSON のようになります。
    {
      "id": 1010060,
      "name": "case_routing_intent.csv",
      "createdAt": "2017-08-18T18:20:37.000+0000",
      "updatedAt": "2017-08-18T18:20:37.000+0000",
      "labelSummary": {
        "labels": []
      },
      "totalExamples": 0,
      "available": false,
      "statusMsg": "UPLOADING",
      "type": "text-intent",
      "object": "dataset"
    }

    id 項目値をメモします。この値はデータセット ID です。このモジュールではこの ID を使用してデータセットを処理します。

    ケースルーティングデータセットはかなり小さく、レコード数は 150 件ほどです。通常、はるかに多くのデータを収集することになるので、モデルはできるだけ正確にします。

データセット状況の取得

データセットを作成するためのコールは非同期です。つまり、API はデータセット ID を含む応答をすぐに返しますが、バックグラウンドでは、まだデータを読み込んでいる可能性があります。これは特に大きなデータセットの場合に発生します。

データセットの作成時、availablestatusMsg という 2 つの項目がデータセットの状況を示します。

available 項目は、データセットを使用できるかどうかを示します。データセットを参照するコールは、available が true の場合にのみ成功します。statusMsg 項目は、データセットで何が行われているかに関する詳細を提供します。値が UPLOADING の場合、API が .csv ファイルからデータをアップロード中であることを示します。statusMsg が QUEUED の場合、API はまだデータのアップロードを開始しておらず、要求はキューで待機中であることを示します。

では、データセットの状況を取得するコールを実行しましょう。

  1. 次の cURL コマンドの <TOKEN> を自分のトークンに、<DATASET_ID> をデータセット ID に置き換えます。コマンドラインウィンドウでコマンドを実行します。
    curl -X GET -H "Authorization: Bearer <TOKEN>" -H "Cache-Control: no-cache" https://api.einstein.ai/v2/language/datasets/<DATASET_ID>
    API 応答は次の JSON のようになります。.csv ファイルから追加された表示ラベルも確認できます。
    {
      "id": 1010060,
      "name": "case_routing_intent.csv",
      "createdAt": "2017-08-18T18:20:37.000+0000",
      "updatedAt": "2017-08-18T18:20:39.000+0000",
      "labelSummary": {
        "labels": [
          {
            "id": 94034,
            "datasetId": 1010060,
            "name": "Order Change",
            "numExamples": 26
          },
          {
            "id": 94035,
            "datasetId": 1010060,
            "name": "Sales Opportunity",
            "numExamples": 44
          },
          {
            "id": 94036,
            "datasetId": 1010060,
            "name": "Billing",
            "numExamples": 24
          },
          {
            "id": 94037,
            "datasetId": 1010060,
            "name": "Shipping Info",
            "numExamples": 30
          },
          {
            "id": 94038,
            "datasetId": 1010060,
            "name": "Password Help",
            "numExamples": 26
          }
        ]
      },
      "totalExamples": 150,
      "totalLabels": 5,
      "available": true,
      "statusMsg": "SUCCEEDED",
      "type": "text-intent",
      "object": "dataset"
    }

    データセット名は、データセットの作成に使用するファイルの名前から派生します。ただし、name パラメータを渡して明示的な名前を付けることもできます。

    available が true で statusMsg が SUCCEEDED の場合、データセットはトレーニングの準備ができています。statusMsg が SUCCEEDED なら、次の単元に進むことができます。

リソース