도메인 데이터세트 그룹 시작하기 (SDK JavaScript v3용) - Personalize

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

도메인 데이터세트 그룹 시작하기 (SDK JavaScript v3용)

이 가이드에서는 AWS SDK for JavaScript v3를 사용하여 _ON_ 도메인의 도메인 데이터세트 그룹을 만드는 방법을 보여줍니다. VIDEO DEMAND 이 자습서에서는 가장 적합한 추천 제품 사용 사례를 위한 추천자를 생성합니다.

에서 이 자습서에 GitHub 사용된 코드를 보려면 코드 예제 리포지토리에서 SDK JavaScript v3용 Amazon Personalize AWS SDK코드 예제를 참조하십시오.

시작 연습을 마치면 불필요한 요금이 발생하지 않도록 생성한 리소스를 삭제하십시오. 자세한 내용은 Amazon Personalize 리소스 삭제 요구 사항 단원을 참조하십시오.

사전 조건

이 자습서를 완료하기 위한 필수 조건 단계는 다음과 같습니다.

  • 시작하기 전제 조건를 완료하여 필요한 권한을 설정하고 학습 데이터를 생성합니다. 도메인 데이터세트 그룹 시작하기(콘솔)를 완료한 경우에도 동일한 소스 데이터를 재사용할 수 있습니다. 고유한 소스 데이터를 사용하는 경우 필수 조건 단계와 같이 데이터의 형식이 지정되었는지 확인합니다.

  • AWS SDK for JavaScript 개발자 안내서의 SDK for 설정 JavaScript 절차에 지정된 대로 양식 JavaScript 및 AWS 자격 증명을 설정합니다. SDK

튜토리얼

다음 단계에서는 필수 종속 항목을 설치합니다. 그런 다음 데이터세트 그룹을 만들고, 데이터를 가져오고, 가장 적합한 추천 제품 사용 사례를 위한 추천자를 생성한 다음 추천을 받습니다.

Node.js 를 사용하는 경우 샘플을 JavaScript 파일로 저장한 다음 실행하면 각 코드 샘플을 실행할 수 node <fileName.js> 있습니다.

필수 조건을 완료한 후에는 다음과 같은 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 } }

종속 항목을 설치한 후 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 };

Personalize 클라이언트를 생성한 후에는 시작하기 전제 조건완료 시 생성한 과거 데이터를 가져옵니다. 과거 데이터를 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코드를 사용하여 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 '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코드를 사용하여 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();
  4. 다음 createDataset.js 코드를 사용하여 Amazon Personalize에서 항목 상호 작용 데이터 세트를 생성합니다. 를 createDatasetParam 업데이트하여 방금 생성한 데이터세트 그룹 및 스키마의 Amazon Resource Name (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을 업데이트하여 다음을 지정합니다.

    • 작업 이름을 지정하고 상호 작용 데이터 세트를 지정하십시오. ARN

    • dataLocation의 경우, 학습 데이터를 저장한 S3 버킷 경로(s3://https://amzn-s3-demo-bucket.s3.region-code.amazonaws.com/folder name/ratings.csv)를 지정합니다.

    • roleArn의 경우, Personalize 서비스 역할에 대한 리소스 이름을 지정합니다. 시작하기 전제 조건의 일부로 이 역할을 생성했습니다.

    // 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 업데이트하여 이전 단계에서 만든 추천자를 지정하고 사용자 ID (예:) 를 지정합니다. ARN 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();