Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Mise en route (SDK pour Java 2.x) - Amazon Personalize

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mise en route (SDK pour Java 2.x)

Ce didacticiel vous explique comment effectuer le flux de travail Amazon Personalize du début à la fin avec le AWS SDK for Java 2.x.

Lorsque vous avez terminé l'exercice de mise en route, pour éviter d'encourir des frais inutiles, supprimez les ressources que vous avez créées. Pour de plus amples informations, veuillez consulter Conditions requises pour supprimer des ressources Amazon Personalize.

Pour obtenir plus d’exemples, consultez Compléter le projet Amazon Personalize.

Prérequis

Les étapes suivantes sont nécessaires pour suivre ce didacticiel :

didacticiel

Dans les étapes suivantes, vous allez configurer votre projet pour utiliser les packages Amazon Personalize et créer le SDK Amazon Personalize pour les clients Java 2.x. Ensuite, vous importez des données, vous créez et déployez une version de solution avec une campagne et vous obtenez des recommandations.

Une fois les conditions requises remplies, ajoutez les dépendances Amazon Personalize à votre fichier pom.xml et importez les packages Amazon Personalize.

  1. Ajoutez les dépendances suivantes à votre fichier pom.xml. Les numéros de version les plus récents peuvent être différents de ceux de l'exemple de code.

    <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>personalize</artifactId> <version>2.16.83</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>personalizeruntime</artifactId> <version>2.16.83</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>personalizeevents</artifactId> <version>2.16.83</version> </dependency>
  2. Ajoutez les instructions d'importation suivantes à votre projet.

    // import client packages import software.amazon.awssdk.services.personalize.PersonalizeClient; import software.amazon.awssdk.services.personalizeruntime.PersonalizeRuntimeClient; // Amazon Personalize exception package import software.amazon.awssdk.services.personalize.model.PersonalizeException; // schema packages import software.amazon.awssdk.services.personalize.model.CreateSchemaRequest; // dataset group packages import software.amazon.awssdk.services.personalize.model.CreateDatasetGroupRequest; import software.amazon.awssdk.services.personalize.model.DescribeDatasetGroupRequest; // dataset packages import software.amazon.awssdk.services.personalize.model.CreateDatasetRequest; // dataset import job packages import software.amazon.awssdk.services.personalize.model.CreateDatasetImportJobRequest; import software.amazon.awssdk.services.personalize.model.DataSource; import software.amazon.awssdk.services.personalize.model.DatasetImportJob; import software.amazon.awssdk.services.personalize.model.DescribeDatasetImportJobRequest; // solution packages import software.amazon.awssdk.services.personalize.model.CreateSolutionRequest; import software.amazon.awssdk.services.personalize.model.CreateSolutionResponse; // solution version packages import software.amazon.awssdk.services.personalize.model.DescribeSolutionRequest; import software.amazon.awssdk.services.personalize.model.CreateSolutionVersionRequest; import software.amazon.awssdk.services.personalize.model.CreateSolutionVersionResponse; import software.amazon.awssdk.services.personalize.model.DescribeSolutionVersionRequest; // campaign packages import software.amazon.awssdk.services.personalize.model.CreateCampaignRequest; import software.amazon.awssdk.services.personalize.model.CreateCampaignResponse; // get recommendations packages import software.amazon.awssdk.services.personalizeruntime.model.GetRecommendationsRequest; import software.amazon.awssdk.services.personalizeruntime.model.GetRecommendationsResponse; import software.amazon.awssdk.services.personalizeruntime.model.PredictedItem; // Java time utility package import java.time.Instant;

