翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ドメインデータセットグループの開始方法 (SDK v3 JavaScript 用)
このチュートリアルでは、 v3 AWS SDK for JavaScript を使用して VIDEO_ON_DEMAND ドメインのドメインデータセットグループを作成する方法を示します。このチュートリアルでは、上位のおすすめユースケースのレコメンダーを作成します。
このチュートリアルで使用されているコードを確認するには GitHub、「コード例」リポジトリの「 for JavaScript v3 の Amazon Personalize コード例SDK
開始方法の演習を完了したら、不要な料金が発生しないように、作成したリソースを削除します。詳細については、「Amazon Personalize リソースを削除するための要件」を参照してください。
前提条件
このチュートリアルを完了するための前提条件となる手順は次のとおりです。
-
開始方法の前提条件 を完了して必要な権限を設定し、トレーニングデータを作成します。ドメインデータセットグループの開始方法 (コンソール) も完了していれば、同じソースデータを再利用できます。独自のソースデータを使用する場合は、前提条件に示しているようにそのデータがフォーマットされていることを確認します。
-
「 AWS SDK for JavaScript デベロッパーガイドSDK」の「 の のセットアップSDK JavaScript」の手順で指定されているように、 JavaScript と の AWS 認証情報を設定します。
チュートリアル
次の手順では、必要な依存関係をインストールします。次に、データセットグループを作成し、データをインポートし、ユースケースの上位のおすすめ向けのレコメンダーを作成して、レコメンデーションを取得します。
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 にインポートするには、次の操作を実行します。
-
次の 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" }
-
以下の
createDomainSchema.js
コードを使用して Amazon Personalize でドメインスキーマを作成します。SCHEMA_PATH
を、先ほど作成した schema.json へのパスに置き換えます。createSchemaParam
を更新してスキーマの名前を指定し、domain
をVIDEO_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 "node:fs"; const 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();
-
次の
createDomainDatasetGroup.js
コードを使用して、Amazon Personalize コンソールにドメインデータセットグループを作成します。domainDatasetGroupParams
を更新してデータセットグループの名前を指定し、domain
をVIDEO_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();
-
次の
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();
-
次の
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();