Partage via


Balisage des métadonnées et regroupement des utilisateurs

Les recommandations intelligentes peuvent être utilisées pour améliorer la personnalisation pertinente pour les utilisateurs finaux, même lorsqu’ils sont anonymes. Les clients peuvent intégrer une expérience de balisage de métadonnées personnalisée pour leur vitrine. Cette expérience est obtenue en utilisant la capacité d’identifier les balises de métadonnées pour le contenu (comme les articles écrits, les podcasts, les vidéos, les produits de vente au détail, etc.) et de recommander des balises ou du contenu similaires en fonction des goûts/préférences de cet utilisateur. Les métadonnées utilisateur peuvent être puissantes pour recommander un contenu pertinent à tous les utilisateurs, notamment :

  • Clients nouveaux ou peu fréquents (également appelés « utilisateurs froids »).
  • Connecter les utilisateurs à d’autres utilisateurs sur la base d’un balisage de métadonnées unique.
  • Connecter les utilisateurs à un contenu à la fois pertinent et à court terme.

Lorsque le balisage des métadonnées est activé, les utilisateurs peuvent créer de nouveaux scénarios de recommandations tels que :

  • Catégories de métadonnées que nous avons sélectionnées pour vous
  • D’autres personnes regardent aussi ces catégories
  • Événements récents basés sur votre activité récente
  • Produits/contenus similaires en fonction de leurs balises de métadonnées attribuées
  • Sélections pour vous en fonction des segments de comportement des utilisateurs

Qu’est-ce qu’une balise ?

Les balises sont un descripteur pour quelque chose d’intéressant dans les éléments/contenus, vers lequel les utilisateurs gravitent, et doivent être spécifiques à l’activité de l’utilisateur final. Par exemple, dans le monde des films, le genre, les acteurs, l’humeur, etc. peuvent tous être considérés comme des balises pour un film, ainsi que quelque chose que les utilisateurs finaux apprécient/n’apprécient pas. Les balises peuvent même inclure des joueurs/utilisateurs célèbres, des titres d’articles, des genres, des catégories de produits, des événements, d’autres termes de contenu. L’objectif est de s’assurer que les utilisateurs finaux se voient recommander un contenu pertinent qui correspond à leurs intérêts/goûts/préférences en fonction des métadonnées disponibles.

Vue d’ensemble de l’architecture

Pour configurer le balisage des métadonnées comme indiqué dans le diagramme d’architecture, les prérequis sont les suivants :

  1. Stockage faisant autorité pour le contenu avec des balises de métadonnées riches – Catalogue.
  2. Comportement d’interaction de l’utilisateur (clics sur le contenu/utilisation). Les informations de profil d’utilisateur final peuvent également être disponibles pour être utilisées.
  3. Un compte de recommandations intelligentes distinct et une instance de modélisation pour comprendre les intérêts des utilisateurs présentés sous forme de balises.
  4. Un composant pour classer le contenu en fonction de balises personnalisées avec une requête d’API en temps réel.

Cette image montre le schéma de l’architecture pour la configuration du balisage des métadonnées dans un compte de recommandations intelligentes distinct.

Lorsqu’il est activé, le service produit un modèle de « balises » personnalisées pour les utilisateurs, basé sur :

  1. Interactions utilisateur historiques
  2. Contenu riche en métadonnées avec des balises
    1. L’hypothèse ici est que les balises sont nettoyées (pas de fautes d’orthographe et les balises sont un ensemble prédéterminé et rationalisé par des experts et ne sont pas créées ni attachées au hasard).

Configuration du contrat de données

Pour configurer un contrat de données pour prendre en charge le balisage des métadonnées, procédez comme suit : prenez note des modifications entre les ItemId, TagId et InteractionGroupingId.

Dans la section Applications, vous voyez des exemples de la façon dont l’introduction d’un TagID ou BucketId modifie la configuration du contrat de données. Nous vous suggérons de disposer d’un compte de recommandations intelligentes et d’une instance de modélisation distincts lorsque vous testez le balisage des métadonnées.

