Créez un ciblage contextuel basé sur la taxonomie à l'aide d'AWS Media Intelligence et de Hugging Face BERT PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Créez un ciblage contextuel basé sur la taxonomie à l'aide d'AWS Media Intelligence et de Hugging Face BERT

Avec l'entrée en vigueur de nouvelles réglementations sur la confidentialité des données telles que le RGPD (Règlement général sur la protection des données, 2017), les clients subissent une pression accrue pour monétiser les actifs multimédias tout en respectant les nouvelles règles. Monétiser les médias tout en respectant les réglementations en matière de confidentialité nécessite la capacité d'extraire automatiquement des métadonnées granulaires à partir d'actifs tels que du texte, des images, des vidéos et des fichiers audio à l'échelle d'Internet. Cela nécessite également un moyen évolutif de mapper les actifs multimédias aux taxonomies de l'industrie qui facilitent la découverte et la monétisation du contenu. Ce cas d'utilisation est particulièrement important pour l'industrie de la publicité, car les règles de confidentialité des données entraînent un changement du ciblage comportemental à l'aide de cookies tiers.

Cookies de tiers aider à activer les publicités personnalisées pour les internautes et permettre aux annonceurs d'atteindre leur public cible. Une solution traditionnelle pour diffuser des publicités sans cookies tiers est la publicité contextuelle, qui place des publicités sur des pages Web en fonction du contenu publié sur les pages. Cependant, la publicité contextuelle pose le défi d'extraire le contexte des actifs médiatiques à grande échelle et d'utiliser également ce contexte pour monétiser les actifs.

Dans cet article, nous expliquons comment vous pouvez créer une solution d'apprentissage automatique (ML) que nous appelons Contextual Intelligence Taxonomy Mapper (CITM) pour extraire le contexte du contenu numérique et le mapper aux taxonomies standard afin de générer de la valeur. Bien que nous appliquions cette solution à la publicité contextuelle, vous pouvez l'utiliser pour résoudre d'autres cas d'utilisation. Par exemple, les entreprises de technologie de l'éducation peuvent l'utiliser pour mapper leur contenu aux taxonomies de l'industrie afin de faciliter l'apprentissage adaptatif qui offre des expériences d'apprentissage personnalisées en fonction des besoins individuels des étudiants.

Vue d'ensemble de la solution

La solution comprend deux composants : AWS Médias Intelligence (AWS MI) pour l'extraction de contexte à partir du contenu des pages Web, et CITM pour le mappage intelligent du contenu à une taxonomie de l'industrie. Vous pouvez accéder à la solution référentiel de code pour une vue détaillée de la façon dont nous implémentons ses composants.

AWS Médias Intelligence

Les fonctionnalités d'AWS MI permettent l'extraction automatique des métadonnées qui fournissent une compréhension contextuelle du contenu d'une page Web. Vous pouvez combiner des techniques de ML telles que la vision par ordinateur, la synthèse vocale et le traitement du langage naturel (NLP) pour générer automatiquement des métadonnées à partir de texte, de vidéos, d'images et de fichiers audio à utiliser dans le traitement en aval. Services d'IA gérés tels que Amazon Reconnaissance, Amazon Transcribe, Amazon comprendreet Extrait d'Amazon rendre ces techniques ML accessibles à l'aide d'appels d'API. Cela élimine les frais généraux nécessaires pour former et créer des modèles ML à partir de zéro. Dans cet article, vous voyez comment l'utilisation d'Amazon Comprehend et d'Amazon Rekognition pour l'intelligence multimédia permet l'extraction de métadonnées à grande échelle.

Cartographe de taxonomie d'intelligence contextuelle

Après avoir extrait les métadonnées du contenu multimédia, vous avez besoin d'un moyen de mapper ces métadonnées à une taxonomie du secteur afin de faciliter le ciblage contextuel. Pour ce faire, vous construisez Contextual Intelligence Taxonomy Mapper (CITM), qui est alimenté par un transformateur de phrase BERT de Hugging Face.

Le transformateur de phrase BERT permet à CITM de catégoriser le contenu Web avec des mots-clés liés au contexte. Par exemple, il peut catégoriser un article Web sur une vie saine avec des mots-clés de la taxonomie de l'industrie, tels que "Cuisine et alimentation saines", "Courir et faire du jogging", etc., en fonction du texte écrit et des images utilisées dans l'article. CITM offre également la possibilité de choisir les termes de taxonomie mappés à utiliser pour votre processus d'enchères publicitaires en fonction de vos critères.

