Bygg taxonomibaserad kontextinriktning med hjälp av AWS Media Intelligence och Hugging Face BERT PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Bygg taxonomibaserad kontextinriktning med AWS Media Intelligence och Hugging Face BERT

När nya datasekretessbestämmelser som GDPR (General Data Protection Regulation, 2017) har trätt i kraft, utsätts kunderna för ökat tryck att tjäna pengar på mediatillgångar samtidigt som de följer de nya reglerna. Att tjäna pengar på media samtidigt som sekretessbestämmelserna respekteras kräver möjligheten att automatiskt extrahera granulär metadata från tillgångar som text, bilder, video och ljudfiler i internetskala. Det kräver också ett skalbart sätt att kartlägga medietillgångar till branschtaxonomier som underlättar upptäckt och intäktsgenerering av innehåll. Detta användningsfall är särskilt viktigt för reklambranschen eftersom regler för datasekretess orsakar en förändring från beteendeinriktning med hjälp av cookies från tredje part.

Tredjeparts cookies hjälpa till att aktivera anpassade annonser för webbanvändare och låta annonsörer nå sin avsedda målgrupp. En traditionell lösning för att visa annonser utan tredjepartscookies är kontextuell reklam, som placerar annonser på webbsidor baserat på innehållet som publiceras på sidorna. Kontextuell reklam innebär dock utmaningen att extrahera sammanhang från mediatillgångar i stor skala, och på samma sätt använda det sammanhanget för att tjäna pengar på tillgångarna.

I det här inlägget diskuterar vi hur du kan bygga en maskininlärningslösning (ML) som vi kallar Contextual Intelligence Taxonomy Mapper (CITM) för att extrahera sammanhang från digitalt innehåll och mappa det till standardtaxonomier för att skapa värde. Även om vi tillämpar den här lösningen på kontextuell reklam, kan du använda den för att lösa andra användningsfall. Till exempel kan företag inom utbildningsteknik använda det för att kartlägga sitt innehåll till branschtaxonomier för att underlätta adaptivt lärande som ger personliga lärandeupplevelser baserat på elevernas individuella behov.

Lösningsöversikt

Lösningen består av två komponenter: AWS Media Intelligence (AWS MI)-funktioner för kontextextraktion från innehåll på webbsidor och CITM för intelligent kartläggning av innehåll till en branschklassificering. Du kan komma åt lösningens kodförvar för en detaljerad bild av hur vi implementerar dess komponenter.

AWS Media Intelligence

AWS MI-funktioner möjliggör automatisk extraktion av metadata som ger kontextuell förståelse av en webbsidas innehåll. Du kan kombinera ML-tekniker som datorseende, tal till text och naturlig språkbehandling (NLP) för att automatiskt generera metadata från text, videor, bilder och ljudfiler för användning i nedströmsbehandling. Hanterade AI-tjänster som t.ex Amazon-erkännande, Amazon Transcribe, Amazon Comprehendoch amazontext göra dessa ML-tekniker tillgängliga med API-anrop. Detta eliminerar de omkostnader som behövs för att träna och bygga ML-modeller från grunden. I det här inlägget ser du hur användning av Amazon Comprehend och Amazon Rekognition för mediaintelligens möjliggör extrahering av metadata i stor skala.

Kontextuell intelligens Taxonomy Mapper

När du har extraherat metadata från medieinnehåll behöver du ett sätt att mappa den metadatan till en branschklassificering för att underlätta innehållsinriktning. För att göra detta bygger du Contextual Intelligence Taxonomy Mapper (CITM), som drivs av en BERT-satstransformator från Hugging Face.

BERT-satstransformatorn gör det möjligt för CITM att kategorisera webbinnehåll med kontextrelaterade nyckelord. Till exempel kan den kategorisera en webbartikel om hälsosamt liv med nyckelord från branschklassificeringen, som "Hälsosam matlagning och ätande", "Löpning och jogging" med mera, baserat på texten som skrivits och bilderna som används i artikeln. CITM ger också möjlighet att välja de mappade taxonomitermer som ska användas för din annonsbudgivningsprocess baserat på dina kriterier.

Följande diagram illustrerar den konceptuella synen på arkitekturen med CITM.

IAB (Interactive Advertising Bureau) innehållsklassificering

För det här inlägget använder vi IAB Tech Labs innehållsklassificering som branschstandardtaxonomien för användningsfallet för kontextuell reklam. Genom sin design hjälper IAB-klassificeringen innehållsskapare att beskriva sitt innehåll mer exakt, och det ger ett gemensamt språk för alla parter i den programmatiska annonseringsprocessen. Användningen av en gemensam terminologi är avgörande eftersom valet av annonser för en webbsida som en användare besöker måste ske inom millisekunder. IAB-taxonomien fungerar som ett standardiserat sätt att kategorisera innehåll från olika källor samtidigt som det är ett branschprotokoll som budgivningsplattformar i realtid använder för annonsurval. Den har en hierarkisk struktur, som ger en granularitet av taxonomitermer och förbättrat sammanhang för annonsörer.