Nom de la capacité IR CATALOGUE
Entité de données
CATALOGUE
Champs d’entité de données
INTERACTIONS
Entité de données
INTERACTIONS
Champs d’entité de données
(Obligatoire pour toutes les réponses) Reco_ItemsAndVariants ItemId en tant que TagId
Title
Capacité de filtrage
(S’applique à toutes les listes)
Reco_ItemCategories ItemCategories : ItemId (ou TagId), Catégorie
Autres contenus consultés Reco_Interactions InteractionGroupingId en tant que UserId
ItemId en tant que TagId
UserId
Type d’interaction : achat == affiché
Horodateur
Nos choix pour vous Reco_Interactions (Comme précédemment)

Applications et exemples

Les sections suivantes présentent deux cas d’utilisation courants qui bénéficient du balisage des métadonnées et fournissent des exemples avec des données de démonstration pour chacun.

  1. Pour obtenir « les articles les plus populaires pour vous » pour les utilisateurs froids. Pour voir un exemple, consultez la section intitulée Obtenez les articles les plus populaires pour vous pour les utilisateurs froids.
  2. Pour créer une carte apprise par machine des valeurs de métadonnées des utilisateurs. Pour voir un exemple, consultez la section intitulée Créer une carte ML des valeurs de métadonnées des utilisateurs.

Un problème courant dans le monde de l’AI-ML est de savoir comment fournir des recommandations pertinentes aux utilisateurs qui sont des clients nouveaux ou peu fréquents (également appelés « utilisateurs froids »). Comme mentionné précédemment, l’objectif ici est de créer des groupes distincts basés sur des catégories significatives et des informations démographiques disponibles (c’est-à-dire l’âge et le sexe). Utilisez ensuite toutes les interactions pour connecter tous les utilisateurs à leurs compartiments démographiques correspondants, ce qui permet ensuite aux compartiments d’être connectés aux éléments pendant la phase d’entraînement du modèle. Au cours de la phase d’exécution, le segment démographique d’un utilisateur à froid peut être attribué, puis utilisé pour recommander des éléments, par exemple « les articles les plus populaires par groupe d’utilisateurs ».

Les étapes sont les suivantes :

  1. Préparez un regroupement d’utilisateurs avec leurs informations de métadonnées.
  2. Créez les connexions pour le modèle dans le fichier de stockage de données « Reco_Interactions.csv ».
  3. Interrogez le modèle pour obtenir l’API « articles les plus populaires par groupe d’utilisateurs ».

Étape 1 : Préparez un regroupement d’utilisateurs avec leurs informations de métadonnées

Quelques bonnes pratiques lors de la création de vos compartiments sont les suivantes :

  • Les métadonnées utilisateur peuvent être représentées sous forme de compartiments à plages. Envisagez d’utiliser les métadonnées qui ont du sens pour votre domaine d’activité et votre cas d’utilisation. Par exemple, si vous souhaitez créer un compartiment pour les données d’âge, vous pouvez utiliser ces valeurs : Age5To11, Age30To40, etc.
  • Certaines métadonnées utilisateur peuvent même être combinées dans des compartiments. Envisagez d’utiliser les métadonnées et les combinaisons qui ont du sens pour votre domaine d’activité et votre cas d’utilisation. Par exemple, vous pouvez combiner les données d’âge et de sexe pour créer des compartiments de la façon suivante : Age20To30Male, Age20To30Female, Age30To40Male, Age30To40Female, etc.
  • Une fois les groupes créés, vous devez attribuer à chaque groupe un BucketId unique.

Étape 2 : Créez les connexions pour le modèle dans le fichier de stockage de données « Reco_Interactions.csv »

Selon le nombre de compartiments, supérieur ou inférieur à 1 000, la configuration des données dans le contrat de données peut changer.

S’il y a MOINS de 1 000 compartiments

Pour chaque ligne d’interaction, vous définissez le ChannelId sur le BucketId, qui correspond (ou convient le mieux) à l’utilisateur. La ligne CSV d’interaction est remplacée par : InteractionGroupingID, ItemId, UserId et BucketId en tant que ChannelId. Voici un exemple des interactions CSV :

Exemple de CSV pour MOINS de 1 000 compartiments

Les en-têtes CSV des interactions apparaissent uniquement à des fins de commodité et ne doivent pas faire partie des données réelles.