Le diagramme suivant illustre la vue conceptuelle de l'architecture avec CITM.

Taxonomie du contenu de l'IAB (Interactive Advertising Bureau)

Pour cet article, nous utilisons le Taxonomie de contenu d'IAB Tech Lab comme taxonomie standard de l'industrie pour le cas d'utilisation de la publicité contextuelle. De par sa conception, la taxonomie IAB aide les créateurs de contenu à décrire plus précisément leur contenu et fournit un langage commun à toutes les parties du processus de publicité programmatique. L'utilisation d'une terminologie commune est cruciale car la sélection d'annonces pour une page Web visitée par un utilisateur doit se faire en quelques millisecondes. La taxonomie IAB sert de moyen standardisé pour catégoriser le contenu de diverses sources tout en étant également un protocole industriel que les plates-formes d'enchères en temps réel utilisent pour la sélection des annonces. Il a une structure hiérarchique, qui fournit une granularité des termes de taxonomie et un contexte amélioré pour les annonceurs.

Flux de travail des solutions

Le diagramme suivant illustre le flux de travail de la solution.

Présentation de la solution CITM

Les étapes sont les suivantes:

  1. Service de stockage simple Amazon (Amazon S3) stocke la taxonomie de contenu IAB et le contenu Web extrait.
  2. Amazon Comprehend effectue une modélisation de sujet pour extraire des thèmes communs de la collection d'articles.
  3. La reconnaissance d'Amazon API d'étiquette d'objet détecte les étiquettes dans les images.
  4. CITM mappe le contenu à une taxonomie standard.
  5. Si vous le souhaitez, vous pouvez stocker du contenu sur le mappage de taxonomie dans un magasin de métadonnées.

Dans les sections suivantes, nous passons en revue chaque étape en détail.

Amazon S3 stocke la taxonomie de contenu IAB et le contenu Web extrait

Nous stockons le texte et les images extraits d'une collection d'articles Web dans un compartiment S3. Nous stockons également la taxonomie de contenu IAB. Dans un premier temps, nous concaténons différents niveaux de la taxonomie pour créer des termes de taxonomie combinés. Cette approche permet de maintenir la structure hiérarchique de la taxonomie lorsque le transformateur de phrase BERT crée des intégrations pour chaque mot-clé. Voir le code suivant :

def prepare_taxonomy(taxonomy_df):
    
    """
    Concatenate IAB Tech Lab content taxonomy tiers and prepare keywords for BERT embedding. 
    Use this function as-is if using the IAB Content Taxonomy
    
    Parameters (input):
    ----------
    taxonomy_df : Content taxonomy dataframe

    Returns (output):
    -------
    df_clean : Content taxonomy with tiers in the taxonomy concatenated
    keyword_list: List of concatenated content taxonomy keywords
    ids: List of ids for the content taxonomy keywords
    """
    
    df = taxonomy_df[['Unique ID ','Parent','Name','Tier 1','Tier 2','Tier 3']] 
    df_str = df.astype({"Unique ID ": 'str', "Parent": 'str', "Tier 1": 'str', "Tier 2": 'str', "Tier 3": 'str'})
    df_clean = df_str.replace('nan','')
    
    #create a column that concatenates all tiers for each taxonomy keyword
    df_clean['combined']=df_clean[df_clean.columns[2:6]].apply(lambda x: ' '.join(x.dropna().astype(str)),axis=1)
    
    #turn taxonomy keyords to list of strings a prep for encoding with BERT sentence transformer
    keyword_list=df_clean['combined'].to_list()
                       
    #get list of taxonomy ids
    ids = df_clean['Unique ID '].to_list()                  
            
    return df_clean, keyword_list, ids

taxonomy_df, taxonomy_terms, taxonomy_ids = prepare_taxonomy(read_taxonomy)

Le diagramme suivant illustre la taxonomie de contexte IAB avec des niveaux combinés.

Taxonomie de contenu IAB avec niveaux concaténés

Amazon Comprehend effectue une modélisation de sujet pour extraire des thèmes communs de la collection d'articles

