Cree una segmentación contextual basada en taxonomía con AWS Media Intelligence y Hugging Face BERT PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Cree una segmentación contextual basada en taxonomía con AWS Media Intelligence y Hugging Face BERT

Con la entrada en vigor de nuevas normas de privacidad de datos como el RGPD (Reglamento general de protección de datos, 2017), los clientes se encuentran bajo una mayor presión para monetizar los activos de los medios mientras cumplen con las nuevas normas. La monetización de los medios respetando las normas de privacidad requiere la capacidad de extraer automáticamente metadatos granulares de activos como archivos de texto, imágenes, video y audio a escala de Internet. También requiere una forma escalable de asignar activos de medios a taxonomías de la industria que faciliten el descubrimiento y la monetización de contenido. Este caso de uso es particularmente significativo para la industria de la publicidad, ya que las reglas de privacidad de datos provocan un cambio de la orientación por comportamiento utilizando cookies de terceros.

Cookies de terceros ayudar a habilitar anuncios personalizados para los usuarios de la web y permitir que los anunciantes lleguen a su público objetivo. Una solución tradicional para publicar anuncios sin cookies de terceros es la publicidad contextual, que coloca anuncios en páginas web según el contenido publicado en las páginas. Sin embargo, la publicidad contextual plantea el desafío de extraer el contexto de los activos de los medios a escala y, del mismo modo, utilizar ese contexto para monetizar los activos.

En esta publicación, analizamos cómo puede crear una solución de aprendizaje automático (ML) que llamamos Mapeador de taxonomía de inteligencia contextual (CITM) para extraer contexto del contenido digital y asignarlo a taxonomías estándar para generar valor. Aunque aplicamos esta solución a la publicidad contextual, puedes usarla para resolver otros casos de uso. Por ejemplo, las empresas de tecnología educativa pueden usarlo para asignar su contenido a las taxonomías de la industria a fin de facilitar el aprendizaje adaptativo que ofrece experiencias de aprendizaje personalizadas basadas en las necesidades individuales de los estudiantes.

Resumen de la solución

La solución consta de dos componentes: Inteligencia de medios de AWS (AWS MI) para la extracción de contexto del contenido de las páginas web, y CITM para el mapeo inteligente del contenido a una taxonomía de la industria. Puede acceder a la solución repositorio de código para obtener una vista detallada de cómo implementamos sus componentes.

Inteligencia de medios de AWS

Las capacidades de AWS MI permiten la extracción automática de metadatos que brindan una comprensión contextual del contenido de una página web. Puede combinar técnicas de ML como visión por computadora, voz a texto y procesamiento de lenguaje natural (NLP) para generar automáticamente metadatos de texto, videos, imágenes y archivos de audio para usar en el procesamiento posterior. Servicios gestionados de IA como Reconocimiento de amazonas, Amazon Transcribe, Amazon Comprehendy Amazon Textil haga que estas técnicas de ML sean accesibles mediante llamadas API. Esto elimina la sobrecarga necesaria para entrenar y construir modelos ML desde cero. En esta publicación, verá cómo el uso de Amazon Comprehend y Amazon Rekognition para la inteligencia de medios permite la extracción de metadatos a escala.

Mapeador de taxonomía de inteligencia contextual

Después de extraer los metadatos del contenido multimedia, necesita una forma de asignar esos metadatos a una taxonomía de la industria para facilitar la orientación contextual. Para hacer esto, crea Contextual Intelligence Taxonomy Mapper (CITM), que funciona con un transformador de oraciones BERT de Hugging Face.

El transformador de oraciones BERT permite que CITM categorice el contenido web con palabras clave relacionadas contextualmente. Por ejemplo, puede categorizar un artículo web sobre una vida saludable con palabras clave de la taxonomía de la industria, como "Cocina y alimentación saludables", "Correr y trotar" y más, según el texto escrito y las imágenes utilizadas en el artículo. CITM también ofrece la posibilidad de elegir los términos de la taxonomía mapeada para usar en el proceso de licitación de anuncios según sus criterios.

El siguiente diagrama ilustra la vista conceptual de la arquitectura con CITM.

La taxonomía de contenido de la IAB (Interactive Advertising Bureau)

Para esta publicación, usamos el Taxonomía de contenido de IAB Tech Lab como la taxonomía estándar de la industria para el caso de uso de publicidad contextual. Por diseño, la taxonomía IAB ayuda a los creadores de contenido a describir su contenido con mayor precisión y proporciona un lenguaje común para todas las partes en el proceso de publicidad programática. El uso de una terminología común es crucial porque la selección de anuncios para una página web que visita un usuario debe ocurrir en milisegundos. La taxonomía de IAB sirve como una forma estandarizada de categorizar el contenido de varias fuentes y, al mismo tiempo, es un protocolo de la industria que las plataformas de ofertas en tiempo real utilizan para la selección de anuncios. Tiene una estructura jerárquica, que proporciona granularidad de términos taxonómicos y un contexto mejorado para los anunciantes.

Flujo de trabajo de la solución