Une fois les conditions requises remplies, ajoutez les dépendances Amazon Personalize à votre fichier pom.xml et importez les packages Amazon Personalize.

  1. Ajoutez les dépendances suivantes à votre fichier pom.xml. Les numéros de version les plus récents peuvent être différents de ceux de l'exemple de code.

    <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>personalize</artifactId> <version>2.16.83</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>personalizeruntime</artifactId> <version>2.16.83</version> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>personalizeevents</artifactId> <version>2.16.83</version> </dependency>
  2. Ajoutez les instructions d'importation suivantes à votre projet.

    // import client packages import software.amazon.awssdk.services.personalize.PersonalizeClient; import software.amazon.awssdk.services.personalizeruntime.PersonalizeRuntimeClient; // Amazon Personalize exception package import software.amazon.awssdk.services.personalize.model.PersonalizeException; // schema packages import software.amazon.awssdk.services.personalize.model.CreateSchemaRequest; // dataset group packages import software.amazon.awssdk.services.personalize.model.CreateDatasetGroupRequest; import software.amazon.awssdk.services.personalize.model.DescribeDatasetGroupRequest; // dataset packages import software.amazon.awssdk.services.personalize.model.CreateDatasetRequest; // dataset import job packages import software.amazon.awssdk.services.personalize.model.CreateDatasetImportJobRequest; import software.amazon.awssdk.services.personalize.model.DataSource; import software.amazon.awssdk.services.personalize.model.DatasetImportJob; import software.amazon.awssdk.services.personalize.model.DescribeDatasetImportJobRequest; // solution packages import software.amazon.awssdk.services.personalize.model.CreateSolutionRequest; import software.amazon.awssdk.services.personalize.model.CreateSolutionResponse; // solution version packages import software.amazon.awssdk.services.personalize.model.DescribeSolutionRequest; import software.amazon.awssdk.services.personalize.model.CreateSolutionVersionRequest; import software.amazon.awssdk.services.personalize.model.CreateSolutionVersionResponse; import software.amazon.awssdk.services.personalize.model.DescribeSolutionVersionRequest; // campaign packages import software.amazon.awssdk.services.personalize.model.CreateCampaignRequest; import software.amazon.awssdk.services.personalize.model.CreateCampaignResponse; // get recommendations packages import software.amazon.awssdk.services.personalizeruntime.model.GetRecommendationsRequest; import software.amazon.awssdk.services.personalizeruntime.model.GetRecommendationsResponse; import software.amazon.awssdk.services.personalizeruntime.model.PredictedItem; // Java time utility package import java.time.Instant;

Après avoir ajouté les dépendances Amazon Personalize à votre fichier pom.xml et importé les packages requis, créez les clients Amazon Personalize suivants :

PersonalizeClient personalizeClient = PersonalizeClient.builder() .region(region) .build(); PersonalizeRuntimeClient personalizeRuntimeClient = PersonalizeRuntimeClient.builder() .region(region) .build();

Après avoir ajouté les dépendances Amazon Personalize à votre fichier pom.xml et importé les packages requis, créez les clients Amazon Personalize suivants :

PersonalizeClient personalizeClient = PersonalizeClient.builder() .region(region) .build(); PersonalizeRuntimeClient personalizeRuntimeClient = PersonalizeRuntimeClient.builder() .region(region) .build();