Avec l'API de modélisation de sujet Amazon Comprehend, vous analysez tous les textes d'articles à l'aide du modèle Latent Dirichlet Allocation (LDA). Le modèle examine chaque article du corpus et regroupe les mots-clés dans le même sujet en fonction du contexte et de la fréquence à laquelle ils apparaissent dans l'ensemble de la collection d'articles. Pour vous assurer que le modèle LDA détecte des rubriques hautement cohérentes, vous effectuez une étape de prétraitement avant d'appeler l'API Amazon Comprehend. Vous pouvez utiliser le bibliothèque de gensim CoherenceModel pour déterminer le nombre optimal de sujets à détecter à partir de la collection d'articles ou de fichiers texte. Voir le code suivant :

def compute_coherence_scores(dictionary, corpus, texts, limit, start=2, step=3):
    """
    Compute coherence scores for various number of topics for your topic model. 
    Adjust the parameters below based on your data

    Parameters (input):
    ----------
    dictionary : Gensim dictionary created earlier from input texts
    corpus : Gensim corpus created earlier from input texts
    texts : List of input texts
    limit : The maximum number of topics to test. Amazon Comprehend can detect up to 100 topics in a collection

    Returns (output):
    -------
    models : List of LDA topic models
    coherence_scores : Coherence values corresponding to the LDA model with respective number of topics
    """
    coherence_scores = []
    models = []
    for num_topics in range(start, limit, step):
        model = gensim.models.LdaMulticore(corpus=corpus, num_topics=num_topics, id2word=id2word)
        models.append(model)
        coherencemodel = CoherenceModel(model=model, texts=corpus_words, dictionary=id2word, coherence='c_v')
        coherence_scores.append(coherencemodel.get_coherence())

    return models, coherence_scores

models, coherence_scores = compute_coherence_scores(dictionary=id2word, corpus=corpus_tdf, texts=corpus_words, start=2, limit=100, step=3)

Une fois que vous avez obtenu le nombre optimal de rubriques, vous utilisez cette valeur pour la tâche de modélisation de rubrique Amazon Comprehend. Fournir différentes valeurs pour le paramètre NumberOfTopics dans Amazon Comprehend Opération StartTopicsDetectionJob entraîne une variation dans la répartition des mots-clés placés dans chaque groupe thématique. Une valeur optimisée pour le paramètre NumberOfTopics représente le nombre de rubriques qui fournissent le groupement le plus cohérent de mots-clés avec une pertinence contextuelle plus élevée. Vous pouvez stocker la sortie de modélisation de rubrique d'Amazon Comprehend dans son format brut dans Amazon S3.

L'API d'étiquette d'objet d'Amazon Rekognition détecte les étiquettes dans les images

Vous analysez chaque image extraite de toutes les pages Web à l'aide du Fonctionnement d'Amazon Rekognition DetectLabels. Pour chaque image, l'opération fournit une réponse JSON avec toutes les étiquettes détectées dans l'image, associées à un score de confiance pour chacune. Pour notre cas d'utilisation, nous sélectionnons arbitrairement un score de confiance de 60 % ou plus comme seuil pour les étiquettes d'objet à utiliser à l'étape suivante. Vous stockez les étiquettes d'objet dans leur format brut dans Amazon S3. Voir le code suivant :

"""
Create a function to extract object labels from a given image using Amazon Rekognition
"""

def get_image_labels(image_loc):
    labels = []
    with fs.open(image_loc, "rb") as im:
        response = rekognition_client.detect_labels(Image={"Bytes": im.read()})
    
    for label in response["Labels"]:
        if label["Confidence"] >= 60:   #change to desired confidence score threshold, value between [0,100]:
            object_label = label["Name"]
            labels.append(object_label)
    return labels

CITM mappe le contenu à une taxonomie standard

CITM compare les métadonnées de contenu extraites (sujets du texte et étiquettes des images) avec les mots-clés de la taxonomie IAB, puis mappe les métadonnées de contenu aux mots-clés de la taxonomie qui sont sémantiquement liés. Pour cette tâche, CITM effectue les trois étapes suivantes :

  1. Générez des incorporations neuronales pour la taxonomie de contenu, les mots-clés de sujet et les étiquettes d'image à l'aide du transformateur de phrase BERT de Hugging Face. Nous accédons au modèle de transformateur de phrase à partir de Amazon Sage Maker. Dans cet article, nous utilisons le paraphraser-MiniLM-L6-v2 modèle, qui mappe les mots-clés et les étiquettes sur un espace vectoriel dense de 384 dimensions.
  2. Calculez le score de similarité en cosinus entre les mots-clés de taxonomie et les mots-clés de sujet à l'aide de leurs incorporations. Il calcule également la similarité cosinusoïdale entre les mots-clés de taxonomie et les étiquettes d'objet d'image. Nous utilisons la similarité cosinus comme mécanisme de notation pour trouver des correspondances sémantiquement similaires entre les métadonnées de contenu et la taxonomie. Voir le code suivant :