El siguiente diagrama ilustra el flujo de trabajo de la solución.

Descripción general de la solución CITM

Los pasos son los siguientes:

  1. Servicio de almacenamiento simple de Amazon (Amazon S3) almacena la taxonomía de contenido de IAB y el contenido web extraído.
  2. Amazon Comprehend realiza el modelado de temas para extraer temas comunes de la colección de artículos.
  3. El reconocimiento amazónico API de etiqueta de objeto detecta etiquetas en imágenes.
  4. CITM asigna contenido a una taxonomía estándar.
  5. Opcionalmente, puede almacenar contenido para la asignación de taxonomía en un almacén de metadatos.

En las siguientes secciones, explicamos cada paso en detalle.

Amazon S3 almacena la taxonomía de contenido de IAB y el contenido web extraído

Almacenamos texto e imágenes extraídos de una colección de artículos web en un depósito S3. También almacenamos la taxonomía de contenido de IAB. Como primer paso, concatenamos diferentes niveles en la taxonomía para crear términos de taxonomía combinados. Este enfoque ayuda a mantener la estructura jerárquica de la taxonomía cuando el transformador de oraciones BERT crea incorporaciones para cada palabra clave. Ver el siguiente código:

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)

El siguiente diagrama ilustra la taxonomía de contexto de IAB con niveles combinados.

Taxonomía de contenido de IAB con niveles concatenados

Amazon Comprehend realiza el modelado de temas para extraer temas comunes de la colección de artículos

Con la API de modelado de temas de Amazon Comprehend, analiza todos los textos de los artículos utilizando el modelo Latent Dirichlet Allocation (LDA). El modelo examina cada artículo del corpus y agrupa las palabras clave en el mismo tema según el contexto y la frecuencia con la que aparecen en toda la colección de artículos. Para garantizar que el modelo LDA detecte temas muy coherentes, realice un paso de preprocesamiento antes de llamar a la API de Amazon Comprehend. Puedes usar el biblioteca gensim CoherenceModel para determinar el número óptimo de temas a detectar de la colección de artículos o archivos de texto. Ver el siguiente código:

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)

Después de obtener la cantidad óptima de temas, utiliza ese valor para el trabajo de modelado de temas de Amazon Comprehend. Proporcionar diferentes valores para el parámetro NumberOfTopics en Amazon Comprehend Operación StartTopicsDetectionJob da como resultado una variación en la distribución de palabras clave colocadas en cada grupo temático. Un valor optimizado para el parámetro NumberOfTopics representa la cantidad de temas que proporcionan la agrupación más coherente de palabras clave con mayor relevancia contextual. Puede almacenar el resultado del modelado de temas de Amazon Comprehend en su formato original en Amazon S3.

La API de etiquetas de objetos de Amazon Rekognition detecta etiquetas en imágenes

Analizas cada imagen extraída de todas las páginas web usando el Operación DetectLabels de Amazon Rekognition. Para cada imagen, la operación proporciona una respuesta JSON con todas las etiquetas detectadas dentro de la imagen, junto con una puntuación de confianza para cada una. Para nuestro caso de uso, seleccionamos arbitrariamente un puntaje de confianza del 60 % o más como el umbral para que las etiquetas de objetos se usen en el siguiente paso. Las etiquetas de los objetos se almacenan en su formato original en Amazon S3. Ver el siguiente código:

"""
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 asigna contenido a una taxonomía estándar

CITM compara los metadatos de contenido extraídos (temas del texto y etiquetas de imágenes) con palabras clave en la taxonomía IAB y luego asigna los metadatos de contenido a palabras clave de la taxonomía que están relacionadas semánticamente. Para esta tarea, CITM completa los siguientes tres pasos:

  1. Genere incrustaciones neuronales para la taxonomía de contenido, palabras clave de temas y etiquetas de imágenes utilizando el transformador de oraciones BERT de Hugging Face. Accedemos al modelo de transformador de oraciones desde Amazon SageMaker. En esta publicación, usamos el parafrasear-MiniLM-L6-v2 que asigna palabras clave y etiquetas a un espacio vectorial denso de 384 dimensiones.
  2. Calcule la puntuación de similitud del coseno entre las palabras clave de la taxonomía y las palabras clave del tema utilizando sus incrustaciones. También calcula la similitud de coseno entre las palabras clave de taxonomía y las etiquetas de objetos de imagen. Utilizamos la similitud del coseno como mecanismo de puntuación para encontrar coincidencias semánticamente similares entre los metadatos del contenido y la taxonomía. Ver el siguiente código:
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. Identifique emparejamientos con puntajes de similitud que estén por encima de un umbral definido por el usuario y utilícelos para asignar el contenido a palabras clave relacionadas semánticamente en la taxonomía de contenido. En nuestra prueba, seleccionamos todas las palabras clave de los emparejamientos que tienen una puntuación de similitud de coseno de 0.5 o superior. Ver el siguiente código:
#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 desafío común cuando se trabaja con la representación del idioma a escala de Internet (como en este caso de uso) es que necesita un modelo que pueda adaptarse a la mayor parte del contenido, en este caso, palabras en inglés. El transformador BERT de Hugging Face ha sido entrenado previamente utilizando un gran corpus de publicaciones de Wikipedia en inglés para representar el significado semántico de las palabras en relación entre sí. Usted ajusta el modelo previamente entrenado utilizando su conjunto de datos específico de palabras clave de temas, etiquetas de imágenes y palabras clave de taxonomía. Cuando coloca todas las incrustaciones en el mismo espacio de características y las visualiza, ve que BERT representa lógicamente la similitud semántica entre los términos.

El siguiente ejemplo visualiza palabras clave de taxonomía de contenido de IAB para la clase Automotive representadas como vectores mediante BERT. BERT coloca las palabras clave de Automoción de la taxonomía cerca de términos semánticamente similares.

Visualización de incrustaciones BERT para palabras clave de taxonomía

Los vectores de características permiten que CITM compare las etiquetas de metadatos y las palabras clave de taxonomía en el mismo espacio de características. En este espacio de funciones, CITM calcula la similitud de coseno entre cada vector de funciones para palabras clave de taxonomía y cada vector de funciones para palabras clave de temas. En un paso separado, CITM compara vectores de características de taxonomía y vectores de características para etiquetas de imágenes. Los emparejamientos con puntuaciones de coseno más cercanas a 1 se identifican como semánticamente similares. Tenga en cuenta que un emparejamiento puede ser una palabra clave de tema y una palabra clave de taxonomía, o una etiqueta de objeto y una palabra clave de taxonomía.

La siguiente captura de pantalla muestra emparejamientos de ejemplo de palabras clave de tema y palabras clave de taxonomía utilizando la similitud de coseno calculada con incrustaciones de BERT.

Parejas de palabras clave de tema a taxonomía

Para asignar contenido a palabras clave de taxonomía, CITM selecciona palabras clave de pares con puntajes de coseno que cumplen con un umbral definido por el usuario. Estas son las palabras clave que se utilizarán en las plataformas de ofertas en tiempo real para seleccionar anuncios para el inventario de la página web. El resultado es una rica asignación de contenido en línea a la taxonomía.

Opcionalmente, almacene contenido para el mapeo de taxonomía en un almacén de metadatos

Después de identificar términos de taxonomía contextualmente similares de CITM, necesita una forma para que las API de baja latencia accedan a esta información. En la licitación programática de anuncios, el tiempo de respuesta bajo y la alta concurrencia juegan un papel importante en la monetización del contenido. El esquema del almacén de datos debe ser flexible para acomodar metadatos adicionales cuando sea necesario para enriquecer las solicitudes de oferta. Amazon DynamoDB puede coincidir con los patrones de acceso a los datos y los requisitos operativos para dicho servicio.

Conclusión

En esta publicación, aprendió a crear una solución de segmentación contextual basada en taxonomía utilizando Contextual Intelligence Taxonomy Mapper (CITM). Aprendió a usar Amazon Comprehend y Amazon Rekognition para extraer metadatos granulares de sus recursos multimedia. Luego, usando CITM, asignó los activos a una taxonomía estándar de la industria para facilitar las ofertas de anuncios programáticos para anuncios relacionados contextualmente. Puede aplicar este marco a otros casos de uso que requieran el uso de una taxonomía estándar para mejorar el valor de los activos de medios existentes.

Para experimentar con CITM, puede acceder a su repositorio de código y utilícelo con un conjunto de datos de texto e imagen de su elección.

Recomendamos obtener más información sobre los componentes de la solución presentados en esta publicación. Descubre más sobre Inteligencia de medios de AWS para extraer metadatos del contenido multimedia. Además, obtenga más información sobre cómo usar Modelos Hugging Face para PNL con Amazon SageMaker.


Acerca de los autores

Cree una segmentación contextual basada en taxonomía con AWS Media Intelligence y Hugging Face BERT PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Aramida Kehinde es socio sénior de arquitectura de soluciones en AWS en aprendizaje automático e IA. Su recorrido profesional ha abarcado las áreas de Business Intelligence y Advanced Analytics en múltiples industrias. Trabaja para permitir que los socios creen soluciones con los servicios de IA/ML de AWS que satisfagan las necesidades de innovación de los clientes. También le gusta construir la intersección de la IA y los escenarios creativos y pasar tiempo con su familia.

Cree una segmentación contextual basada en taxonomía con AWS Media Intelligence y Hugging Face BERT PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Anuj Gupta es un Arquitecto Principal de Soluciones que trabaja con empresas de gran crecimiento en su recorrido nativo en la nube. Le apasiona usar la tecnología para resolver problemas desafiantes y ha trabajado con clientes para crear aplicaciones altamente distribuidas y de baja latencia. Contribuye a soluciones de aprendizaje automático y sin servidor de código abierto. Fuera del trabajo, le encanta viajar con su familia y escribir poemas y blogs filosóficos.

Sello de tiempo:

Mas de Aprendizaje automático de AWS