ドメインデータセットグループの開始方法 (SDK JavaScript v3 用) - Amazon Personalize

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

ドメインデータセットグループの開始方法 (SDK JavaScript v3 用)

このチュートリアルでは、 AWS SDK for JavaScript v3 を使用して VIDEO_ON_DEMAND ドメインのドメインデータセットグループを作成する方法を示します。このチュートリアルでは、上位のおすすめユースケースのレコメンダーを作成します。

でこのチュートリアルで使用されているコードを表示するには GitHub、「コード例」リポジトリの「 for JavaScript v3 の Amazon Personalize コード例SDK」を参照してください。 AWS SDK

開始方法の演習を完了したら、不要な料金が発生しないように、作成したリソースを削除します。詳細については、「Amazon Personalize リソースを削除するための要件」を参照してください。

前提条件

このチュートリアルを完了するための前提条件となる手順は次のとおりです。

チュートリアル

次の手順では、必要な依存関係をインストールします。次に、データセットグループを作成し、データをインポートし、ユースケースの上位のおすすめ向けのレコメンダーを作成して、レコメンデーションを取得します。

Node.js を使用する場合は、サンプルを JavaScript ファイルとして保存してから を実行することで、各コードサンプルを実行できますnode <fileName.js>

前提条件を満たしたら、Amazon Personalize の以下の依存関係をインストールします。

  • @aws-sdk/client-personalize

  • @aws-sdk/client-personalize-runtime

  • @aws-sdk/ client-personalize-events (このチュートリアルではオプションですが、レコメンダーの作成後にイベントを記録する場合は必須)

次は、使用できる package.json ファイルの例です。Node.js を使用して依存関係をインストールするには、package.json ファイルを保存した場所に移動して npm install を実行します。

{ "name": "personalize-js-project", "version": "1.0.0", "description": "personalize operations", "type": "module", "author": "Author Name <email@address.com>", "license": "ISC", "dependencies": { "@aws-sdk/client-personalize": "^3.350.0", "@aws-sdk/client-personalize-events": "^3.350.0", "@aws-sdk/client-personalize-runtime": "^3.350.0", "fs": "^0.0.1-security" }, "compilerOptions": { "resolveJsonModule": true, "esModuleInterop": true } }

依存関係をインストールしたら、Amazon Personalize クライアントを作成します。このチュートリアルでは、libs というディレクトリに保存された personalizeClients.js という名前のファイルにクライアントを作成することを前提としています。

次は、personalizeClient.js ファイルの例です。

import { PersonalizeClient } from "@aws-sdk/client-personalize"; import { PersonalizeRuntimeClient } from "@aws-sdk/client-personalize-runtime"; import { PersonalizeEventsClient } from "@aws-sdk/client-personalize-events"; // Set your AWS region. const REGION = "region"; //e.g. "us-east-1" const personalizeClient = new PersonalizeClient({ region: REGION}); const personalizeEventsClient = new PersonalizeEventsClient({ region: REGION}); const personalizeRuntimeClient = new PersonalizeRuntimeClient({ region: REGION}); export { personalizeClient, personalizeEventsClient, personalizeRuntimeClient };