InteractionGroupingId ItemId ItemVariantId UserId InteractionType Horodateur Attribut futur Attribut futur Canal Catalog Point fort IsPositive
InteractionGroupingID ItemId UserId BucketId
S’il y a PLUS de 1 000 compartiments

S’il y a plus de 1 000 ensembles de données, vous créez davantage de lignes d’interaction en utilisant BucketId. Transformez chaque ligne d’interaction d’origine entre un utilisateur et un élément en deux nouvelles lignes distinctes avec un InteractionGroupingId unique qui n’est unique que pour ces deux lignes. L’exemple montre :

  1. La ligne d’interaction d’origine utilisant UserId,ItemId et le InteractionGroupingId en tant que UNIQUE_ID.
  2. La ligne d’interaction supplémentaire avec le BucketId en tant que ItemId.
Exemple de CSV pour PLUS de 1 000 compartiments :

Les en-têtes CSV des interactions apparaissent uniquement à des fins de commodité et ne doivent pas faire partie des données réelles.

InteractionGroupingId ItemId ItemVariantId UserId InteractionType Horodateur Attribut futur Attribut futur Canal Catalog Point fort IsPositive
UNIQUE_ID ItemId UserId
UNIQUE_ID BucketId UserId

Tenez compte du schéma de construction du modèle discuté précédemment. Une fois qu’un utilisateur à froid et son segment démographique ont été déterminés, interrogez le point de terminaison en exécution en utilisant le type de liste « Meilleure action suivante » (anciennement CART) avec le BucketId basé sur les données démographiques pour recommander les articles les plus populaires pour ce groupe.

S’il y a MOINS de 1 000 compartiments

Un exemple de lien de requête d’API où le paramètre pour BucketId est remplacé par la valeur ChannelId , qui ressemblerait à ceci :

<serving-endpoint>/Reco/V1.0/Popular?channelID=<BucketId>
Exemple 1 : moins de 1 000 compartiments

Supposons qu’un utilisateur avec UserId=100, avec un BucketId=Age30To40 attribué personnalisé, qui a récemment acheté un article avec ItemId=98005. Cet exemple crée une ligne dans le fichier « Reco_Interactions.csv », qui utilise un BucketId (dans le champ ChannelId du schéma IR) qui correspond le mieux à l’utilisateur (représenté par UserId dans le schéma IR) :

  • Les informations sur l’interaction d’origine sont : InteractionGroupingId=1, UserId=100, ItemId=98005
  • Notez dans l’exemple CSV, que le ChannelId pertinent, qui correspond le mieux au UserId est ajouté. Dans l’exemple, le UserId a été mis en correspondance avec le BucketId=Age30To40, donc la ligne d’interaction modifiée est :
InteractionGroupingId ItemId ItemVariantId UserId InteractionType Horodateur Attribut futur Attribut futur Canal Catalog Point fort IsPositive
1 98005 100 Age30To40
  • La requête et la réponse de l’API renvoient une liste d’ItemIds, y compris ItemId=43218 en troisième position, qui est un article populaire pour les utilisateurs de cette catégorie.
Requête API
GET <serving-endpoint>/reco/v1.0/Popular?ChannelId=Age30To40
Response
{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "65106",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62604",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "43218",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63503",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Popular",
    "longTitle": "Popular",
    "titleId": 5,
    "pagingInfo": {
        "totalItems": 200
    },
    "status": "Success"
}
S’il y a PLUS de 1 000 compartiments

Un exemple de lien de requête d’API où le paramètre pour BucketId est remplacé par la valeur ItemId pour un utilisateur froid, qui ressemblerait à ceci :

<serving-endpoint>/Reco/V1.0/Cart/<BucketId>?
Exemple 2 : plus de 1 000 compartiments

Supposons qu’un utilisateur avec UserId=100, avec un BucketId=Age30To40Female attribué personnalisé, qui a récemment acheté un article avec ItemId=98005. Vous pouvez maintenant utiliser les données d’interaction d’origine et construire des lignes dans le fichier Reco_Interactions.csv :

  • Les informations sur l’interaction d’origine sont : InteractionGroupingId= NEW_UNIQUE_ID, UserId=100, ItemId=98005
  • Les deux lignes d’informations d’interaction construites qui doivent se trouver dans le fichier Reco_Interactions.csv lu par le service Recommandations intelligentes :
