Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Introducción a un grupo de conjuntos de datos de dominio (SDKpara la JavaScript versión 3)
En este tutorial, se muestra cómo utilizar la versión AWS SDK for JavaScript 3 para crear un grupo de conjuntos de datos de dominio para el VIDEO dominio _ON_. DEMAND En este tutorial, se crea un recomendador para el caso de uso Mejores opciones.
Para ver el código utilizado en este tutorial GitHub, consulte los ejemplos de código de Amazon JavaScript Personalize SDK para la versión 3
Cuando termine el ejercicio de introducción, para evitar incurrir en cargos innecesarios, elimine los recursos que creó. Para obtener más información, consulte Requisitos para eliminar los recursos de Amazon Personalize.
Requisitos previos
Los siguientes son pasos previos para completar este tutorial:
-
Complete los Requisitos previos para los ejercicios de introducción para configurar los permisos necesarios y crear los datos de entrenamiento. Si también completó Introducción a un grupo de conjuntos de datos de dominio (consola), puede reutilizar los mismos datos de origen. Si utiliza sus propios datos de origen, asegúrese de que tienen el formato que se indica en los requisitos previos.
-
Configure el formulario JavaScript y SDK las AWS credenciales tal y como se especifica en el JavaScript procedimiento de configuración del SDK formulario de la Guía para AWS SDK for JavaScript desarrolladores.
Tutorial
En los siguientes pasos, instalará las dependencias necesarias. A continuación, se crea un grupo de conjuntos de datos, se importan los datos, se crea un recomendador para el caso de uso Mejores opciones y se obtienen recomendaciones.
Si usa Node.js, puede ejecutar cada ejemplo de código guardando el ejemplo como un JavaScript archivo y ejecutándolo despuésnode <fileName.js>
.
Después de completar los requisitos previos, instale las siguientes dependencias de Amazon Personalize:
-
@aws-sdk/client-personalize
-
@aws -sdk/ client-personalize-runtime
-
@aws -sdk/ client-personalize-events (opcional para este tutorial, pero obligatorio si quieres grabar eventos después de crear tu recomendador)
El siguiente es un ejemplo de un archivo package.json
que puede usar. Para instalar las dependencias con Node.js, vaya hasta donde guardó el archivo package.json
y ejecute 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 } }
Tras instalar las dependencias, cree sus clientes de Amazon Personalize. En este tutorial, en los ejemplos de código se parte del supuesto de que se crean los clientes en un archivo denominado personalizeClients.js
almacenado en un directorio denominado libs
.
A continuación se presenta un ejemplo de un archivo 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 };
Tras crear sus clientes de Amazon Personalize, importe los datos históricos que creó al completar los Requisitos previos para los ejercicios de introducción. Para importar datos históricos en Amazon Personalize, haga lo siguiente:
-
Guarda el siguiente esquema de Avro como un JSON archivo en tu directorio de trabajo. Este esquema coincide con las columnas del CSV archivo que creó al completar elCreación de los datos de entrenamiento (grupo de conjuntos de datos de dominio).
{ "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" }
-
Cree un esquema de dominio en Amazon Personalize con el siguiente código
createDomainSchema.js
. SustituyaSCHEMA_PATH
por la ruta al archivo schema.json que acaba de crear. Actualice elcreateSchemaParam
para especificar un nombre para el esquema, y paradomain
especifiqueVIDEO_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();
-
Cree un grupo de conjuntos de datos de dominio en Amazon Personalize con el siguiente código
createDomainDatasetGroup.js
. Actualice eldomainDatasetGroupParams
para especificar un nombre para el grupo de conjuntos de datos, y paradomain
especifiqueVIDEO_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();
-
Cree un conjunto de datos de interacciones de elementos en Amazon Personalize con el código
createDataset.js
siguiente. ActualicecreateDatasetParam
para especificar el nombre del recurso de Amazon (ARN) del esquema y grupo de conjuntos de datos que acaba de crear, asigne un nombre al conjunto de datos y, paradatasetType
, especifiqueInteractions
.// 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();
-
Importe sus datos con el siguiente código
createDatasetImportJob.js
. Actualice eldatasetImportJobParam
para especificar lo siguiente:-
Especifique un nombre para el trabajo y especifique el conjunto de datos de InteractionsARN.
-
Para
dataLocation
, especifique la ruta del bucket de Amazon S3 (s3://
) en la que almacenó los datos de entrenamiento.https://amzn-s3-demo-bucket.s3.region-code.amazonaws.com
/folder name
/ratings.csv -
Para
roleArn
, especifique el nombre del recurso de Amazon para su rol de servicio de Amazon Personalize. Creó este rol como parte de los Requisitos previos para los ejercicios de introducción.
// 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();
-
Una vez finalizado el trabajo de importación del conjunto de datos, estará listo para crear un generador de recomendaciones. Para crear un generador de recomendaciones, utilice el siguiente código createRecommender.js
. createRecommenderParam
Actualícelo con lo siguiente: especifique un nombre para el recomendante, especifique el de su grupo de conjuntos de ARN datos y para recipeArn
especificararn: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();
Después de crear un generador de recomendaciones, úselo para obtener recomendaciones. Utilice el siguiente código getRecommendations.js
para obtener recomendaciones para un usuario. Actualiza getRecommendationsParam
para especificar el ARN del recomendador que creaste en el paso anterior y especifica un ID de usuario (por ejemplo,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();