Creați direcționare contextuală bazată pe taxonomie folosind AWS Media Intelligence și Hugging Face BERT PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Creați direcționare contextuală bazată pe taxonomie folosind AWS Media Intelligence și Hugging Face BERT

Pe măsură ce noile reglementări privind confidențialitatea datelor, cum ar fi GDPR (Regulamentul general privind protecția datelor, 2017), au intrat în vigoare, clienții sunt supuși unei presiuni crescute să monetizeze activele media, respectând în același timp noile reguli. Monetizarea media, respectând reglementările privind confidențialitatea, necesită posibilitatea de a extrage automat metadate granulare din elemente precum text, imagini, fișiere video și audio la scară de internet. De asemenea, necesită o modalitate scalabilă de mapare a activelor media la taxonomiile industriei care facilitează descoperirea și monetizarea conținutului. Acest caz de utilizare este deosebit de important pentru industria de publicitate, deoarece regulile de confidențialitate a datelor determină o schimbare de la direcționarea comportamentală folosind cookie-uri terță parte.

Terță parte ajută la activarea reclamelor personalizate pentru utilizatorii web și permite agenților de publicitate să ajungă la publicul vizat. O soluție tradițională de a difuza reclame fără cookie-uri terță parte este publicitatea contextuală, care plasează reclame pe paginile web pe baza conținutului publicat pe pagini. Cu toate acestea, publicitatea contextuală reprezintă provocarea de a extrage contextul din activele media la scară și, de asemenea, de a folosi acest context pentru a monetiza activele.

În această postare, discutăm cum puteți construi o soluție de învățare automată (ML) pe care o numim Contextual Intelligence Taxonomy Mapper (CITM) pentru a extrage contextul din conținutul digital și a-l mapa la taxonomii standard pentru a genera valoare. Deși aplicăm această soluție publicității contextuale, o puteți folosi pentru a rezolva alte cazuri de utilizare. De exemplu, companiile de tehnologie educațională o pot folosi pentru a-și mapa conținutul la taxonomiile industriei pentru a facilita învățarea adaptivă care oferă experiențe de învățare personalizate, bazate pe nevoile individuale ale elevilor.

Prezentare generală a soluțiilor

Soluția cuprinde două componente: AWS Media Intelligence (AWS MI) capabilități pentru extragerea contextului din conținutul de pe paginile web și CITM pentru maparea inteligentă a conținutului la o taxonomie a industriei. Puteți accesa soluțiile depozit de coduri pentru o vedere detaliată a modului în care implementăm componentele sale.

AWS Media Intelligence

Capacitățile AWS MI permit extragerea automată a metadatelor care oferă înțelegere contextuală a conținutului unei pagini web. Puteți combina tehnici ML precum viziunea computerizată, vorbirea în text și procesarea limbajului natural (NLP) pentru a genera automat metadate din text, videoclipuri, imagini și fișiere audio pentru a fi utilizate în procesarea în aval. Servicii AI gestionate, cum ar fi Amazon Rekognition, Transcriere Amazon, Amazon Comprehend, și Text Amazon face aceste tehnici ML accesibile folosind apeluri API. Acest lucru elimină costul general necesar pentru a antrena și a construi modele ML de la zero. În această postare, vedeți cum utilizarea Amazon Comprehend și Amazon Rekognition pentru informații media permite extragerea metadatelor la scară.

Contextual Intelligence Taxonomie Mapper

După ce extrageți metadate din conținutul media, aveți nevoie de o modalitate de a mapa acele metadate la o taxonomie a industriei pentru a facilita direcționarea contextuală. Pentru a face acest lucru, construiți Contextual Intelligence Taxonomy Mapper (CITM), care este alimentat de un transformator de propoziție BERT de la Hugging Face.

