データセットとスキーマの作成 - Amazon Personalize

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

データセットとスキーマの作成

ステップ 1: データセットグループを作成する を完了したら、データセットを作成する準備が整います。レコードを一括インポートする場合は、「データ形式のガイドライン」を確認し、Amazon S3 バケットへのアップロードを完了してください。

データセットは、データ用の Amazon Personalize のコンテナです。データセットを作成するときは、データセットのスキーマも作成します。スキーマは、Amazon Personalize にデータの構造を知らせ、Amazon Personalize がデータを解析できるようにします。

データセットは、Amazon Personalize コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用して作成します。さまざまなタイプのデータセット、およびデータセットとスキーマの要件については、「データセットとスキーマ」を参照してください。

データセットとスキーマの作成 (コンソール)

これがデータセットグループの最初のデータセットである場合、最初のデータセットタイプは Interactions データセットになります。コンソールで Interactions データセットを作成するには、データセット名を指定してから、Avro 形式の JSON スキーマを指定します。このデータセットグループの最初のデータセットでない場合は、データセットのタイプを選択してから、名前とスキーマを指定します。

Amazon Personalize のデータセットとスキーマの要件については、「データセットとスキーマ」を参照してください。

注記

ステップ 1: データセットグループを作成する を完了したばかりで、既にユーザーとアイテムのインタラクションのページが表示されている場合は、この手順のステップ 4 にスキップしてください。

データセットとスキーマを作成するには
  1. https://console.aws.amazon.com/personalize/home で Amazon Personalize コンソールを開き、アカウントにサインインします。

  2. [Dataset groups] (データセットグループ) のページで、ステップ 1: データセットグループを作成する で作成したデータセットグループを選択します。これにより、データセットグループの [Dashboard] (ダッシュボード) が表示されます。

  3. [Upload datasets] (データセットをアップロード) のセクションで、インポートするデータセットのタイプ (Amazon Personalize データセットには、Interactions、Users、または Items が含まれます) について、[Import] (インポート) を選択します。[Configure < dataset type >] (< データセットタイプ > を設定) のページが表示されます。

  4. [Dataset details] (データセットの詳細) の [Dataset name] (データセット名) で、データセットの名前を指定します。

  5. [Schema details] (スキーマの詳細) の [Schema selection] (スキーマを選択) で、既存のスキーマを選択するか、[Create new schema] (新しいスキーマを作成) を選択します。

  6. 新しいスキーマを作成する場合は、[Schema definition] (スキーマの定義) で、データに一致するスキーマ JSON を貼り付けます。データセットとスキーマ の例をガイドとして使用してください。スキーマを作成した後は、スキーマに変更を加えることはできなくなります。

  7. [New schema name (新しいスキーマ名)] で、新しいスキーマの名前を指定します。

  8. [タグ] には、オプションで任意のタグを追加します。Amazon Personalize リソースへのタグ付けの詳細については、「Amazon Personalize リソースへのタグ付け」を参照してください。

  9. [Next] (次へ) を選択し、一括データの準備とインポート の指示に従ってデータをインポートします。

データセットとスキーマの作成 (AWS CLI)

AWS CLI を使用してデータセットとスキーマを作成するには、最初に Avro 形式でスキーマを定義し、CreateSchema 操作を使用してそれを Amazon Personalize に追加します。その後、CreateDataset 操作を使用してデータセットを作成します。Amazon Personalize のデータセットとスキーマの要件については、「データセットとスキーマ」を参照してください。

スキーマとデータセットを作成するには
  1. Avro 形式のスキーマファイルを作成し、JSON ファイルとして保存します。このファイルは、作成している Interactions などのデータセットのタイプに基づいている必要があります。

    スキーマはデータの列と一致する必要があり、スキーマ name は Amazon Personalize によって認識される 3 種類のデータセットのいずれかと一致する必要があります。最小限の Interactions データセットスキーマの例を次に示します。その他の例については、「データセットとスキーマ」を参照してください。

    { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }
  2. 次のコマンドを実行して Amazon Personalize でスキーマを作成します。スキーマを作成した後は、スキーマに変更を加えることはできなくなります。schemaName をスキーマの名前に、file://SchemaName.json を前のステップで作成した JSON ファイルの場所に、それぞれ置き換えます。次の例は、現在のフォルダに属するファイルを示しています。 API の詳細については、「CreateSchema」を参照してください。

    aws personalize create-schema \ --name SchemaName \ --schema file://SchemaName.json

    次の例に示すように、スキーマの Amazon リソースネーム (ARN) が表示されます。

    { "schemaArn": "arn:aws:personalize:us-west-2:acct-id:schema/SchemaName" }
  3. 次のコマンドを実行して空のデータセットを作成します。データセットグループの作成 (AWS CLI) のデータセットグループの Amazon リソースネーム (ARN) と前の手順のスキーマ ARN を指定します。dataset-type は、前のステップのスキーマ name と一致する必要があります。 API の詳細については、「CreateDataset」を参照してください。

    aws personalize create-dataset \ --name Dataset Name \ --dataset-group-arn Dataset Group ARN \ --dataset-type Dataset Type \ --schema-arn Schema Arn

    次の例に示すように、データセット ARN が表示されます。

    { "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/DatasetName/INTERACTIONS" }
  4. 後で使用するためにデータセット ARN を記録します。データセットを作成したら、トレーニングデータをインポートする準備が整います。一括データの準備とインポート を参照してください。