InteractionGroupingId ItemId ItemVariantId UserId InteractionType Horodateur Attribut futur Attribut futur Canal Catalog Point fort IsPositive
UNIQUE_ID 98005 100
UNIQUE_ID Age30To40Female 100
  • La requête et la réponse de l’API renvoient une liste d’ItemIds, y compris ItemId=43218 en troisième position, qui est un produit populaire pour les utilisateurs dans cette catégorie.
Requête API
GET <serving-endpoint>/reco/v1.0/Cart/Age30To40Female? 
Response
{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "65106",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62604",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "43218",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63503",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Cart",
    "longTitle": "FrequentlyBoughtTogether",
    "titleId": 5,
    "pagingInfo": {
        "totalItems": 200
    },
    "status": "Success"
}

Application 2 : Créer une carte ML des valeurs de métadonnées des utilisateurs

La modélisation des balises de métadonnées utilisateur à la place des interactions directes avec l’utilisateur peut être une modification puissante lorsque l’objectif est de produire un résultat, qui montre à quel point les utilisateurs sont connectés avec ces balises et quelles balises sont vraiment similaires par leur comportement. Attribuez à chaque balise significative et disponible (par exemple, des données démographiques telles que l’âge et le sexe, ou d’autres métadonnées) un identifiant unique, que le service appelle le TagId. Pendant la phase de formation du modèle, toutes les données d’interaction sont utilisées pour établir une connexion entre les UserIds et les TagIds.

Au cours de la phase de diffusion, le système peut fournir une liste personnalisée de balises en appelant « Nos choix pour vous » avec UserId et des balises similaires en appelant « Autres contenus plébiscités » avec TagId.

Comment utiliser les TagIds pour les recommandations :

  1. Préparez une liste de valeurs de métadonnées utilisateur (balises) et attribuez à chacune d’elles un TagId unique.
  2. Créez les connexions pour le modèle dans le fichier de stockage de données Reco_Interactions.CSV.
  3. Interrogez le modèle pour obtenir l’API « balises personnalisées par utilisateur » ou « balises similaires ».

Étape 1 : Préparez une liste de valeurs de métadonnées utilisateur (balises) et attribuez à chacune d’elles un TagId unique

Lors de la construction de valeurs pour les données d’âge, le regroupement est toujours une bonne approche : Age5To11, Age12To18, etc.

Pour les autres valeurs de métadonnées, créez un TagId distinct pour chacune. Par exemple, si nous voulions une catégorie pour le statut familial : Célibataire, Couple, CoupleAvecEnfants, etc.

Étape 2 : Créez les connexions pour le modèle dans le fichier de stockage de données Reco_Interactions.CSV

Utilisez chaque interaction d’origine entre un utilisateur et un élément pour construire une ligne de données d’interaction avec le TagId. [!Remarque :]

Quelques rappels importants avec cette approche :

  1. Seules les données nouvellement construites seront utilisées dans l’entité de données Interactions pour le modèle.
  2. La création d’une ligne d’interaction qui connecte les utilisateurs aux TagIds ne doit pas nécessairement être basée sur une interaction. Ceci est un exemple pour illustrer comment on peut créer une interaction pour connecter les utilisateurs aux balises dans le modèle.
  3. Pour le InteractionGroupingId il peut être judicieux de réutiliser l’interaction d’origine, si elle est disponible. Sinon, essayez l’un ou l’autre groupement par UserId. Pendant la phase de formation du modèle, toutes les données d’interaction sont utilisées pour établir une connexion entre les différents TagIds, et entre les UserIds et les TagIds. Notre suggestion est d’essayer différentes manières de regrouper, puis de voir laquelle donne les meilleurs résultats pertinents, car différents scénarios et modèles d’utilisation peuvent différer.
    1. Ligne d’interaction d’origine : avec UserId, ItemId, InteractionGroupingId. Contrairement à l’exemple ci-dessus avec BucketId, NE PAS INCLURE cette ligne dans l’entrée jeu de données.
    2. NOUVELLE ligne d’interaction : avec UserId, TagId en tant que ItemId, UserId en tant que InteractionGroupingId.