Transformatorul de propoziții BERT permite CITM să clasifice conținutul web cu cuvinte cheie legate de context. De exemplu, poate clasifica un articol web despre viața sănătoasă cu cuvinte cheie din taxonomia industriei, cum ar fi „Gătit și mâncare sănătoasă”, „Alergare și jogging” și altele, pe baza textului scris și a imaginilor utilizate în articol. CITM oferă, de asemenea, posibilitatea de a alege termenii de taxonomie mapați pe care să îi folosiți pentru procesul de licitare publicitară pe baza criteriilor dvs.

Următoarea diagramă ilustrează imaginea conceptuală a arhitecturii cu CITM.

Taxonomia conținutului IAB (Interactive Advertising Bureau).

Pentru această postare, folosim Taxonomia conținutului IAB Tech Lab ca taxonomie standard în industrie pentru cazul de utilizare a reclamei contextuale. Prin design, taxonomia IAB îi ajută pe creatorii de conținut să-și descrie mai precis conținutul și oferă un limbaj comun pentru toate părțile din procesul de publicitate programatică. Utilizarea unei terminologii obișnuite este crucială, deoarece selectarea reclamelor pentru o pagină web pe care o vizitează un utilizator trebuie să aibă loc în milisecunde. Taxonomia IAB servește ca o modalitate standardizată de clasificare a conținutului din diverse surse, fiind totodată un protocol industrial pe care platformele de licitare în timp real îl folosesc pentru selectarea anunțurilor. Are o structură ierarhică, care oferă o granularitate a termenilor taxonomiei și un context îmbunătățit pentru agenții de publicitate.

Fluxul de lucru al soluției

Următoarea diagramă ilustrează fluxul de lucru al soluției.

Prezentare generală a soluției CITM

Pașii sunt după cum urmează:

  1. Serviciul Amazon de stocare simplă (Amazon S3) stochează taxonomia conținutului IAB și conținutul web extras.
  2. Amazon Comprehend realizează modelarea subiectelor pentru a extrage teme comune din colecția de articole.
  3. Recunoașterea Amazonului API-ul etichetei obiectului detectează etichete în imagini.
  4. CITM mapează conținutul la o taxonomie standard.
  5. Opțional, puteți stoca conținut în maparea taxonomiei într-un magazin de metadate.

În secțiunile următoare, parcurgem fiecare pas în detaliu.

Amazon S3 stochează taxonomia conținutului IAB și conținutul web extras

Stocăm textul și imaginile extrase dintr-o colecție de articole web într-o găleată S3. De asemenea, stocăm taxonomia conținutului IAB. Ca prim pas, concatenăm diferite niveluri pe taxonomie pentru a crea termeni de taxonomie combinați. Această abordare ajută la menținerea structurii ierarhice a taxonomiei atunci când transformatorul de propoziție BERT creează înglobări pentru fiecare cuvânt cheie. Vezi următorul cod:

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)

Următoarea diagramă ilustrează taxonomia contextului IAB cu niveluri combinate.

Taxonomie de conținut IAB cu niveluri concatenate

Amazon Comprehend realizează modelarea subiectelor pentru a extrage teme comune din colecția de articole

Cu API-ul de modelare a subiectelor Amazon Comprehend, analizați toate textele articolelor folosind modelul Latent Dirichlet Allocation (LDA). Modelul examinează fiecare articol din corpus și grupează cuvintele cheie în același subiect în funcție de contextul și frecvența în care apar în întreaga colecție de articole. Pentru a vă asigura că modelul LDA detectează subiecte foarte coerente, efectuați un pas de preprocesare înainte de a apela API-ul Amazon Comprehend. Puteți folosi biblioteca gensim CoherenceModel pentru a determina numărul optim de subiecte de detectat din colecția de articole sau fișiere text. Vezi următorul cod:

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)

După ce obțineți numărul optim de subiecte, utilizați acea valoare pentru jobul de modelare a subiectelor Amazon Comprehend. Furnizarea de valori diferite pentru parametrul NumberOfTopics în Amazon Comprehend Operațiune StartTopicsDetectionJob are ca rezultat o variație în distribuția cuvintelor cheie plasate în fiecare grup de subiecte. O valoare optimizată pentru parametrul NumberOfTopics reprezintă numărul de subiecte care oferă cea mai coerentă grupare de cuvinte cheie cu relevanță contextuală mai mare. Puteți stoca rezultatul de modelare a subiectului de la Amazon Comprehend în formatul brut în Amazon S3.

