Crie segmentação contextual baseada em taxonomia usando AWS Media Intelligence e Hugging Face BERT PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Crie segmentação contextual baseada em taxonomia usando AWS Media Intelligence e Hugging Face BERT

À medida que novos regulamentos de privacidade de dados, como o GDPR (Regulamento Geral de Proteção de Dados, 2017), entraram em vigor, os clientes estão sob crescente pressão para monetizar ativos de mídia enquanto cumprem as novas regras. A monetização da mídia respeitando os regulamentos de privacidade requer a capacidade de extrair automaticamente metadados granulares de ativos como texto, imagens, vídeo e arquivos de áudio em escala da Internet. Também requer uma maneira escalável de mapear ativos de mídia para taxonomias do setor que facilitem a descoberta e a monetização de conteúdo. Esse caso de uso é particularmente significativo para o setor de publicidade, pois as regras de privacidade de dados causam uma mudança da segmentação comportamental usando cookies de terceiros.

Os cookies de terceiros ajudam a habilitar anúncios personalizados para usuários da web e permitem que os anunciantes alcancem seu público-alvo. Uma solução tradicional para veicular anúncios sem cookies de terceiros é a publicidade contextual, que coloca anúncios em páginas da web com base no conteúdo publicado nas páginas. No entanto, a publicidade contextual apresenta o desafio de extrair contexto de ativos de mídia em escala e, da mesma forma, usar esse contexto para monetizar os ativos.

Neste post, discutimos como você pode construir uma solução de aprendizado de máquina (ML) que chamamos de Contextual Intelligence Taxonomy Mapper (CITM) para extrair contexto de conteúdo digital e mapeá-lo para taxonomias padrão para gerar valor. Embora apliquemos esta solução à publicidade contextual, você pode usá-la para resolver outros casos de uso. Por exemplo, as empresas de tecnologia educacional podem usá-lo para mapear seu conteúdo para as taxonomias do setor, a fim de facilitar o aprendizado adaptativo que oferece experiências de aprendizado personalizadas com base nas necessidades individuais dos alunos.

Visão geral da solução

A solução compreende dois componentes: Inteligência de mídia da AWS (AWS MI) para extração de contexto de conteúdo em páginas da Web e CITM para mapeamento inteligente de conteúdo para uma taxonomia do setor. Você pode acessar a solução repositório de código para uma visão detalhada de como implementamos seus componentes.

Inteligência de mídia da AWS

Os recursos do AWS MI permitem a extração automática de metadados que fornecem compreensão contextual do conteúdo de uma página da web. Você pode combinar técnicas de ML como visão computacional, fala em texto e processamento de linguagem natural (NLP) para gerar automaticamente metadados de texto, vídeos, imagens e arquivos de áudio para uso no processamento downstream. Serviços gerenciados de IA, como Reconhecimento da Amazônia, Amazon Transcribe, Amazon Comprehend e amazontext tornar essas técnicas de ML acessíveis usando chamadas de API. Isso elimina a sobrecarga necessária para treinar e criar modelos de ML do zero. Nesta postagem, você verá como usar o Amazon Comprehend e o Amazon Rekognition para inteligência de mídia permite a extração de metadados em escala.

Mapeador de taxonomia de inteligência contextual

Depois de extrair metadados do conteúdo de mídia, você precisa de uma maneira de mapear esses metadados para uma taxonomia do setor para facilitar a segmentação contextual. Para fazer isso, você constrói o Mapeador de Taxonomia de Inteligência Contextual (CITM), que é alimentado por um transformador de sentença BERT da Hugging Face.

O transformador de sentença BERT permite que o CITM categorize o conteúdo da web com palavras-chave relacionadas contextualmente. Por exemplo, ele pode categorizar um artigo da web sobre vida saudável com palavras-chave da taxonomia do setor, como “Cozinhar e comer saudáveis”, “Correr e correr” e muito mais, com base no texto escrito e nas imagens usadas no artigo. O CITM também oferece a capacidade de escolher os termos de taxonomia mapeados a serem usados ​​para o processo de lance de anúncio com base em seus critérios.

O diagrama a seguir ilustra a visão conceitual da arquitetura com CITM.

Taxonomia de conteúdo do IAB (Interactive Advertising Bureau)

Para esta postagem, usamos o Taxonomia de conteúdo do IAB Tech Lab como a taxonomia padrão do setor para o caso de uso de publicidade contextual. Por design, a taxonomia do IAB ajuda os criadores de conteúdo a descrever seu conteúdo com mais precisão e fornece uma linguagem comum para todas as partes no processo de publicidade programática. O uso de uma terminologia comum é crucial porque a seleção de anúncios para uma página da web que um usuário visita deve acontecer em milissegundos. A taxonomia do IAB serve como uma maneira padronizada de categorizar o conteúdo de várias fontes, além de ser um protocolo do setor que as plataformas de lances em tempo real usam para a seleção de anúncios. Ele tem uma estrutura hierárquica, que fornece granularidade de termos de taxonomia e contexto aprimorado para os anunciantes.

Fluxo de trabalho da solução

