Filtrer les recommandations en temps réel - 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.

Filtrer les recommandations en temps réel

Vous pouvez filtrer les recommandations en temps réel à l'aide de la console Amazon Personalize, AWS Command Line Interface (AWS CLI) ou du AWS SDKs.

Lorsque vous recevez des recommandations personnalisées ou des articles similaires, vous pouvez spécifier une promotion dans votre demande. Une promotion utilise un filtre pour définir des règles commerciales supplémentaires qui s'appliquent à un sous-ensemble configurable d'articles recommandés. Pour de plus amples informations, veuillez consulter Promouvoir des articles dans le cadre de recommandations en temps réel.

Filtrer les recommandations en temps réel (console)

Pour filtrer les recommandations en temps réel à l'aide de la console, créez un filtre, puis appliquez-le à une demande de recommandation.

Note

Pour filtrer les recommandations à l'aide d'un filtre paramétré et d'une campagne déployée avant le 10 novembre 2020, vous devez redéployer la campagne en utilisant l'UpdateCampaignopération ou en créer une nouvelle.

Création d'un filtre (console)

Pour créer un filtre dans la console, choisissez le groupe de données contenant la campagne ou le recommandateur que vous souhaitez utiliser pour obtenir des recommandations filtrées. Indiquez ensuite un nom de filtre et une expression de filtre.

Pour créer un filtre (console)
  1. Ouvrez la console Amazon Personalize https://console.aws.amazon.com/personalize/chez vous et connectez-vous à votre compte.

  2. Choisissez le groupe de jeux de données qui contient la campagne ou le recommandateur que vous souhaitez utiliser pour obtenir des recommandations filtrées.

  3. Dans le volet de navigation, choisissez Filtres, puis choisissez Créer un nouveau filtre. La page Créer un filtre s'affiche.

    Représente la page de création d'un filtre avec le nom du filtre et les champs d'expression.
  4. Dans Nom du filtre, entrez le nom de votre filtre. Vous choisirez le filtre portant ce nom lorsque vous l'appliquerez à une demande de recommandation.

  5. Pour Expression, choisissez Créer une expression ou Ajouter une expression manuellement et créez ou insérez votre expression :

    • Pour utiliser le générateur d'expressions, choisissez Créer une expression. Le générateur d'expressions fournit une structure, des champs et des directives pour créer des expressions de filtre correctement formatées. Pour de plus amples informations, veuillez consulter Utilisation du générateur d'expressions de filtre.

    • Pour saisir votre propre expression, choisissez Ajouter une expression manuellement. Pour de plus amples informations, veuillez consulter Filtrer les éléments d'expression.

  6. Choisissez Finish (Terminer). La page d'aperçu du filtre indique le nom de ressource Amazon (ARN), le statut et l'expression complète du filtre. Pour supprimer le filtre, choisissez Supprimer. Pour plus d'informations sur la recherche et la suppression de filtres une fois que vous avez quitté la page d'aperçu, consultezSupprimer un filtre (console).

    Représente la page de détails du filtre avec l'ARN et l'expression du filtre.

Appliquer un filtre (console)

Pour appliquer un filtre, dans Test recommender (pour les recommandeurs) ou Test campaign results (pour les campagnes personnalisées), choisissez le filtre et entrez les valeurs des paramètres de filtre. Obtenez ensuite des recommandations pour un utilisateur.

Important

Pour les expressions de filtre qui utilisent un INCLUDE élément, vous devez fournir des valeurs pour tous les paramètres définis dans l'expression. Pour les filtres dont les expressions utilisent un EXCLUDE élément, vous pouvez omettre lefilter-values. Dans ce cas, Amazon Personalize n'utilise pas cette partie de l'expression pour filtrer les recommandations.