def compute_similarity(entity_embeddings, entity_terms, taxonomy_embeddings, taxonomy_terms):
    """
    Compute cosine scores between entity embeddings and taxonomy embeddings
    
    Parameters (input):
    ----------
    entity_embeddings : Embeddings for either topic keywords from Amazon Comprehend or image labels from Amazon Rekognition
    entity_terms : Terms for topic keywords or image labels
    taxonomy_embeddings : Embeddings for the content taxonomy
    taxonomy_terms : Terms for the taxonomy keywords

    Returns (output):
    -------
    mapping_df : Dataframe that matches each entity keyword to each taxonomy keyword and their cosine similarity score
    """
    
    #calculate cosine score, pairing each entity embedding with each taxonomy keyword embedding
    cosine_scores = util.pytorch_cos_sim(entity_embeddings, taxonomy_embeddings)
    pairs = []
    for i in range(len(cosine_scores)-1):
        for j in range(0, cosine_scores.shape[1]):
            pairs.append({'index': [i, j], 'score': cosine_scores[i][j]})
    
    #Sort cosine similarity scores in decreasing order
    pairs = sorted(pairs, key=lambda x: x['score'], reverse=True)
    rows = []
    for pair in pairs:
        i, j = pair['index']
        rows.append([entity_terms[i], taxonomy_terms[j], pair['score']])
    
    #move sorted values to a dataframe
    mapping_df= pd.DataFrame(rows, columns=["term", "taxonomy_keyword","cosine_similarity"])
    mapping_df['cosine_similarity'] = mapping_df['cosine_similarity'].astype('float')
    mapping_df= mapping_df.sort_values(by=['term','cosine_similarity'], ascending=False)
    drop_dups= mapping_df.drop_duplicates(subset=['term'], keep='first')
    mapping_df = drop_dups.sort_values(by=['cosine_similarity'], ascending=False).reset_index(drop=True)
    return mapping_df
                                               
#compute cosine_similairty score between topic keywords and content taxonomy keywords using BERT embeddings                                               
text_taxonomy_mapping=compute_similarity(keyword_embeddings, topic_keywords, taxonomy_embeddings, taxonomy_terms)

  1. Identifiez les paires avec des scores de similarité qui sont au-dessus d'un seuil défini par l'utilisateur et utilisez-les pour mapper le contenu à des mots-clés sémantiquement liés sur la taxonomie de contenu. Dans notre test, nous sélectionnons tous les mots-clés des appariements qui ont un score de similarité cosinus de 0.5 ou plus. Voir le code suivant :
#merge text and image keywords mapped to content taxonomy
rtb_keywords=pd.concat([text_taxonomy_mapping[["term","taxonomy_keyword","cosine_similarity"]],image_taxonomy_mapping]).sort_values(by='cosine_similarity',ascending=False).reset_index(drop=True)

#select keywords with a cosine_similarity score greater than your desired threshold ( the value should be from 0 to 1)
rtb_keywords[rtb_keywords["cosine_similarity"]> 50] # change to desired threshold for cosine score, value between [0,100]:

Un défi courant lorsque vous travaillez avec une représentation linguistique à l'échelle d'Internet (comme dans ce cas d'utilisation) est que vous avez besoin d'un modèle qui peut s'adapter à la plupart du contenu, dans ce cas, des mots en anglais. Le transformateur BERT de Hugging Face a été pré-formé à l'aide d'un vaste corpus de publications Wikipédia en anglais pour représenter la signification sémantique des mots les uns par rapport aux autres. Vous affinez le modèle pré-formé à l'aide de votre ensemble de données spécifique de mots-clés de sujet, d'étiquettes d'image et de mots-clés de taxonomie. Lorsque vous placez toutes les représentations incorporées dans le même espace de fonctionnalités et que vous les visualisez, vous voyez que BERT représente logiquement la similarité sémantique entre les termes.

L'exemple suivant visualise les mots-clés de taxonomie de contenu IAB pour la classe Automotive représentés sous forme de vecteurs à l'aide de BERT. Le BERT place les mots-clés automobiles de la taxonomie à proximité de termes sémantiquement similaires.

Visualisation des intégrations BERT pour les mots-clés de taxonomie

Les vecteurs de caractéristiques permettent à CITM de comparer les étiquettes de métadonnées et les mots-clés de taxonomie dans le même espace de caractéristiques. Dans cet espace de caractéristiques, CITM calcule la similarité cosinus entre chaque vecteur de caractéristiques pour les mots-clés de taxonomie et chaque vecteur de caractéristiques pour les mots-clés de sujet. Dans une étape distincte, CITM compare les vecteurs de caractéristiques de taxonomie et les vecteurs de caractéristiques pour les étiquettes d'image. Les appariements avec les scores de cosinus les plus proches de 1 sont identifiés comme sémantiquement similaires. Notez qu'une association peut être soit un mot-clé de rubrique et un mot-clé de taxonomie, soit une étiquette d'objet et un mot-clé de taxonomie.

La capture d'écran suivante montre des exemples d'associations de mots-clés de sujet et de mots-clés de taxonomie à l'aide de la similarité cosinus calculée avec les intégrations BERT.

Associations de mots-clés de sujet à taxonomie

Pour mapper le contenu aux mots-clés de taxonomie, CITM sélectionne des mots-clés à partir d'associations avec des scores de cosinus qui répondent à un seuil défini par l'utilisateur. Ce sont les mots-clés qui seront utilisés sur les plates-formes d'enchères en temps réel pour sélectionner des annonces pour l'inventaire de la page Web. Le résultat est une cartographie riche du contenu en ligne à la taxonomie.

Stocker éventuellement le contenu au mappage de taxonomie dans un magasin de métadonnées

Une fois que vous avez identifié des termes de taxonomie contextuellement similaires à partir de CITM, vous avez besoin d'un moyen pour les API à faible latence d'accéder à ces informations. Dans les enchères programmatiques pour les publicités, un faible temps de réponse et une simultanéité élevée jouent un rôle important dans la monétisation du contenu. Le schéma du magasin de données doit être flexible pour accueillir des métadonnées supplémentaires lorsque cela est nécessaire pour enrichir les demandes d'enchères. Amazon DynamoDB peut correspondre aux modèles d'accès aux données et aux exigences opérationnelles d'un tel service.

Conclusion

Dans cet article, vous avez appris à créer une solution de ciblage contextuel basée sur la taxonomie à l'aide de Contextual Intelligence Taxonomy Mapper (CITM). Vous avez appris à utiliser Amazon Comprehend et Amazon Rekognition pour extraire des métadonnées granulaires de vos ressources multimédias. Ensuite, à l'aide de CITM, vous avez mappé les actifs à une taxonomie standard de l'industrie pour faciliter les enchères publicitaires programmatiques pour les publicités liées au contexte. Vous pouvez appliquer ce cadre à d'autres cas d'utilisation qui nécessitent l'utilisation d'une taxonomie standard pour améliorer la valeur des ressources multimédias existantes.

Pour expérimenter CITM, vous pouvez accéder à son référentiel de code et utilisez-le avec un jeu de données texte et image de votre choix.

Nous vous recommandons d'en savoir plus sur les composants de la solution présentés dans cet article. En savoir plus sur AWS Médias Intelligence pour extraire les métadonnées du contenu multimédia. En savoir plus sur l'utilisation Modèles de visage étreignant pour la PNL avec Amazon SageMaker.


À propos des auteurs

Créez un ciblage contextuel basé sur la taxonomie à l'aide d'AWS Media Intelligence et de Hugging Face BERT PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Aramide Kehinde est Sr. Partner Solution Architect chez AWS en Machine Learning et AI. Son parcours professionnel a couvert les domaines de l'informatique décisionnelle et de l'analyse avancée dans de nombreux secteurs. Elle travaille pour permettre aux partenaires de créer des solutions avec les services AWS AI/ML qui répondent aux besoins d'innovation des clients. Elle aime également construire l'intersection de l'IA et des arènes créatives et passer du temps avec sa famille.

Créez un ciblage contextuel basé sur la taxonomie à l'aide d'AWS Media Intelligence et de Hugging Face BERT PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Anuj Gupta est un architecte principal de solutions travaillant avec des entreprises en hyper-croissance dans leur parcours cloud natif. Il est passionné par l'utilisation de la technologie pour résoudre des problèmes difficiles et a travaillé avec des clients pour créer des applications hautement distribuées et à faible latence. Il contribue aux solutions open-source Serverless et Machine Learning. En dehors du travail, il aime voyager avec sa famille et écrire des poèmes et des blogs philosophiques.

Horodatage:

Plus de Apprentissage automatique AWS