Lösnings arbetsflöde

Följande diagram illustrerar arbetsflödet för lösningen.

CITM lösning översikt

Stegen är som följer:

  1. Amazon enkel lagringstjänst (Amazon S3) lagrar IAB-innehållsklassificeringen och extraherat webbinnehåll.
  2. Amazon Comprehend utför ämnesmodellering för att extrahera vanliga teman från samlingen av artiklar.
  3. Amazonas erkännande objektetikett API upptäcker etiketter i bilder.
  4. CITM mappar innehåll till en standard taxonomi.
  5. Alternativt kan du lagra innehåll till taxonomikartläggning i ett metadatalager.

I följande avsnitt går vi igenom varje steg i detalj.

Amazon S3 lagrar IABs innehållsklassificering och extraherat webbinnehåll

Vi lagrar extraherad text och bilder från en samling webbartiklar i en S3-hink. Vi lagrar även IAB-innehållsklassificeringen. Som ett första steg sammanfogar vi olika nivåer på taxonomin för att skapa kombinerade taxonomitermer. Detta tillvägagångssätt hjälper till att upprätthålla taxonomins hierarkiska struktur när BERT-satstransformatorn skapar inbäddningar för varje nyckelord. Se följande kod:

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)

Följande diagram illustrerar IAB-kontexttaxonomien med kombinerade nivåer.

IAB Content Taxonomy med sammanlänkade nivåer

Amazon Comprehend utför ämnesmodellering för att extrahera vanliga teman från samlingen av artiklar

Med Amazon Comprehend topic modeling API analyserar du alla artikeltexter med hjälp av modellen Latent Dirichlet Allocation (LDA). Modellen undersöker varje artikel i korpusen och grupperar nyckelord i samma ämne baserat på sammanhanget och frekvensen där de förekommer i hela artikelsamlingen. För att säkerställa att LDA-modellen upptäcker mycket sammanhängande ämnen, utför du ett förbearbetningssteg innan du anropar Amazon Comprehend API. Du kan använda gensim bibliotekets CoherenceModel för att bestämma det optimala antalet ämnen att upptäcka från samlingen av artiklar eller textfiler. Se följande kod:

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)

När du har fått det optimala antalet ämnen använder du det värdet för Amazon Comprehend-ämnesmodelleringsjobbet. Tillhandahåller olika värden för NumberOfTopics-parametern i Amazon Comprehend StartTopicsDetectionJob-operation resulterar i en variation i fördelningen av sökord placerade i varje ämnesgrupp. Ett optimerat värde för parametern NumberOfTopics representerar antalet ämnen som ger den mest sammanhängande grupperingen av sökord med högre kontextuell relevans. Du kan lagra ämnesmodelleringsutdata från Amazon Comprehend i sitt råformat i Amazon S3.

Amazon Rekognition objektetikett API upptäcker etiketter i bilder

Du analyserar varje bild som extraherats från alla webbsidor med hjälp av Amazon Rekognition DetectLabels operation. För varje bild ger operationen ett JSON-svar med alla etiketter som detekteras i bilden, tillsammans med en konfidenspoäng för var och en. För vårt användningsfall väljer vi godtyckligt en konfidenspoäng på 60 % eller högre som tröskel för objektetiketter att använda i nästa steg. Du lagrar objektetiketter i deras råformat i Amazon S3. Se följande kod:

"""
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 mappar innehåll till en standard taxonomi

CITM jämför extraherad innehållsmetadata (ämnen från text och etiketter från bilder) med nyckelord på IAB-taxonomien och mappar sedan innehållsmetadata till nyckelord från taxonomin som är semantiskt relaterade. För denna uppgift slutför CITM följande tre steg:

  1. Skapa neurala inbäddningar för innehållsklassificeringen, ämnesnyckelord och bildetiketter med hjälp av Hugging Faces BERT-satstransformator. Vi kommer åt satstransformatormodellen från Amazon SageMaker. I det här inlägget använder vi parafras-MiniLM-L6-v2 modell, som mappar nyckelord och etiketter till ett 384 dimensionellt tätt vektorutrymme.
  2. Beräkna cosinuslikhetspoängen mellan taxonomisökord och ämnessökord med hjälp av deras inbäddningar. Den beräknar också cosinuslikheten mellan taxonominyckelorden och bildobjektetiketterna. Vi använder cosinuslikhet som en poängmekanism för att hitta semantiskt liknande matchningar mellan innehållsmetadata och taxonomin. Se följande kod:
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. Identifiera ihopparningar med likhetspoäng som ligger över en användardefinierad tröskel och använd dem för att mappa innehållet till semantiskt relaterade sökord i innehållsklassificeringen. I vårt test väljer vi alla sökord från parningar som har ett cosinuslikhetspoäng på 0.5 eller högre. Se följande kod:
#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]:

En vanlig utmaning när man arbetar med språkrepresentation i internetskala (som i det här användningsfallet) är att man behöver en modell som kan passa det mesta av innehållet – i det här fallet ord på engelska. Hugging Faces BERT-transformator har förutbildats med hjälp av en stor samling Wikipedia-inlägg på engelska för att representera den semantiska betydelsen av ord i förhållande till varandra. Du finjusterar den förtränade modellen med din specifika datauppsättning av ämnesnyckelord, bildetiketter och taxonominyckelord. När du placerar alla inbäddningar i samma funktionsutrymme och visualiserar dem ser du att BERT logiskt representerar semantisk likhet mellan termer.

Följande exempel visualiserar IAB-innehållstaxonomiens nyckelord för klassen Automotive representerade som vektorer med BERT. BERT placerar Automotive-sökord från taxonomin nära semantiskt liknande termer.

Visualisering av BERT-inbäddningar för taxonomiska nyckelord

Funktionsvektorerna tillåter CITM att jämföra metadataetiketter och taxonominyckelord i samma funktionsutrymme. I detta funktionsutrymme beräknar CITM cosinuslikheten mellan varje funktionsvektor för taxonominyckelord och varje funktionsvektor för ämnesnyckelord. I ett separat steg jämför CITM taxonomifunktionsvektorer och funktionsvektorer för bildetiketter. Parningar med cosinuspoäng närmast 1 identifieras som semantiskt lika. Observera att en sammankoppling antingen kan vara ett ämnesnyckelord och ett taxonominyckelord, eller en objektetikett och ett taxonominyckelord.

Följande skärmdump visar exempelparningar av ämnesnyckelord och taxonominyckelord med hjälp av cosinuslikhet beräknad med BERT-inbäddningar.

Ämne till taxonomi sökordsparningar

För att mappa innehåll till taxonomiska nyckelord väljer CITM nyckelord från parningar med cosinuspoäng som uppfyller en användardefinierad tröskel. Det här är sökorden som kommer att användas på budgivningsplattformar i realtid för att välja annonser för webbsidans annonsutrymme. Resultatet är en rik kartläggning av onlineinnehåll till taxonomin.

Lagra eventuellt innehåll till taxonomikartläggning i ett metadatalager

När du har identifierat kontextmässigt liknande taxonomitermer från CITM behöver du ett sätt för API:er med låg latens att komma åt denna information. I programmatisk budgivning för annonser spelar låg svarstid och hög samtidighet en viktig roll för att tjäna pengar på innehållet. Schemat för datalagret måste vara flexibelt för att rymma ytterligare metadata när det behövs för att berika budförfrågningar. Amazon DynamoDB kan matcha dataåtkomstmönstren och driftskraven för en sådan tjänst.

Slutsats

I det här inlägget lärde du dig hur du bygger en taxonomibaserad lösning för innehållsinriktning med hjälp av Contextual Intelligence Taxonomy Mapper (CITM). Du lärde dig hur du använder Amazon Comprehend och Amazon Rekognition för att extrahera granulär metadata från dina medietillgångar. Sedan, med hjälp av CITM, mappade du tillgångarna till en branschstandard taxonomi för att underlätta programmatisk annonsbudgivning för kontextrelaterade annonser. Du kan tillämpa det här ramverket på andra användningsfall som kräver användning av en standardtaxonomie för att öka värdet på befintliga medietillgångar.

För att experimentera med CITM kan du komma åt dess kodförvar och använd den med en text- och bilddatauppsättning som du väljer.

Vi rekommenderar att du lär dig mer om lösningskomponenterna som introduceras i det här inlägget. Upptäck mer om AWS Media Intelligence för att extrahera metadata från medieinnehåll. Läs också mer om hur du använder Hugging Face-modeller för NLP med Amazon SageMaker.


Om författarna

Bygg taxonomibaserad kontextinriktning med hjälp av AWS Media Intelligence och Hugging Face BERT PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Aramid Kehinde är Sr. Partner Solution Architect på AWS inom maskininlärning och AI. Hennes karriärresa har sträckt sig över områdena Business Intelligence och Advanced Analytics i flera branscher. Hon arbetar för att göra det möjligt för partners att bygga lösningar med AWS AI/ML-tjänster som tjänar kundernas behov av innovation. Hon tycker också om att bygga skärningspunkten mellan AI och kreativa arenor och umgås med sin familj.

Bygg taxonomibaserad kontextinriktning med hjälp av AWS Media Intelligence och Hugging Face BERT PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Anuj Gupta är en Principal Solutions Architect som arbetar med hyper-tillväxtföretag på deras molnbaserade resa. Han brinner för att använda teknik för att lösa utmanande problem och har arbetat med kunder för att bygga mycket distribuerade applikationer med låg latens. Han bidrar till serverlösa och maskininlärningslösningar med öppen källkod. Utanför jobbet älskar han att resa med sin familj och skriva dikter och filosofiska bloggar.

Tidsstämpel:

Mer från AWS maskininlärning