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

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

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

ステップ 1: データセットグループを作成する を完了したら、データセットを作成する準備が整います。データセットは、データ用の Amazon Personalize のコンテナです。データセットを作成するときは、データセットのスキーマも作成します。スキーマは、Amazon Personalize にデータの構造を知らせ、Amazon Personalize がデータを解析できるようにします。

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

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

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

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

注記

ステップ 1: データセットグループを作成する」を完了したばかりで、既にデータセットを作成している場合は、この手順のステップ 4 にスキップしてください。

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

  2. [Dataset groups] (データセットグループ) のページで、ステップ 1: データセットグループを作成する で作成したデータセットグループを選択します。

  3. [データセットの設定][データセットの作成] を選択し、作成するデータセットのタイプを選択します。

  4. [Amazon Personalize データセットにデータを直接インポートする] を選択し、[次へ] を選択します。

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

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

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

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

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

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

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

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

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

    スキーマはデータの列と一致する必要があり、スキーマ name は Amazon Personalize で認識されるデータセットのタイプのいずれかと一致する必要があります。最小限のアイテムインタラクションデータセットスキーマの例を次に示します。その他の例については、「 スキーマ」を参照してください。

    { "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 ファイルの場所に、それぞれ置き換えます。次の例は、現在のフォルダに属するファイルを示しています。

    ドメインデータセットグループ内のデータセットのスキーマを作成する場合は、domain パラメータを追加して ECOMMERCE または VIDEO_ON_DEMAND に設定します。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 を指定します。データセットタイプの値は、InteractionsUsersItemsActions、または Action_Interactions です。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 で認識されるデータセットの種類と一致する必要があります。最小限のアイテムインタラクションデータセットスキーマの例を次に示します。その他の例については、「 スキーマ」を参照してください。

    { "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. 次のコードを使用してスキーマを作成します。スキーマの名前とスキーマ JSON ファイルのファイルパスを指定します。

    ドメインデータセットグループ内のデータセットのスキーマを作成する場合は、domain パラメータを追加して ECOMMERCE または VIDEO_ON_DEMAND に設定します。API の詳細については、「CreateSchema」を参照してください。

    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 操作を使用してデータセットを作成します。以下のコードは、データセットを作成する方法を示しています。データセットグループの Amazon リソースネーム (ARN)、前のステップのスキーマ ARN を指定し、データセットタイプを指定します。データセットタイプの値は、InteractionsUsersItemsActions、または Action_Interactions です。データセットのタイプ別の詳細については、「データセットとスキーマ」を参照してください。

    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();

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