データセットの作成
学習の目的
- 深層学習モデルでデータが重要な理由を説明する。
- インテント表示ラベルと例を含むデータセットを作成する。
- API を使用してデータセットの状況を照会する。
データと深層学習
良質で大量のデータは、深層学習の成功にとって重要な構成要素です。アルゴリズムはデータを使用して「学習」します。そのため、モデルが作成すると見込まれる予測の種類に、データが対応できるようにする必要があります。適切なデータに加えて、データに適切な表示ラベルが付けられるようにします。データの量と質は、最終的なモデルの精度に直接関係します。
- .csv (カンマ区切り値)
- .tsv (タブ区切り値)
- .json
この単元では、.csv ファイルからデータセットを作成します。簡略化のために、データセットの作成に使用する .csv ファイルはこちらで用意します。このデータファイルには、Cloud Kicks がサイトのサービス要求フォームで収集するような質問が含まれています。
"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 コマンドを入力します。その際、<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
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 件ほどです。通常、はるかに多くのデータを収集することになるので、モデルはできるだけ正確にします。
データセット状況の取得
データセットの作成時、available と statusMsg という 2 つの項目がデータセットの状況を示します。
available 項目は、データセットを使用できるかどうかを示します。データセットを参照するコールは、available が true の場合にのみ成功します。statusMsg 項目は、データセットで何が行われているかに関する詳細を提供します。値が UPLOADING の場合、API が .csv ファイルからデータをアップロード中であることを示します。statusMsg が QUEUED の場合、API はまだデータのアップロードを開始しておらず、要求はキューで待機中であることを示します。
では、データセットの状況を取得するコールを実行しましょう。
-
次の 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 なら、次の単元に進むことができます。
リソース
- 『Einstein Platform Developer Guide (Einstein プラットフォーム開発者ガイド)』の「Create a Dataset From a File Asynchronously (ファイルからデータセットを非同期に作成)」
- 『Einstein Platform Developer Guide (Einstein プラットフォーム開発者ガイド)』の「Get a Dataset (データセットの取得)」