API-ul Amazon Rekognition pentru etichete de obiect detectează etichetele în imagini

Analizați fiecare imagine extrasă din toate paginile web folosind Operațiunea Amazon Rekognition DetectLabels. Pentru fiecare imagine, operația oferă un răspuns JSON cu toate etichetele detectate în imagine, cuplat cu un scor de încredere pentru fiecare. Pentru cazul nostru de utilizare, selectăm în mod arbitrar un scor de încredere de 60% sau mai mare ca prag pentru etichetele obiectelor de utilizat în pasul următor. Stocați etichetele obiectelor în formatul lor brut în Amazon S3. Vezi următorul cod:

"""
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 mapează conținutul la o taxonomie standard

CITM compară metadatele de conținut extrase (subiecte din text și etichete din imagini) cu cuvintele cheie din taxonomia IAB și apoi mapează metadatele de conținut cu cuvintele cheie din taxonomie care sunt legate semantic. Pentru această sarcină, CITM parcurge următorii trei pași:

  1. Generați înglobări neuronale pentru taxonomia conținutului, cuvintele cheie ale subiectelor și etichetele de imagini folosind transformatorul de propoziții BERT al lui Hugging Face. Accesăm modelul de transformator de propoziție de la Amazon SageMaker. În această postare, folosim parafraza-MiniLM-L6-v2 model, care mapează cuvintele cheie și etichetele într-un spațiu vectorial dens de 384 dimensionale.
  2. Calculați scorul de similaritate cosinus între cuvintele cheie de taxonomie și cuvintele cheie ale subiectului folosind înglobarea acestora. De asemenea, calculează similitudinea cosinus între cuvintele cheie de taxonomie și etichetele obiectului imagine. Folosim asemănarea cosinusului ca mecanism de scor pentru a găsi potriviri similare din punct de vedere semantic între metadatele de conținut și taxonomie. Vezi următorul cod:
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. Identificați perechi cu scoruri de similaritate care sunt peste un prag definit de utilizator și utilizați-le pentru a mapa conținutul la cuvinte cheie legate semantic din taxonomia conținutului. În testul nostru, selectăm toate cuvintele cheie din perechi care au un scor de similaritate cosinus de 0.5 sau mai mare. Vezi următorul cod:
#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]:

O provocare comună atunci când lucrați cu reprezentarea limbii la scară internet (cum ar fi în acest caz de utilizare) este că aveți nevoie de un model care să se potrivească cu cea mai mare parte a conținutului - în acest caz, cuvinte în limba engleză. Transformatorul BERT al lui Hugging Face a fost pre-antrenat folosind un corp mare de postări Wikipedia în limba engleză pentru a reprezenta semnificația semantică a cuvintelor în relație unul cu celălalt. Ajustați modelul pre-antrenat folosind setul de date specific de cuvinte cheie pentru subiecte, etichete de imagini și cuvinte cheie de taxonomie. Când plasați toate înglobările în același spațiu de caracteristici și le vizualizați, vedeți că BERT reprezintă în mod logic similitudinea semantică între termeni.

Următorul exemplu vizualizează cuvintele cheie de taxonomie de conținut IAB pentru clasa Automotive reprezentate ca vectori folosind BERT. BERT plasează cuvintele cheie Automotive din taxonomie aproape de termeni similari din punct de vedere semantic.

Vizualizarea înglobărilor BERT pentru cuvintele cheie de taxonomie

Vectorii de caracteristici permit CITM să compare etichetele metadatelor și cuvintele cheie de taxonomie în același spațiu de caracteristici. În acest spațiu de caracteristici, CITM calculează asemănarea cosinus între fiecare vector caracteristic pentru cuvintele cheie de taxonomie și fiecare vector caracteristic pentru cuvintele cheie subiect. Într-o etapă separată, CITM compară vectorii caracteristici taxonomiei și vectorii caracteristici pentru etichetele de imagini. Împerecherile cu scorurile cosinus cele mai apropiate de 1 sunt identificate ca similare din punct de vedere semantic. Rețineți că o împerechere poate fi fie un cuvânt cheie de subiect și un cuvânt cheie de taxonomie, fie o etichetă de obiect și un cuvânt cheie de taxonomie.

Următoarea captură de ecran arată exemple de perechi de cuvinte cheie de subiecte și cuvinte cheie de taxonomie folosind asemănarea cosinusului calculată cu înglobările BERT.

Subiect la taxonomie perechi de cuvinte cheie

Pentru a mapa conținutul cu cuvintele cheie de taxonomie, CITM selectează cuvinte cheie din perechi cu scoruri cosinus care îndeplinesc un prag definit de utilizator. Acestea sunt cuvintele cheie care vor fi folosite pe platformele de licitare în timp real pentru a selecta anunțuri pentru inventarul paginii web. Rezultatul este o mapare bogată a conținutului online la taxonomie.

Opțional, stocați conținut în maparea taxonomiei într-un depozit de metadate

După ce identificați termeni de taxonomie similari din punct de vedere contextual din CITM, aveți nevoie de o modalitate prin care API-urile cu latență scăzută să acceseze aceste informații. În licitarea programatică pentru reclame, timpul de răspuns scăzut și concurența ridicată joacă un rol important în monetizarea conținutului. Schema pentru depozitul de date trebuie să fie flexibilă pentru a găzdui metadate suplimentare atunci când este necesar pentru a îmbogăți cererile de licitare. Amazon DynamoDB poate potrivi modelele de acces la date și cerințele operaționale pentru un astfel de serviciu.

Concluzie

În această postare, ați învățat cum să construiți o soluție de direcționare contextuală bazată pe taxonomie folosind Contextual Intelligence Taxonomy Mapper (CITM). Ați învățat cum să utilizați Amazon Comprehend și Amazon Rekognition pentru a extrage metadate granulare din materialele dvs. media. Apoi, folosind CITM, ați mapat activele la o taxonomie standard din industrie pentru a facilita licitarea programatică pentru anunțurile legate de contextual. Puteți aplica acest cadru altor cazuri de utilizare care necesită utilizarea unei taxonomii standard pentru a spori valoarea activelor media existente.

Pentru a experimenta cu CITM, îl puteți accesa depozit de coduri și utilizați-l cu un set de date text și imagini la alegere.

Vă recomandăm să aflați mai multe despre componentele soluției introduse în acest post. Aflați mai multe despre AWS Media Intelligence pentru a extrage metadate din conținutul media. De asemenea, aflați mai multe despre cum să utilizați Modele Hugging Face pentru NLP folosind Amazon SageMaker.


Despre Autori

Creați direcționare contextuală bazată pe taxonomie folosind AWS Media Intelligence și Hugging Face BERT PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Aramide Kehinde este un arhitect senior de soluții partener la AWS în învățare automată și AI. Călătoria ei în carieră a cuprins domeniile Business Intelligence și Advanced Analytics în mai multe industrii. Ea lucrează pentru a le permite partenerilor să construiască soluții cu servicii AWS AI/ML care să servească nevoile clienților de inovare. De asemenea, îi place să construiască intersecția dintre AI și arenele creative și să petreacă timpul cu familia ei.

Creați direcționare contextuală bazată pe taxonomie folosind AWS Media Intelligence și Hugging Face BERT PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Anuj Gupta este un arhitect principal de soluții care lucrează cu companii cu hiper-creștere în călătoria lor nativă în cloud. Este pasionat de utilizarea tehnologiei pentru a rezolva probleme provocatoare și a lucrat cu clienții pentru a construi aplicații cu o latență redusă și foarte distribuite. El contribuie la soluții open-source Serverless și Machine Learning. În afara serviciului, îi place să călătorească cu familia și să scrie poezii și bloguri filozofice.

Timestamp-ul:

Mai mult de la Învățare automată AWS