Voici un exemple de contrat de données :

InteractionGroupingId ItemId ItemVariantId UserId InteractionType Horodateur Attribut futur Attribut futur Canal Catalog Point fort IsPositive
UserId TagId UserId

Étape 3 : Interrogez le modèle pour obtenir des balises personnalisées par utilisateur ou des balises similaires

Avec une construction soigneuse du modèle, l’interrogation du point de terminaison en exécution en utilisant les types de liste « Sélections pour vous » et « Autres contenus plébiscités » génère les résultats souhaités.

Une requête d’API Nos choix pour vous, qui renvoie les TagIds recommandés pour un UserId donné, ressemblerait à ceci :

<serving-endpoint>Reco/v1.0/picks?userId=<UserId>

Une requête d’API Autres contenus plébiscités où le paramètre de l’élément de départ est remplacé par le TagId correspondant :

<serving-endpoint>/Reco/V1.0/Similar/<TagID-value>?
Exemple de sortie de réponse
{
    "id": "Picks",
    "name": "Picks",
    "version": "v1.0",
    "items": [
        {
            "id": "68100",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62500",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61504",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "65103",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61401",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Picks for you",
    "longTitle": "Picks for you",
    "titleId": 6,
    "personalizationConfidence": 1.0,
    "pagingInfo": {
        "totalItems": 139
    },
    "status": "Success"
}

Exemple 3 : Requête pour tagIds avec des données de démonstration

Supposons qu’un utilisateur avec UserId=100, a indiqué qu’il est aligné avec les balises suivantes : 123 (qui représente Fan de football), Age30To40Female et FamilyWithKids.

Vous pouvez utiliser la ligne d’interaction originale pour construire les lignes suivantes dans le fichier « Reco_Interactions.csv » : o 3 nouvelles lignes d’informations d’interaction, une pour chaque balise pour cet utilisateur, qui devrait être dans le fichier « Reco_Interactions.csv » lu par le service Recommandations intelligentes :

![Remarque]

Dans cet exemple, nous avons choisi de regrouper par UserId et nous avons défini le InteractionGroupingId égal au UserId. Notez également que le ItemId représente le TagId.

InteractionGroupingId ItemId ItemVariantId UserId InteractionType Horodateur Attribut futur Attribut futur Canal Catalog Point fort IsPositive
100 123 100
100 Age30To40Female 100
100 FamilyWithKids 100
Requête et réponses pour les choix

Voici à quoi ressemble la requête construite Nos choix pour vous :

GET <serving-endpoint>/reco/v1.0/picks?UserId=100

La réponse Sélections renvoie une liste de 200 ItemIds (pour les balises), y compris, TagID=FamilyWithKids en première position.

{
    "id": "Picks",
    "name": "Picks",
    "version": "v1.0",
    "items": [
        {
            "id": "FamilyWithKids",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "625",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "Sports",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "651",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "611",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Picks for you",
    "longTitle": "Picks for you",
    "titleId": 6,
    "personalizationConfidence": 1.0,
    "pagingInfo": {
        "totalItems": 139
    },
    "status": "Success"
}

Requête et réponse pour similaire

Voici à quoi ressemble la requête Autres contenus plébiscités construite à l’aide de l’API similaire :

GET <serving-endpoint>/Reco/V1.0/Similar/FamilyWithKids?

La réponse « Autres contenus plébiscités » renvoie une liste de 200 ItemIds (pour les balises), y compris Age30To40Female en première position et FamilyWithKids en deuxième position.


{
    "id": "Similar",
    "name": "Similar",
    "version": "v1.0",
    "items": [
        {
            "id": "Age30To40Female",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "FamilyWithKids",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "SportsParent",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "651",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "123",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "People also like",
    "longTitle": "People also like",
    "titleId": 6,
    "pagingInfo": {
        "totalItems": 200
    },
    "status": "Success"
}

Pour en savoir plus sur notre service et les modèles que nous prenons en charge, consultez notre Guide de modélisation.

Voir aussi

Guide de démarrage rapide : créer une demande d’API
QA sur la modélisation
Guide du contrat de données
Exemples de requêtes d’API