Pour appliquer un filtre (console)
  1. Ouvrez la console Amazon Personalize https://console.aws.amazon.com/personalize/chez vous et connectez-vous à votre compte.

  2. Choisissez le groupe de jeux de données qui contient la campagne ou le recommandateur que vous souhaitez utiliser pour obtenir des recommandations filtrées.

  3. En fonction du type de groupe de données ou de ressource de votre jeu de données, effectuez l'une des opérations suivantes :

    1. Pour un groupe de jeux de données de domaine, dans le volet de navigation, sélectionnez Recommenders.

    2. Pour un groupe de jeux de données personnalisé ou des ressources personnalisées, dans le volet de navigation, choisissez Ressources personnalisées puis Campagnes.

  4. Sur la page Recommandeurs ou Campagnes, choisissez le recommandeur ou la campagne cible.

  5. À des fins de comparaison, commencez par obtenir des recommandations sans appliquer de filtre. Sous Test recommander/Test des résultats de la campagne, entrez l'ID d'un utilisateur pour lequel vous souhaitez obtenir des recommandations, ou l'ID de l'article pour les articles connexes, puis choisissez Obtenir des recommandations. Un tableau contenant les principales recommandations s'affiche.

    Représente les résultats des recommandations sans appliquer de filtre.
  6. Dans le menu Nom du filtre, choisissez le filtre que vous avez créé. Si votre filtre comporte des paramètres d'espace réservé, les champs associés à chaque paramètre apparaissent.

  7. Si vous utilisez un filtre avec des paramètres d'espace réservé, entrez la valeur pour chaque paramètre afin de définir les critères du filtre. Pour utiliser plusieurs valeurs pour un paramètre, séparez chaque valeur par une virgule.

  8. En utilisant la même étape User ID ou Item ID comme à l'étape précédente, choisissez Obtenir des recommandations. Le tableau des recommandations s'affiche.

    Représente les résultats des recommandations avec un filtre appliqué.

    Par exemple, si l'utilisateur a déjà acheté un article recommandé, le filtre le supprime de la liste des recommandations. Dans cet exemple, les articles 2657 et 2985 ont été remplacés par les articles les plus appropriés que l'utilisateur n'a pas achetés (articles 2641 et 1573).

Utilisation du générateur d'expressions de filtre

Le générateur d'expressions de la page Créer un filtre fournit une structure, des champs et des directives pour créer un filtre correctement formaté.

Représente les champs du générateur d'expressions sur la page de création d'un filtre.

Pour créer une expression de filtre :

  • Utilisez les champs Type, Action, Propriété, Opérateur et Valeur pour créer une expression.

    Pour la valeur, entrez une valeur fixe ou, pour définir des critères de filtre lorsque vous recevez des recommandations, entrez $ + un nom de paramètre. Par exemple, $GENRES. Lorsque vous recevez des recommandations, vous fournissez la ou les valeurs à utiliser pour filtrer. Dans cet exemple, vous devez fournir un genre ou une liste de genres lorsque vous recevez des recommandations.

    Séparez les valeurs non paramétriques multiples par une virgule. Vous ne pouvez pas ajouter de paramètres séparés par des virgules à un filtre.

    Note

    Une fois que vous avez choisi une propriété (au dataset.field format), la valeur de propriété pour toutes les lignes suivantes enchaînées par AND ou OR conditions doit utiliser la même valeur. dataset

  • Utilisez les boutons + et X pour ajouter ou supprimer une ligne dans votre expression. Vous ne pouvez pas supprimer la première ligne.

  • Pour les nouvelles lignes, utilisez les AND OR opérateursIF, ou du menu ET pour créer une chaîne de conditions.

    Pour IF les conditions :

    • Chaque expression ne peut contenir qu'un seul IF élément. Si vous supprimez une condition IF, le générateur d'expressions supprime toutes les AND conditions qui la suivent.

    • Vous ne pouvez utiliser IF des conditions que pour les expressions filtrées selon leCurrentUser.

  • Cliquez sur le bouton Ajouter une expression pour ajouter une expression de filtre supplémentaire pour un filtrage plus précis. Chaque expression est d'abord évaluée indépendamment et le résultat est une union des deux résultats.

    Note

    Pour créer un filtre qui utilise à la fois des ensembles de données d'interactions entre éléments et éléments, ou des jeux de données d'interactions entre actions et actions, vous devez utiliser plusieurs expressions.

Exemple de générateur d'expressions