データセットとスキーマの作成 (AWS SDK)

AWS SDK を使用してデータセットとスキーマを作成するには、最初に Avro 形式でスキーマを定義し、CreateSchema 操作を使用してそれを Amazon Personalize に追加します。スキーマを作成した後は、スキーマに変更を加えることはできなくなります。その後、CreateDataset 操作を使用してデータセットを作成します。Amazon Personalize のデータセットとスキーマの要件については、「データセットとスキーマ」を参照してください。

スキーマとデータセットを作成するには
  1. Avro 形式のスキーマファイルを作成し、JSON ファイルとして作業ディレクトリに保存します。

    スキーマはデータの列と一致する必要があり、スキーマ name は Amazon Personalize によって認識される 3 種類のデータセットのいずれかと一致する必要があります。最小限の Interactions データセットスキーマの例を次に示します。その他の例については、「データセットとスキーマ」を参照してください。

    { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }
  2. CreateSchema API 操作を使用してスキーマを作成します。次のコードは、スキーマの作成方法を示しています。スキーマの名前とスキーマ JSON ファイルのファイルパスを指定します。

    SDK for Python (Boto3)
    import boto3 personalize = boto3.client('personalize') with open('schemaFile.json') as f: createSchemaResponse = personalize.create_schema( name = 'schema name', schema = f.read() ) schema_arn = createSchemaResponse['schemaArn'] print('Schema ARN:' + schema_arn )
    SDK for Java 2.x
    public static String createSchema(PersonalizeClient personalizeClient, String schemaName, String filePath) { String schema = null; try { schema = new String(Files.readAllBytes(Paths.get(filePath))); } catch (IOException e) { System.out.println(e.getMessage()); } try { CreateSchemaRequest createSchemaRequest = CreateSchemaRequest.builder() .name(schemaName) .schema(schema) .build(); String schemaArn = personalizeClient.createSchema(createSchemaRequest).schemaArn(); System.out.println("Schema arn: " + schemaArn); return schemaArn; } catch(PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
    SDK for JavaScript v3
    // Get service clients module and commands using ES6 syntax. import { CreateSchemaCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); import fs from 'fs'; let schemaFilePath = "SCHEMA_PATH"; let mySchema = ""; try { mySchema = fs.readFileSync(schemaFilePath).toString(); } catch (err) { mySchema = 'TEST' // For unit tests. } // Set the schema parameters. export const createSchemaParam = { name: 'NAME', /* required */ schema: mySchema /* required */ }; export const run = async () => { try { const response = await personalizeClient.send(new CreateSchemaCommand(createSchemaParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

    Amazon Personalize は、新しいスキーマの ARN を返します。次のステップで必要になるため、これを記録します。

  3. CreateDataset 操作を使用してデータセットを作成します。次のコードは、データセットを作成する方法を示しています。データセットグループの ARN (Interactions、Users、または Items) を指定し、データセットタイプ (Interactions、Users、または Items) を指定してください。データセットのタイプ別の詳細については、「データセットとスキーマ」を参照してください。

    SDK for Python (Boto3)
    import boto3 personalize = boto3.client('personalize') response = personalize.create_dataset( name = 'dataset_name', schemaArn = 'schema_arn', datasetGroupArn = 'dataset_group_arn', datasetType = 'dataset_type' ) print ('Dataset Arn: ' + response['datasetArn'])
    SDK for Java 2.x
    public static String createDataset(PersonalizeClient personalizeClient, String datasetName, String datasetGroupArn, String datasetType, String schemaArn) { try { CreateDatasetRequest request = CreateDatasetRequest.builder() .name(datasetName) .datasetGroupArn(datasetGroupArn) .datasetType(datasetType) .schemaArn(schemaArn).build(); String datasetArn = personalizeClient.createDataset(request).datasetArn(); System.out.println("Dataset " + datasetName + " created. Dataset ARN: " + datasetArn); return datasetArn; } catch(PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
    SDK for JavaScript v3
    // Get service clients module and commands using ES6 syntax. import { CreateDatasetCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); // Set the dataset's parameters. export const createDatasetParam = { datasetGroupArn: 'DATASET_GROUP_ARN', /* required */ datasetType: 'DATASET_TYPE', /* required */ name: 'NAME', /* required */ schemaArn: 'SCHEMA_ARN' /* required */ } export const run = async () => { try { const response = await personalizeClient.send(new CreateDatasetCommand(createDatasetParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

    データセットを作成したら、トレーニングデータをインポートする準備が整います。「一括データの準備とインポート」を参照してください。