Introducción a un grupo de conjuntos de datos de dominio (SDKpara la JavaScript versión 3) - Amazon Personalize

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 en el repositorio de ejemplos de AWS SDK código.

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:

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:

  1. 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" }
  2. Cree un esquema de dominio en Amazon Personalize con el siguiente código createDomainSchema.js. Sustituya SCHEMA_PATH por la ruta al archivo schema.json que acaba de crear. Actualice el createSchemaParam para especificar un nombre para el esquema, y para domain especifique 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. Cree un grupo de conjuntos de datos de dominio en Amazon Personalize con el siguiente código createDomainDatasetGroup.js. Actualice el domainDatasetGroupParams para especificar un nombre para el grupo de conjuntos de datos, y para domain especifique 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. Cree un conjunto de datos de interacciones de elementos en Amazon Personalize con el código createDataset.js siguiente. Actualice createDatasetParam 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();
  5. Importe sus datos con el siguiente código createDatasetImportJob.js. Actualice el datasetImportJobParam 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://https://amzn-s3-demo-bucket.s3.region-code.amazonaws.com/folder name/ratings.csv) en la que almacenó los datos de entrenamiento.

    • 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. createRecommenderParamActualí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();