L'exemple suivant montre comment créer un filtre qui exclut les éléments d'un genre que vous spécifiez lorsque vous recevez des recommandations (notez le paramètre d'espace réservé $GENRES). Le filtre exclut également les éléments dont DOWNLOAD_COUNT la valeur est supérieure à200, mais uniquement si l'âge de l'utilisateur actuel est supérieur à17.

Montre comment utiliser le générateur d'expressions pour créer un exemple d'expression de filtre.

Supprimer un filtre (console)

La suppression d'un filtre supprime le filtre de la liste des filtres d'un groupe de jeux de données.

Important

Vous ne pouvez pas supprimer un filtre pendant qu'une tâche d'inférence par lots est en cours.

Pour supprimer un filtre (console)
  1. Ouvrez la console Amazon Personalize https://console.aws.amazon.com/personalize/chez vous et connectez-vous à votre compte.

  2. Dans la liste des groupes de jeux de données, choisissez le groupe de jeux de données qui contient le filtre que vous souhaitez supprimer.

  3. Dans le volet de navigation, sélectionnez Filtres.

  4. Dans la liste des filtres, choisissez le filtre que vous souhaitez supprimer, puis sélectionnez Afficher les détails. La page de détails du filtre apparaît.

  5. Choisissez Supprimer et confirmez la suppression dans la boîte de dialogue de confirmation.

Filtrer les recommandations en temps réel (AWS CLI)

Pour filtrer les recommandations à l'aide du AWS CLI, vous créez un filtre, puis vous l'appliquez en spécifiant l'ARN du filtre dans une GetPersonalizedRanking demande GetRecommendations or.

Important

Pour filtrer les recommandations à l'aide d'un filtre paramétré et d'une campagne que vous avez déployée avant le 10 novembre 2020, vous devez redéployer la campagne en utilisant l'UpdateCampaignappel ou en créer une nouvelle.

Création d'un filtre (AWS CLI)

Utilisez l'create-filteropération suivante pour créer un filtre et spécifier l'expression du filtre.

Remplacez le Filter name par le nom du filtre, puis Dataset group ARN par le Amazon Resource Name (ARN) du groupe de jeux de données. Remplacez l'exemple filter-expression par votre propre expression de filtre.

aws personalize create-filter \ --name Filter name \ --dataset-group-arn dataset group arn \ --filter-expression "EXCLUDE ItemID WHERE Items.CATEGORY IN (\"$CATEGORY\")"

En cas de succès, l'ARN du filtre s'affiche. Enregistrez-le pour une utilisation ultérieure. Pour vérifier que le filtre est actif, utilisez l'DescribeFilteropération avant d'utiliser le filtre.

Pour plus d’informations sur l’API, consultez CreateFilter. Pour plus d'informations sur les expressions de filtre, notamment des exemples, consultezStructure et éléments de l'expression du filtre.

Appliquer un filtre (AWS CLI)

Lorsque vous utilisez les get-personalized-ranking opérations get-action-recommendations ouget-recommendations, vous appliquez un filtre en transmettant les valeurs du filtre filter-arn et toutes les valeurs du filtre en tant que paramètres.

Voici un exemple de l'get-recommendationsopération. Remplacez-le Campaign ARN par le Amazon Resource Name (ARN) de votre campagne User ID par l'ID de l'utilisateur pour lequel vous recevez des recommandations et Filter ARN par l'ARN de votre filtre. Si vous recevez des recommandations d'un recommandeur plutôt que d'une campagne, utilisez à la recommender-arn place de --campaign-arn et fournissez l'ARN du recommandeur.

Si votre expression comporte des paramètres, incluez l'filter-valuesobjet. Pour chaque paramètre de votre expression de filtre, indiquez le nom du paramètre (en distinguant majuscules et minuscules) et les valeurs. Par exemple, si votre expression de filtre comporte un $GENRE paramètre, indiquez « GENRE » comme clé et un ou plusieurs genres"Comedy", tels que la valeur. Séparez les valeurs multiples par une virgule. Par exemple, "\"comedy\",\"drama\",\"horror"\".

Important

Pour les expressions de filtre qui utilisent un INCLUDE élément pour inclure des éléments, vous devez fournir des valeurs pour tous les paramètres définis dans l'expression. Pour les filtres contenant des expressions qui utilisent un EXCLUDE élément pour exclure des éléments, vous pouvez omettre lefilter-values. Dans ce cas, Amazon Personalize n'utilise pas cette partie de l'expression pour filtrer les recommandations.

aws personalize-runtime get-recommendations \ --campaign-arn Campaign ARN \ --user-id User ID \ --filter-arn Filter ARN \ --filter-values '{ "Parameter name": "\"value\"", "Parameter name": "\"value1\",\"value2\",\"value3\"" }'

Supprimer un filtre (AWS CLI)

Pour supprimer un filtre, procédez comme suitdelete-filter. Remplacez filter ARN par l'ARN du filtre.

aws personalize delete-filter --filter-arn Filter ARN

Filtrer les recommandations en temps réel (AWS SDKs)

Pour filtrer les recommandations à l'aide du AWS SDKs, vous créez un filtre, puis vous l'appliquez en spécifiant l'ARN du filtre dans une GetPersonalizedRanking demande GetRecommendations or.

Important

Pour filtrer les recommandations à l'aide d'un filtre paramétré et d'une campagne que vous avez déployée avant le 10 novembre 2020, vous devez redéployer la campagne en utilisant l'UpdateCampaignappel ou en créer une nouvelle.

Création d'un filtre (AWS SDKs)

Créez un nouveau filtre avec cette CreateFilter opération. Le code suivant montre comment créer un filtre. Spécifiez le nom du filtre, le nom Amazon Resource Name (ARN) de votre groupe de jeux de données et indiquez votre expression de filtre.

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') response = personalize.create_filter( name = 'Filter Name', datasetGroupArn = 'Dataset Group ARN', filterExpression = 'EXCLUDE ItemID WHERE Items.CATEGORY IN ($CATEGORY)' ) filter_arn = response["filterArn"] print("Filter ARN: " + filter_arn)
SDK for Java 2.x
public static String createFilter(PersonalizeClient personalizeClient, String filterName, String datasetGroupArn, String filterExpression) { try { CreateFilterRequest request = CreateFilterRequest.builder() .name(filterName) .datasetGroupArn(datasetGroupArn) .filterExpression(filterExpression) .build(); return personalizeClient.createFilter(request).filterArn(); } catch(PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax. import { CreateFilterCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); // Set the filter's parameters. export const createFilterParam = { datasetGroupArn: "DATASET_GROUP_ARN" /* required */, name: "NAME" /* required */, filterExpression: "FILTER_EXPRESSION" /*required */, }; export const run = async () => { try { const response = await personalizeClient.send( new CreateFilterCommand(createFilterParam), ); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Enregistrez l'ARN du filtre pour une utilisation ultérieure. Pour vérifier que le filtre est actif, utilisez l'DescribeFilteropération avant d'utiliser le filtre. Pour plus d’informations sur l’API, consultez CreateFilter. Pour plus d'informations sur les expressions de filtre, notamment des exemples, consultezStructure et éléments de l'expression du filtre.

Appliquer un filtre (AWS SDKs)

Lorsque vous utilisez les GetPersonalizedRanking opérations GetRecommendations GetActionRecommendations, ou, appliquez un filtre en transmettant a filterArn et toutes les valeurs de filtre en tant que paramètres.

Le code suivant montre comment filtrer les recommandations d'articles Amazon Personalize pour un utilisateur. Spécifiez l'ID de l'utilisateur pour lequel vous souhaitez obtenir des recommandations, le nom de ressource Amazon (ARN) de votre campagne et l'ARN de votre filtre. Si vous recevez des recommandations d'un recommandeur plutôt que d'une campagne, utilisez à la recommenderArn place de campaignArn et fournissez l'ARN du recommandeur.

En effetfilterValues, pour chaque paramètre facultatif de votre expression de filtre, indiquez le nom du paramètre (en distinguant les majuscules et minuscules) et la ou les valeurs. Par exemple, si votre expression de filtre comporte un $GENRES paramètre, indiquez « GENRES » comme clé, et un ou plusieurs genres, tels que"\"Comedy"\", comme valeur. Pour les valeurs multiples, séparez-les par une virgule. Par exemple, "\"comedy\",\"drama\",\"horror\"".

Important

Pour les expressions de filtre qui utilisent un INCLUDE élément pour inclure des éléments, vous devez fournir des valeurs pour tous les paramètres définis dans l'expression. Pour les filtres contenant des expressions qui utilisent un EXCLUDE élément pour exclure des éléments, vous pouvez omettre lefilter-values. Dans ce cas, Amazon Personalize n'utilise pas cette partie de l'expression pour filtrer les recommandations.

SDK for Python (Boto3)
import boto3 personalize_runtime = boto3.client("personalize-runtime") response = personalize_runtime.get_recommendations( campaignArn = "Campaign ARN", userId = "User ID", filterArn = "Filter ARN", filterValues = { "Parameter name": "\"value1\"", "Parameter name": "\"value1\",\"value2\",\"value3\"" .... } )
SDK for Java 2.x

L'exemple suivant utilise deux paramètres, l'un avec deux valeurs et l'autre avec une valeur. En fonction de l'expression de votre filtre, modifiez le code pour ajouter ou supprimer les champs ParameterName et ParameterValue.

public static void getFilteredRecs(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId, String filterArn, String parameter1Name, String parameter1Value1, String parameter1Value2, String parameter2Name, String parameter2Value){ try { Map<String, String> filterValues = new HashMap<>(); filterValues.put(parameter1Name, String.format("\"%1$s\",\"%2$s\"", parameter1Value1, parameter1Value2)); filterValues.put(parameter2Name, String.format("\"%1$s\"", parameter2Value)); GetRecommendationsRequest recommendationsRequest = GetRecommendationsRequest.builder() .campaignArn(campaignArn) .numResults(20) .userId(userId) .filterArn(filterArn) .filterValues(filterValues) .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 (PersonalizeRuntimeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
SDK for JavaScript v3
// 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 recommendation request parameters. export const getRecommendationsParam = { campaignArn: "CAMPAIGN_ARN" /* required */, userId: "USER_ID" /* required */, numResults: 15 /* optional */, filterArn: "FILTER_ARN" /* required to filter recommendations */, filterValues: { PROPERTY: '"VALUE"' /* Only required if your filter has a placeholder parameter */, }, }; 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();

Supprimer un filtre (SDK AWS Python)

Utilisez la delete_filter méthode suivante pour supprimer un filtre. Remplacez filter ARN par l'ARN du filtre.

import boto3 personalize = boto3.client("personalize") response = personalize.delete_filter( filterArn = "filter ARN" )