Après avoir initialisé vos clients Amazon Personalize, importez les données historiques que vous avez créées lorsque vous avez terminé leConditions préalables pour démarrer. Pour importer des données historiques dans Amazon Personalize, procédez comme suit :

  1. Enregistrez le schéma Avro suivant sous forme de fichier JSON dans votre répertoire de travail. Ce schéma correspond aux colonnes du fichier CSV que vous avez créé lorsque vous avez terminé leConditions préalables pour démarrer.

    { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }
  2. Utilisez la createSchema méthode suivante pour créer un schéma dans Amazon Personalize. Transmettez les paramètres suivants : un client du service Amazon Personalize, le nom de votre schéma et le chemin du fichier JSON du schéma que vous avez créé à l'étape précédente. La méthode renvoie l'Amazon Resource Name (ARN) de votre nouveau schéma. Conservez-le en vue d'une utilisation ultérieure.

    public static String createSchema(PersonalizeClient personalizeClient, String schemaName, String filePath) { String schema = null; try { schema = new String(Files.readAllBytes(Paths.get(filePath))); } catch (IOException e) { System.out.println(e.getMessage()); } try { CreateSchemaRequest createSchemaRequest = CreateSchemaRequest.builder() .name(schemaName) .schema(schema) .build(); String schemaArn = personalizeClient.createSchema(createSchemaRequest).schemaArn(); System.out.println("Schema arn: " + schemaArn); return schemaArn; } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
  3. Créez un groupe d'ensemble de données. Utilisez la createDatasetGroup méthode suivante pour créer un groupe de jeux de données. Transmettez les paramètres suivants : un client du service Amazon Personalize et le nom du groupe de jeux de données. La méthode renvoie l'ARN de votre nouveau groupe de données. Conservez-le en vue d'une utilisation ultérieure.

    public static String createDatasetGroup(PersonalizeClient personalizeClient, String datasetGroupName) { try { CreateDatasetGroupRequest createDatasetGroupRequest = CreateDatasetGroupRequest.builder() .name(datasetGroupName) .build(); return personalizeClient.createDatasetGroup(createDatasetGroupRequest).datasetGroupArn(); } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return ""; }
  4. Créez un jeu de données sur les interactions entre les articles. Utilisez la createDataset méthode suivante pour créer un jeu de données d'interactions entre articles. Transmettez les paramètres suivants : un client du service Amazon Personalize, le nom de votre ensemble de données, l'ARN de votre schéma, l'ARN de votre groupe de jeux de données et le type Interactions de jeu de données. La méthode renvoie l'ARN de votre nouvel ensemble de données. Conservez-le en vue d'une utilisation ultérieure.

    public static String createDataset(PersonalizeClient personalizeClient, String datasetName, String datasetGroupArn, String datasetType, String schemaArn) { try { CreateDatasetRequest request = CreateDatasetRequest.builder() .name(datasetName) .datasetGroupArn(datasetGroupArn) .datasetType(datasetType) .schemaArn(schemaArn) .build(); String datasetArn = personalizeClient.createDataset(request) .datasetArn(); System.out.println("Dataset " + datasetName + " created."); return datasetArn; } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
  5. Importez vos données à l'aide d'une tâche d'importation de jeux de données. Utilisez la createPersonalizeDatasetImportJob méthode suivante pour créer une tâche d'importation de jeux de données.

    Transmettez les paramètres suivants : un client du service Amazon Personalize, le nom de la tâche, l'ARN de votre ensemble de données d'interactions avec les articles, le chemin du compartiment Amazon S3 (s3://bucket name/folder name/ratings.csv) dans lequel vous avez stocké les données de formation et l'ARN de votre rôle de service (vous avez créé ce rôle dans le cadre duConditions préalables pour démarrer). La méthode renvoie l'ARN de votre tâche d'importation de jeu de données. Stockez-le éventuellement pour une utilisation ultérieure.

    public static String createPersonalizeDatasetImportJob(PersonalizeClient personalizeClient, String jobName, String datasetArn, String s3BucketPath, String roleArn) { long waitInMilliseconds = 60 * 1000; String status; String datasetImportJobArn; try { DataSource importDataSource = DataSource.builder() .dataLocation(s3BucketPath) .build(); CreateDatasetImportJobRequest createDatasetImportJobRequest = CreateDatasetImportJobRequest.builder() .datasetArn(datasetArn) .dataSource(importDataSource) .jobName(jobName) .roleArn(roleArn) .build(); datasetImportJobArn = personalizeClient.createDatasetImportJob(createDatasetImportJobRequest) .datasetImportJobArn(); DescribeDatasetImportJobRequest describeDatasetImportJobRequest = DescribeDatasetImportJobRequest.builder() .datasetImportJobArn(datasetImportJobArn) .build(); long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; while (Instant.now().getEpochSecond() < maxTime) { DatasetImportJob datasetImportJob = personalizeClient .describeDatasetImportJob(describeDatasetImportJobRequest) .datasetImportJob(); status = datasetImportJob.status(); System.out.println("Dataset import job status: " + status); if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return datasetImportJobArn; } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return ""; }

Après avoir initialisé vos clients Amazon Personalize, importez les données historiques que vous avez créées lorsque vous avez terminé leConditions préalables pour démarrer. Pour importer des données historiques dans Amazon Personalize, procédez comme suit :

  1. Enregistrez le schéma Avro suivant sous forme de fichier JSON dans votre répertoire de travail. Ce schéma correspond aux colonnes du fichier CSV que vous avez créé lorsque vous avez terminé leConditions préalables pour démarrer.

    { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }
  2. Utilisez la createSchema méthode suivante pour créer un schéma dans Amazon Personalize. Transmettez les paramètres suivants : un client du service Amazon Personalize, le nom de votre schéma et le chemin du fichier JSON du schéma que vous avez créé à l'étape précédente. La méthode renvoie l'Amazon Resource Name (ARN) de votre nouveau schéma. Conservez-le en vue d'une utilisation ultérieure.

    public static String createSchema(PersonalizeClient personalizeClient, String schemaName, String filePath) { String schema = null; try { schema = new String(Files.readAllBytes(Paths.get(filePath))); } catch (IOException e) { System.out.println(e.getMessage()); } try { CreateSchemaRequest createSchemaRequest = CreateSchemaRequest.builder() .name(schemaName) .schema(schema) .build(); String schemaArn = personalizeClient.createSchema(createSchemaRequest).schemaArn(); System.out.println("Schema arn: " + schemaArn); return schemaArn; } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
  3. Créez un groupe d'ensemble de données. Utilisez la createDatasetGroup méthode suivante pour créer un groupe de jeux de données. Transmettez les paramètres suivants : un client du service Amazon Personalize et le nom du groupe de jeux de données. La méthode renvoie l'ARN de votre nouveau groupe de données. Conservez-le en vue d'une utilisation ultérieure.

    public static String createDatasetGroup(PersonalizeClient personalizeClient, String datasetGroupName) { try { CreateDatasetGroupRequest createDatasetGroupRequest = CreateDatasetGroupRequest.builder() .name(datasetGroupName) .build(); return personalizeClient.createDatasetGroup(createDatasetGroupRequest).datasetGroupArn(); } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return ""; }
  4. Créez un jeu de données sur les interactions entre les articles. Utilisez la createDataset méthode suivante pour créer un jeu de données d'interactions entre articles. Transmettez les paramètres suivants : un client du service Amazon Personalize, le nom de votre ensemble de données, l'ARN de votre schéma, l'ARN de votre groupe de jeux de données et le type Interactions de jeu de données. La méthode renvoie l'ARN de votre nouvel ensemble de données. Conservez-le en vue d'une utilisation ultérieure.

    public static String createDataset(PersonalizeClient personalizeClient, String datasetName, String datasetGroupArn, String datasetType, String schemaArn) { try { CreateDatasetRequest request = CreateDatasetRequest.builder() .name(datasetName) .datasetGroupArn(datasetGroupArn) .datasetType(datasetType) .schemaArn(schemaArn) .build(); String datasetArn = personalizeClient.createDataset(request) .datasetArn(); System.out.println("Dataset " + datasetName + " created."); return datasetArn; } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
  5. Importez vos données à l'aide d'une tâche d'importation de jeux de données. Utilisez la createPersonalizeDatasetImportJob méthode suivante pour créer une tâche d'importation de jeux de données.

    Transmettez les paramètres suivants : un client du service Amazon Personalize, le nom de la tâche, l'ARN de votre ensemble de données d'interactions avec les articles, le chemin du compartiment Amazon S3 (s3://bucket name/folder name/ratings.csv) dans lequel vous avez stocké les données de formation et l'ARN de votre rôle de service (vous avez créé ce rôle dans le cadre duConditions préalables pour démarrer). La méthode renvoie l'ARN de votre tâche d'importation de jeu de données. Stockez-le éventuellement pour une utilisation ultérieure.

    public static String createPersonalizeDatasetImportJob(PersonalizeClient personalizeClient, String jobName, String datasetArn, String s3BucketPath, String roleArn) { long waitInMilliseconds = 60 * 1000; String status; String datasetImportJobArn; try { DataSource importDataSource = DataSource.builder() .dataLocation(s3BucketPath) .build(); CreateDatasetImportJobRequest createDatasetImportJobRequest = CreateDatasetImportJobRequest.builder() .datasetArn(datasetArn) .dataSource(importDataSource) .jobName(jobName) .roleArn(roleArn) .build(); datasetImportJobArn = personalizeClient.createDatasetImportJob(createDatasetImportJobRequest) .datasetImportJobArn(); DescribeDatasetImportJobRequest describeDatasetImportJobRequest = DescribeDatasetImportJobRequest.builder() .datasetImportJobArn(datasetImportJobArn) .build(); long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; while (Instant.now().getEpochSecond() < maxTime) { DatasetImportJob datasetImportJob = personalizeClient .describeDatasetImportJob(describeDatasetImportJobRequest) .datasetImportJob(); status = datasetImportJob.status(); System.out.println("Dataset import job status: " + status); if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return datasetImportJobArn; } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return ""; }

Après avoir importé vos données, vous créez une solution et une version de solution comme suit. La solution contient les configurations permettant d'entraîner un modèle et une version de solution est un modèle entraîné.

  1. Créez une nouvelle solution à l'aide de la createPersonalizeSolution méthode suivante. Transmettez les paramètres suivants : un client du service Amazon Personalize, vos groupes de données Amazon Resource Name (ARN), le nom de la solution et l'ARN des User-Personalization-v 2 recettes (arn:aws:personalize:::recipe/aws-user-personalization-v2). La méthode renvoie l'ARN de votre nouvelle solution. Conservez-le en vue d'une utilisation ultérieure.

    public static String createPersonalizeSolution(PersonalizeClient personalizeClient, String datasetGroupArn, String solutionName, String recipeArn) { try { CreateSolutionRequest solutionRequest = CreateSolutionRequest.builder() .name(solutionName) .datasetGroupArn(datasetGroupArn) .recipeArn(recipeArn) .build(); CreateSolutionResponse solutionResponse = personalizeClient.createSolution(solutionRequest); return solutionResponse.solutionArn(); } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
  2. Créez une version de solution à l'aide de la createPersonalizeSolutionVersion méthode suivante. Passez en paramètre l'ARN de la solution à l'étape précédente. Le code suivant vérifie d'abord si votre solution est prête, puis crée une version de la solution. Pendant l'entraînement, le code utilise l'DescribeSolutionVersionopération pour récupérer l'état de la version de la solution. Lorsque la formation est terminée, la méthode renvoie l'ARN de la nouvelle version de votre solution. Conservez-le en vue d'une utilisation ultérieure.

    public static String createPersonalizeSolutionVersion(PersonalizeClient personalizeClient, String solutionArn) { long maxTime = 0; long waitInMilliseconds = 30 * 1000; // 30 seconds String solutionStatus = ""; String solutionVersionStatus = ""; String solutionVersionArn = ""; try { DescribeSolutionRequest describeSolutionRequest = DescribeSolutionRequest.builder() .solutionArn(solutionArn) .build(); maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; // Wait until solution is active. while (Instant.now().getEpochSecond() < maxTime) { solutionStatus = personalizeClient.describeSolution(describeSolutionRequest).solution().status(); System.out.println("Solution status: " + solutionStatus); if (solutionStatus.equals("ACTIVE") || solutionStatus.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } if (solutionStatus.equals("ACTIVE")) { CreateSolutionVersionRequest createSolutionVersionRequest = CreateSolutionVersionRequest.builder() .solutionArn(solutionArn) .build(); CreateSolutionVersionResponse createSolutionVersionResponse = personalizeClient .createSolutionVersion(createSolutionVersionRequest); solutionVersionArn = createSolutionVersionResponse.solutionVersionArn(); System.out.println("Solution version ARN: " + solutionVersionArn); DescribeSolutionVersionRequest describeSolutionVersionRequest = DescribeSolutionVersionRequest.builder() .solutionVersionArn(solutionVersionArn) .build(); while (Instant.now().getEpochSecond() < maxTime) { solutionVersionStatus = personalizeClient.describeSolutionVersion(describeSolutionVersionRequest) .solutionVersion().status(); System.out.println("Solution version status: " + solutionVersionStatus); if (solutionVersionStatus.equals("ACTIVE") || solutionVersionStatus.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return solutionVersionArn; } } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }

Pour de plus amples informations, veuillez consulter Création manuelle d'une version de solution. Lorsque vous créez une version de solution, vous pouvez évaluer ses performances avant de continuer. Pour de plus amples informations, veuillez consulter Évaluation d'une version de la solution Amazon Personalize à l'aide de métriques.

Après avoir importé vos données, vous créez une solution et une version de solution comme suit. La solution contient les configurations permettant d'entraîner un modèle et une version de solution est un modèle entraîné.

  1. Créez une nouvelle solution à l'aide de la createPersonalizeSolution méthode suivante. Transmettez les paramètres suivants : un client du service Amazon Personalize, vos groupes de données Amazon Resource Name (ARN), le nom de la solution et l'ARN des User-Personalization-v 2 recettes (arn:aws:personalize:::recipe/aws-user-personalization-v2). La méthode renvoie l'ARN de votre nouvelle solution. Conservez-le en vue d'une utilisation ultérieure.

    public static String createPersonalizeSolution(PersonalizeClient personalizeClient, String datasetGroupArn, String solutionName, String recipeArn) { try { CreateSolutionRequest solutionRequest = CreateSolutionRequest.builder() .name(solutionName) .datasetGroupArn(datasetGroupArn) .recipeArn(recipeArn) .build(); CreateSolutionResponse solutionResponse = personalizeClient.createSolution(solutionRequest); return solutionResponse.solutionArn(); } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
  2. Créez une version de solution à l'aide de la createPersonalizeSolutionVersion méthode suivante. Passez en paramètre l'ARN de la solution à l'étape précédente. Le code suivant vérifie d'abord si votre solution est prête, puis crée une version de la solution. Pendant l'entraînement, le code utilise l'DescribeSolutionVersionopération pour récupérer l'état de la version de la solution. Lorsque la formation est terminée, la méthode renvoie l'ARN de la nouvelle version de votre solution. Conservez-le en vue d'une utilisation ultérieure.

    public static String createPersonalizeSolutionVersion(PersonalizeClient personalizeClient, String solutionArn) { long maxTime = 0; long waitInMilliseconds = 30 * 1000; // 30 seconds String solutionStatus = ""; String solutionVersionStatus = ""; String solutionVersionArn = ""; try { DescribeSolutionRequest describeSolutionRequest = DescribeSolutionRequest.builder() .solutionArn(solutionArn) .build(); maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; // Wait until solution is active. while (Instant.now().getEpochSecond() < maxTime) { solutionStatus = personalizeClient.describeSolution(describeSolutionRequest).solution().status(); System.out.println("Solution status: " + solutionStatus); if (solutionStatus.equals("ACTIVE") || solutionStatus.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } if (solutionStatus.equals("ACTIVE")) { CreateSolutionVersionRequest createSolutionVersionRequest = CreateSolutionVersionRequest.builder() .solutionArn(solutionArn) .build(); CreateSolutionVersionResponse createSolutionVersionResponse = personalizeClient .createSolutionVersion(createSolutionVersionRequest); solutionVersionArn = createSolutionVersionResponse.solutionVersionArn(); System.out.println("Solution version ARN: " + solutionVersionArn); DescribeSolutionVersionRequest describeSolutionVersionRequest = DescribeSolutionVersionRequest.builder() .solutionVersionArn(solutionVersionArn) .build(); while (Instant.now().getEpochSecond() < maxTime) { solutionVersionStatus = personalizeClient.describeSolutionVersion(describeSolutionVersionRequest) .solutionVersion().status(); System.out.println("Solution version status: " + solutionVersionStatus); if (solutionVersionStatus.equals("ACTIVE") || solutionVersionStatus.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return solutionVersionArn; } } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }

Pour de plus amples informations, veuillez consulter Création manuelle d'une version de solution. Lorsque vous créez une version de solution, vous pouvez évaluer ses performances avant de continuer. Pour de plus amples informations, veuillez consulter Évaluation d'une version de la solution Amazon Personalize à l'aide de métriques.

Après avoir formé et évalué la version de votre solution, déployez-la dans le cadre d'une campagne Amazon Personalize. Utilisez la createPersonalCampaign méthode suivante pour déployer une version de solution. Transmettez les paramètres suivants : un client du service Amazon Personalize, le nom de ressource Amazon (ARN) de la version de solution que vous avez créée à l'étape précédente et le nom de la campagne. La méthode renvoie l'ARN de votre nouvelle campagne. Conservez-le en vue d'une utilisation ultérieure.

public static String createPersonalCompaign(PersonalizeClient personalizeClient, String solutionVersionArn, String name) { try { CreateCampaignRequest createCampaignRequest = CreateCampaignRequest.builder() .minProvisionedTPS(1) .solutionVersionArn(solutionVersionArn) .name(name) .build(); CreateCampaignResponse campaignResponse = personalizeClient.createCampaign(createCampaignRequest); System.out.println("The campaign ARN is "+campaignResponse.campaignArn()); return campaignResponse.campaignArn(); } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Pour plus d'informations sur les campagnes Amazon Personalize, consultezDéploiement d'une version de la solution Amazon Personalize avec une campagne.

Après avoir formé et évalué la version de votre solution, déployez-la dans le cadre d'une campagne Amazon Personalize. Utilisez la createPersonalCampaign méthode suivante pour déployer une version de solution. Transmettez les paramètres suivants : un client du service Amazon Personalize, le nom de ressource Amazon (ARN) de la version de solution que vous avez créée à l'étape précédente et le nom de la campagne. La méthode renvoie l'ARN de votre nouvelle campagne. Conservez-le en vue d'une utilisation ultérieure.

public static String createPersonalCompaign(PersonalizeClient personalizeClient, String solutionVersionArn, String name) { try { CreateCampaignRequest createCampaignRequest = CreateCampaignRequest.builder() .minProvisionedTPS(1) .solutionVersionArn(solutionVersionArn) .name(name) .build(); CreateCampaignResponse campaignResponse = personalizeClient.createCampaign(createCampaignRequest); System.out.println("The campaign ARN is "+campaignResponse.campaignArn()); return campaignResponse.campaignArn(); } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Pour plus d'informations sur les campagnes Amazon Personalize, consultezDéploiement d'une version de la solution Amazon Personalize avec une campagne.

Après avoir créé une campagne, vous l'utilisez pour obtenir des recommandations. Utilisez la getRecs méthode suivante pour obtenir des recommandations pour un utilisateur. Transmettez comme paramètres un client d'exécution Amazon Personalize, le nom de ressource Amazon (ARN) de la campagne que vous avez créée à l'étape précédente et un ID utilisateur (par exemple123) issu des données historiques que vous avez importées. La méthode imprime la liste des éléments recommandés à l'écran.

public static void getRecs(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId) { try { GetRecommendationsRequest recommendationsRequest = GetRecommendationsRequest.builder() .campaignArn(campaignArn) .numResults(20) .userId(userId) .build(); GetRecommendationsResponse recommendationsResponse = personalizeRuntimeClient .getRecommendations(recommendationsRequest); List<PredictedItem> items = recommendationsResponse.itemList(); for (PredictedItem item : items) { System.out.println("Item Id is : " + item.itemId()); System.out.println("Item score is : " + item.score()); } } catch (AwsServiceException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Après avoir créé une campagne, vous l'utilisez pour obtenir des recommandations. Utilisez la getRecs méthode suivante pour obtenir des recommandations pour un utilisateur. Transmettez comme paramètres un client d'exécution Amazon Personalize, le nom de ressource Amazon (ARN) de la campagne que vous avez créée à l'étape précédente et un ID utilisateur (par exemple123) issu des données historiques que vous avez importées. La méthode imprime la liste des éléments recommandés à l'écran.

public static void getRecs(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId) { try { GetRecommendationsRequest recommendationsRequest = GetRecommendationsRequest.builder() .campaignArn(campaignArn) .numResults(20) .userId(userId) .build(); GetRecommendationsResponse recommendationsResponse = personalizeRuntimeClient .getRecommendations(recommendationsRequest); List<PredictedItem> items = recommendationsResponse.itemList(); for (PredictedItem item : items) { System.out.println("Item Id is : " + item.itemId()); System.out.println("Item score is : " + item.score()); } } catch (AwsServiceException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Compléter le projet Amazon Personalize

Pour un all-in-one projet qui explique comment terminer le flux de travail Amazon Personalize avec le SDK pour Java 2.x, consultez l'application Amazon-Personalize-Java sur. GitHub Ce projet inclut la formation de plusieurs versions de solutions avec différentes recettes et l'enregistrement des événements liés à l' PutEvents opération.

Pour des exemples supplémentaires, consultez le code trouvé dans le dossier de personnalisation du référentiel d'exemples du AWS SDK.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.