建立資料集和結構描述 - Amazon Personalize

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立資料集和結構描述

完成之後步驟 1:建立資料集群組,您就可以建立資料集了。資料是用於資料的 Amazon Personalize 容器。建立資料集時,您也會建立資料集的結構描述。結構述會告訴 Amazon Personalize 您的資料結構,並允許 Amazon Personalize 解析資料。

您可以使用 Amazon Personalize 主控台 AWS Command Line Interface (AWS CLI) 或 AWS 開發套件建立資料集。您無法在網域資料集群組中建立下一個最佳動作資源,包括「動作」和「動作互動」資料集。如需不同資料集類型以及資料集和結構描述需求的相關資訊,請參閱資料集和架構

建立資料集和結構描述 (主控台)

如果這是資料集群組中的第一個資料集,您的第一個資料集類型將是 Item 互動資料集。若要在主控台中建立項目互動資料集,請指定資料集名稱,然後以 Avro 格式指定 JSON 結構定義。如果這不是您在此資料集群組中的第一個資料集,請選擇資料集類型,然後指定名稱和結構描述。

如需 Amazon Personalize 資料集和結構描述需求的資訊,請參閱資料集和架構

注意

如果您剛完成步驟 1:建立資料集群組並且已經建立資料集,請跳至此程序中的步驟 4。

若要建立資料集和結構描述
  1. https://console.aws.amazon.com/personalize/home 打開 Amazon Personalize 化控制台並登錄到您的帳戶。

  2. 在 [資料集群組] 頁面上,選擇您在其中建立的資料集群組步驟 1:建立資料集群組

  3. 在 [設定資料集] 中選擇 [建立資料集],然後選擇要建立的資料集類型。

  4. 選擇將資料直接匯入 Amazon Personalize 資料集,然後選擇下一步

  5. 資料集詳細資料中,對於資料集名稱,指定資料集的名稱。

  6. 在 [結構描述詳細資料] 中,對於 [結構描述] 選取項目,選擇現有的綱要或選擇 [建立

  7. 如果您要建立新結構定義,請在結構定義中貼上符合您資料的結構定義 JSON。使用中的範例結構描述做為指南。建立結構描述之後,就無法變更結構描述。

  8. 對於 New schema name (新建結構描述名稱),為新的結構描述指定名稱。

  9. 對於「標籤」,選擇性地新增任何標籤 如需標記 Amazon Personalize 資源的詳細資訊,請參閱標記 Amazon Personalize 化資

  10. 選擇 [下一步],然後依照中準備和匯入大量資料的指示匯入資料。

建立資料集和結構描述 (AWS CLI)

若要使用建立資料集和結構描述 AWS CLI,您必須先定義 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. 透過執行下列命令在 Amazon Personalize 中建立結構描述。建立結構描述之後,就無法變更結構描述。以結構定義的名稱取代schemaName,並取代file://SchemaName.json為您在上一個步驟中建立的 JSON 檔案的位置。此範例會顯示屬於目前資料夾的檔案。

    如果要為 Domain 資料集群組中的資料集建立結構描述,請新增domain參數並將其設定為ECOMMERCEVIDEO_ON_DEMAND。如需 API (匯入 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. 執行以下命令來建立空的資料集。從上一個步驟提供資料集群組 Amazon 資源名稱 (ARN) 建立資料集群組 (AWS CLI) 和架構 ARN。資料集類型值可以是InteractionsUsersItemsActions、、或Action_Interactions。如需 API (匯入 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 資料集群組中的資料集建立結構描述,請新增domain參數並將其設定為ECOMMERCEVIDEO_ON_DEMAND。如需 API (匯入 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();

    建立資料集之後,您就可以匯入訓練資料了。請參閱準備和匯入大量資料