Amazon Personalize のクライアントを作成したら、「開始方法の前提条件」の完了時に作成した履歴データをインポートします。過去のデータを Amazon Personalize にインポートするには、次の操作を実行します。

  1. 次の Avro スキーマをJSONファイルとして作業ディレクトリに保存します。このスキーマは、 の完了時に作成した CSV ファイル内の列と一致しますトレーニングデータの作成 (ドメインデータセットグループ)

    { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "EVENT_TYPE", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }
  2. 以下の createDomainSchema.js コードを使用して Amazon Personalize でドメインスキーマを作成します。SCHEMA_PATH を、先ほど作成した schema.json へのパスに置き換えます。createSchemaParam を更新してスキーマの名前を指定し、domainVIDEO_ON_DEMAND と指定してください。

    // 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 domain schema parameters. export const createDomainSchemaParam = { name: 'NAME', /* required */ schema: mySchema, /* required */ domain: 'DOMAIN' /* required for a domain dataset group, specify ECOMMERCE or VIDEO_ON_DEMAND */ }; export const run = async () => { try { const response = await personalizeClient.send(new CreateSchemaCommand(createDomainSchemaParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();
  3. 次のcreateDomainDatasetGroup.jsコードを使用して、Amazon Personalize コンソールにドメインデータセットグループを作成します。domainDatasetGroupParams を更新してデータセットグループの名前を指定し、domainVIDEO_ON_DEMAND と指定してください。

    // Get service clients module and commands using ES6 syntax. import { CreateDatasetGroupCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); // Set the domain dataset group parameters. export const domainDatasetGroupParams = { name: 'NAME', /* required */ domain: 'DOMAIN' /* required for a domain dsg, specify ECOMMERCE or VIDEO_ON_DEMAND */ } export const run = async () => { try { const response = await personalizeClient.send(new CreateDatasetGroupCommand(domainDatasetGroupParams)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();
  4. 次の createDataset.js コードを使用して Amazon Personalize でアイテムインタラクションデータセットを作成します。を更新createDatasetParamして、先ほど作成したデータセットグループとスキーマの Amazon リソースネーム (ARN) を指定し、データセットに名前を付け、 に datasetTypeを指定しますInteractions

    // 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();
  5. 次の createDatasetImportJob.js コードを使用してデータをインポートします。datasetImportJobParam を更新して次のように指定します。

    • ジョブの名前を指定し、Interactions データセットの を指定しますARN。

    • dataLocation で、トレーニングデータを保存した Amazon S3 バケットへのパス (s3://https://amzn-s3-demo-bucket.s3.region-code.amazonaws.com/folder name/ratings.csv) を指定します。

    • roleArn には、Amazon Personalize サービスロールの Amazon リソースネームを指定してください。このロールは 開始方法の前提条件 の一部として作成しました。

    // Get service clients module and commands using ES6 syntax. import {CreateDatasetImportJobCommand } 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 import job parameters. export const datasetImportJobParam = { datasetArn: 'DATASET_ARN', /* required */ dataSource: { /* required */ dataLocation: 'S3_PATH' }, jobName: 'NAME',/* required */ roleArn: 'ROLE_ARN' /* required */ } export const run = async () => { try { const response = await personalizeClient.send(new CreateDatasetImportJobCommand(datasetImportJobParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

データセットのインポートジョブが完了すると、レコメンダーを作成する準備が整います。レコメンダーを作成するには、次の createRecommender.js コードを使用します。を次のように更新createRecommenderParamします。レコメンダーの名前を指定し、データセットグループの を指定しARN、 に recipeArnを指定しますarn:aws:personalize:::recipe/aws-vod-top-picks

// Get service clients module and commands using ES6 syntax. import { CreateRecommenderCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); // Set the recommender's parameters. export const createRecommenderParam = { name: 'NAME', /* required */ recipeArn: 'RECIPE_ARN', /* required */ datasetGroupArn: 'DATASET_GROUP_ARN' /* required */ } export const run = async () => { try { const response = await personalizeClient.send(new CreateRecommenderCommand(createRecommenderParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

キャンペーンを作成したら、そのキャンペーンを使用してレコメンデーションを取得します。次の getRecommendations.js コードを使用して、ユーザー向けのレコメンデーションを取得します。を更新getRecommendationsParamして、前のステップで作成したレコメンダーARNの を指定し、ユーザー ID ( など) を指定します123

// Get service clients module and commands using ES6 syntax. import { GetRecommendationsCommand } from "@aws-sdk/client-personalize-runtime"; import { personalizeRuntimeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeRuntimeClient = new PersonalizeRuntimeClient({ region: "REGION"}); // Set the recommendation request parameters. export const getRecommendationsParam = { recommenderArn: 'RECOMMENDER_ARN', /* required */ userId: 'USER_ID', /* required */ numResults: 15 /* optional */ } export const run = async () => { try { const response = await personalizeRuntimeClient.send(new GetRecommendationsCommand(getRecommendationsParam)); console.log("Success!", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();