O diagrama a seguir ilustra o fluxo de trabalho da solução.

Visão geral da solução CITM

As etapas são as seguintes:

  1. Serviço de armazenamento simples da Amazon (Amazon S3) armazena a taxonomia de conteúdo do IAB e o conteúdo da web extraído.
  2. O Amazon Comprehend executa a modelagem de tópicos para extrair temas comuns da coleção de artigos.
  3. O reconhecimento da Amazônia API de rótulo de objeto detecta rótulos em imagens.
  4. O CITM mapeia o conteúdo para uma taxonomia padrão.
  5. Opcionalmente, você pode armazenar conteúdo para mapeamento de taxonomia em um repositório de metadados.

Nas seções a seguir, percorremos cada etapa em detalhes.

O Amazon S3 armazena a taxonomia de conteúdo do IAB e o conteúdo da web extraído

Armazenamos texto e imagens extraídos de uma coleção de artigos da web em um bucket do S3. Também armazenamos a taxonomia de conteúdo do IAB. Como primeiro passo, concatenamos diferentes camadas na taxonomia para criar termos de taxonomia combinados. Essa abordagem ajuda a manter a estrutura hierárquica da taxonomia quando o transformador de sentença BERT cria embeddings para cada palavra-chave. Veja o seguinte 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)

O diagrama a seguir ilustra a taxonomia de contexto do IAB com camadas combinadas.

Taxonomia de conteúdo do IAB com camadas concatenadas

O Amazon Comprehend realiza modelagem de tópicos para extrair temas comuns da coleção de artigos

Com a API de modelagem de tópicos do Amazon Comprehend, você analisa todos os textos dos artigos usando o modelo Latent Dirichlet Allocation (LDA). O modelo examina cada artigo no corpus e agrupa as palavras-chave no mesmo tópico com base no contexto e na frequência em que aparecem em toda a coleção de artigos. Para garantir que o modelo LDA detecte tópicos altamente coerentes, você executa uma etapa de pré-processamento antes de chamar a API do Amazon Comprehend. Você pode usar o biblioteca gensim CoherenceModel para determinar o número ideal de tópicos a serem detectados na coleção de artigos ou arquivos de texto. Veja o seguinte 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)

Depois de obter o número ideal de tópicos, você usa esse valor para o trabalho de modelagem de tópicos do Amazon Comprehend. Fornecendo valores diferentes para o parâmetro NumberOfTopics no Amazon Comprehend Operação StartTopicsDetectionJob resulta em uma variação na distribuição de palavras-chave colocadas em cada grupo de tópicos. Um valor otimizado para o parâmetro NumberOfTopics representa o número de tópicos que fornecem o agrupamento mais coerente de palavras-chave com maior relevância contextual. Você pode armazenar a saída de modelagem de tópicos do Amazon Comprehend em seu formato bruto no Amazon S3.

A API de rótulo de objeto do Amazon Rekognition detecta rótulos em imagens

Você analisa cada imagem extraída de todas as páginas da web usando o Operação do Amazon Rekognition DetectLabels. Para cada imagem, a operação fornece uma resposta JSON com todos os rótulos detectados na imagem, juntamente com uma pontuação de confiança para cada um. Para nosso caso de uso, selecionamos arbitrariamente uma pontuação de confiança de 60% ou mais como o limite para rótulos de objeto a serem usados ​​na próxima etapa. Você armazena rótulos de objeto em seu formato bruto no Amazon S3. Veja o seguinte 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

O CITM mapeia o conteúdo para uma taxonomia padrão

O CITM compara metadados de conteúdo extraídos (tópicos de texto e rótulos de imagens) com palavras-chave na taxonomia do IAB e, em seguida, mapeia os metadados de conteúdo para palavras-chave da taxonomia que estão semanticamente relacionadas. Para esta tarefa, o CITM conclui as três etapas a seguir:

  1. Gere incorporações neurais para a taxonomia de conteúdo, palavras-chave de tópicos e rótulos de imagem usando o transformador de sentença BERT do Hugging Face. Acessamos o modelo de transformador de sentença de Amazon Sage Maker. Neste post, usamos o paráfrase-MiniLM-L6-v2 model, que mapeia palavras-chave e rótulos para um espaço vetorial denso de 384 dimensões.
  2. Calcule a pontuação de similaridade de cosseno entre palavras-chave de taxonomia e palavras-chave de tópicos usando seus embeddings. Ele também calcula a similaridade de cosseno entre as palavras-chave de taxonomia e os rótulos do objeto de imagem. Usamos a similaridade de cosseno como um mecanismo de pontuação para encontrar correspondências semanticamente semelhantes entre os metadados do conteúdo e a taxonomia. Veja o seguinte 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 os pares com pontuações de similaridade que estão acima de um limite definido pelo usuário e use-os para mapear o conteúdo para palavras-chave semanticamente relacionadas na taxonomia de conteúdo. Em nosso teste, selecionamos todas as palavras-chave de pares com pontuação de similaridade de cosseno de 0.5 ou superior. Veja o seguinte 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]:

Um desafio comum ao trabalhar com representação de idioma em escala da Internet (como neste caso de uso) é que você precisa de um modelo que possa caber na maior parte do conteúdo — nesse caso, palavras no idioma inglês. O transformador BERT do Hugging Face foi pré-treinado usando um grande corpus de postagens da Wikipedia no idioma inglês para representar o significado semântico das palavras em relação umas às outras. Você ajusta o modelo pré-treinado usando seu conjunto de dados específico de palavras-chave de tópicos, rótulos de imagem e palavras-chave de taxonomia. Quando você coloca todos os embeddings no mesmo espaço de recursos e os visualiza, você vê que o BERT representa logicamente a semelhança semântica entre os termos.

O exemplo a seguir visualiza palavras-chave de taxonomia de conteúdo do IAB para a classe Automotive representada como vetores usando BERT. O BERT aproxima as palavras-chave Automotive da taxonomia de termos semanticamente semelhantes.

Visualização de embeddings BERT para palavras-chave de taxonomia

Os vetores de feição permitem que o CITM compare os rótulos de metadados e palavras-chave de taxonomia no mesmo espaço de feição. Nesse espaço de recursos, o CITM calcula a semelhança de cosseno entre cada vetor de recursos para palavras-chave de taxonomia e cada vetor de recursos para palavras-chave de tópicos. Em uma etapa separada, o CITM compara vetores de recursos de taxonomia e vetores de recursos para rótulos de imagem. Emparelhamentos com escores de cosseno mais próximos de 1 são identificados como semanticamente semelhantes. Observe que um emparelhamento pode ser uma palavra-chave de tópico e uma palavra-chave de taxonomia ou um rótulo de objeto e uma palavra-chave de taxonomia.

A captura de tela a seguir mostra exemplos de pares de palavras-chave de tópicos e palavras-chave de taxonomia usando similaridade de cosseno calculada com incorporação de BERT.

Tópico para pares de palavras-chave de taxonomia

Para mapear conteúdo para palavras-chave de taxonomia, o CITM seleciona palavras-chave de pares com pontuações de cosseno que atendem a um limite definido pelo usuário. Essas são as palavras-chave que serão usadas nas plataformas de lances em tempo real para selecionar anúncios para o inventário da página da web. O resultado é um rico mapeamento do conteúdo online para a taxonomia.

Opcionalmente, armazene conteúdo para mapeamento de taxonomia em um repositório de metadados

Depois de identificar termos de taxonomia contextualmente semelhantes do CITM, você precisa de uma maneira para APIs de baixa latência acessarem essas informações. Nos lances programáticos para anúncios, o baixo tempo de resposta e a alta simultaneidade desempenham um papel importante na monetização do conteúdo. O esquema do armazenamento de dados precisa ser flexível para acomodar metadados adicionais quando necessário para enriquecer solicitações de lance. Amazon DynamoDB pode corresponder aos padrões de acesso a dados e requisitos operacionais para tal serviço.

Conclusão

Nesta postagem, você aprendeu como criar uma solução de segmentação contextual baseada em taxonomia usando o Mapeador de taxonomia de inteligência contextual (CITM). Você aprendeu a usar o Amazon Comprehend e o Amazon Rekognition para extrair metadados granulares de seus ativos de mídia. Em seguida, usando o CITM, você mapeou os ativos para uma taxonomia padrão do setor para facilitar os lances de anúncios programáticos para anúncios relacionados ao contexto. Você pode aplicar essa estrutura a outros casos de uso que exigem o uso de uma taxonomia padrão para aumentar o valor dos ativos de mídia existentes.

Para experimentar o CITM, você pode acessar seu repositório de código e use-o com um conjunto de dados de texto e imagem de sua escolha.

Recomendamos aprender mais sobre os componentes da solução apresentados nesta postagem. Descubra mais sobre Inteligência de mídia da AWS para extrair metadados de conteúdo de mídia. Além disso, saiba mais sobre como usar Abraçando modelos de rosto para PNL usando o Amazon SageMaker.


Sobre os autores

Crie segmentação contextual baseada em taxonomia usando AWS Media Intelligence e Hugging Face BERT PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Aramida Kehinde é arquiteto de soluções de parceiro sênior da AWS em aprendizado de máquina e IA. Sua jornada de carreira abrangeu as áreas de Business Intelligence e Advanced Analytics em vários setores. Ela trabalha para permitir que os parceiros criem soluções com serviços de IA/ML da AWS que atendam às necessidades de inovação dos clientes. Ela também gosta de construir a interseção de IA e arenas criativas e passar tempo com sua família.

Crie segmentação contextual baseada em taxonomia usando AWS Media Intelligence e Hugging Face BERT PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Anuj Gupta é um arquiteto de soluções principal que trabalha com empresas em hipercrescimento em sua jornada nativa de nuvem. Ele é apaixonado por usar a tecnologia para resolver problemas desafiadores e trabalhou com clientes para criar aplicativos altamente distribuídos e de baixa latência. Ele contribui para soluções Serverless e Machine Learning de código aberto. Fora do trabalho, adora viajar com a família e escrever poemas e blogs filosóficos.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS