Bouw op taxonomie gebaseerde contexttargeting met AWS Media Intelligence en Hugging Face BERT PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Bouw op taxonomie gebaseerde contexttargeting met AWS Media Intelligence en Hugging Face BERT

Nu nieuwe gegevensprivacyregels zoals de AVG (Algemene Verordening Gegevensbescherming, 2017) van kracht zijn geworden, staan ​​klanten onder toenemende druk om geld te verdienen met media-items terwijl ze zich aan de nieuwe regels houden. Om inkomsten te genereren met media en tegelijkertijd de privacyregels te respecteren, is de mogelijkheid nodig om op internetschaal automatisch gedetailleerde metadata te extraheren uit items zoals tekst, afbeeldingen, video en audiobestanden. Het vereist ook een schaalbare manier om media-assets toe te wijzen aan branchetaxonomieën die het ontdekken van en het genereren van inkomsten met inhoud vergemakkelijken. Deze use case is met name belangrijk voor de advertentie-industrie, aangezien regels voor gegevensprivacy een verschuiving veroorzaken van gedragsgerichte targeting met behulp van cookies van derden.

Third-party cookies helpen gepersonaliseerde advertenties voor internetgebruikers mogelijk te maken en adverteerders in staat te stellen hun beoogde doelgroep te bereiken. Een traditionele oplossing om advertenties weer te geven zonder cookies van derden is contextueel adverteren, waarbij advertenties op webpagina's worden geplaatst op basis van de inhoud die op de pagina's is gepubliceerd. Contextueel adverteren vormt echter de uitdaging om op grote schaal context uit media-items te extraheren en die context op dezelfde manier te gebruiken om inkomsten te genereren met de items.

In dit bericht bespreken we hoe u een machine learning (ML)-oplossing kunt bouwen die we Contextual Intelligence Taxonomy Mapper (CITM) noemen om context uit digitale inhoud te extraheren en deze toe te wijzen aan standaardtaxonomieën om waarde te genereren. Hoewel we deze oplossing toepassen op contextueel adverteren, kunt u deze ook gebruiken om andere gebruikssituaties op te lossen. Onderwijstechnologiebedrijven kunnen het bijvoorbeeld gebruiken om hun inhoud toe te wijzen aan branchetaxonomieën om adaptief leren mogelijk te maken dat gepersonaliseerde leerervaringen biedt op basis van de individuele behoeften van studenten.

Overzicht oplossingen

De oplossing bestaat uit twee componenten: AWS Media-inlichtingen (AWS MI)-mogelijkheden voor contextextractie van inhoud op webpagina's en CITM voor intelligente toewijzing van inhoud aan een branchetaxonomie. U hebt toegang tot de oplossing's code opslagplaats voor een gedetailleerd overzicht van hoe we de componenten ervan implementeren.

AWS Media-inlichtingen

AWS MI-mogelijkheden maken automatische extractie van metadata mogelijk die contextueel inzicht geeft in de inhoud van een webpagina. U kunt ML-technieken zoals computervisie, spraak naar tekst en natuurlijke taalverwerking (NLP) combineren om automatisch metadata te genereren uit tekst, video's, afbeeldingen en audiobestanden voor gebruik in downstreamverwerking. Beheerde AI-services zoals: Amazon Rekognition, Amazon Transcribe, Amazon begrijpt het en Amazon T-extract deze ML-technieken toegankelijk maken met behulp van API-aanroepen. Dit elimineert de overhead die nodig is om ML-modellen helemaal opnieuw te trainen en te bouwen. In dit bericht zie je hoe het gebruik van Amazon Comprehend en Amazon Rekognition voor media-intelligentie het extraheren van metadata op grote schaal mogelijk maakt.

Contextuele intelligentie Taxonomie Mapper

Nadat u metadata uit media-inhoud hebt geëxtraheerd, hebt u een manier nodig om die metadata toe te wijzen aan een branchetaxonomie om contexttargeting te vergemakkelijken. Om dit te doen, bouw je Contextual Intelligence Taxonomy Mapper (CITM), die wordt aangedreven door een BERT-zinstransformator van Hugging Face.

De BERT-zinstransformator stelt het CITM in staat om webinhoud te categoriseren met contextueel gerelateerde trefwoorden. Het kan bijvoorbeeld een webartikel over gezond leven categoriseren met trefwoorden uit de branchetaxonomie, zoals 'Gezond koken en eten', 'Hardlopen en joggen' en meer, op basis van de geschreven tekst en de afbeeldingen die in het artikel worden gebruikt. CITM biedt ook de mogelijkheid om de toegewezen taxonomietermen te kiezen die u wilt gebruiken voor uw advertentiebiedproces op basis van uw criteria.

Het volgende diagram illustreert de conceptuele weergave van de architectuur met CITM.

De IAB (Interactive Advertising Bureau) inhoudstaxonomie

Voor dit bericht gebruiken we de Inhoudstaxonomie van IAB Tech Lab als de industriestandaard taxonomie voor de contextuele reclame use case. Door het ontwerp helpt de IAB-taxonomie makers van inhoud hun inhoud nauwkeuriger te beschrijven en biedt het een gemeenschappelijke taal voor alle partijen in het programmatische advertentieproces. Het gebruik van een gemeenschappelijke terminologie is cruciaal omdat de selectie van advertenties voor een webpagina die een gebruiker bezoekt binnen milliseconden moet gebeuren. De IAB-taxonomie dient als een gestandaardiseerde manier om inhoud uit verschillende bronnen te categoriseren, terwijl het ook een brancheprotocol is dat realtime biedplatforms gebruiken voor advertentieselectie. Het heeft een hiërarchische structuur, die granulariteit van taxonomietermen en verbeterde context voor adverteerders biedt.

Oplossingsworkflow

Het volgende diagram illustreert de workflow van de oplossing.

CITM oplossing overzicht

De stappen zijn als volgt:

  1. Amazon eenvoudige opslagservice (Amazon S3) slaat de IAB-inhoudstaxonomie en geëxtraheerde webinhoud op.
  2. Amazon Comprehend voert onderwerpmodellering uit om veelvoorkomende thema's uit de verzameling artikelen te extraheren.
  3. De Amazon-erkenning objectlabel-API detecteert labels in afbeeldingen.
  4. CITM koppelt inhoud aan een standaard taxonomie.
  5. Optioneel kunt u inhoud naar taxonomietoewijzing opslaan in een metagegevensarchief.

In de volgende paragrafen lopen we elke stap in detail door.

Amazon S3 slaat de IAB-inhoudstaxonomie en geëxtraheerde webinhoud op

We slaan geëxtraheerde tekst en afbeeldingen uit een verzameling webartikelen op in een S3-bucket. We slaan ook de IAB-inhoudstaxonomie op. Als eerste stap voegen we verschillende niveaus van de taxonomie samen om gecombineerde taxonomietermen te creëren. Deze benadering helpt de hiërarchische structuur van de taxonomie te behouden wanneer de BERT-zinstransformator inbeddingen maakt voor elk zoekwoord. Zie de volgende code:

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)

Het volgende diagram illustreert de IAB-contexttaxonomie met gecombineerde lagen.

IAB-inhoudstaxonomie met aaneengeschakelde lagen

Amazon Comprehend voert onderwerpmodellering uit om veelvoorkomende thema's uit de verzameling artikelen te extraheren

Met de Amazon Comprehend topic modeling API analyseer je alle artikelteksten met behulp van het Latent Dirichlet Allocation (LDA) model. Het model onderzoekt elk artikel in het corpus en groepeert trefwoorden in hetzelfde onderwerp op basis van de context en frequentie waarin ze in de hele verzameling artikelen voorkomen. Om ervoor te zorgen dat het LDA-model zeer coherente onderwerpen detecteert, voert u een voorbewerkingsstap uit voordat u de Amazon Comprehend API aanroept. U kunt de gensim bibliotheek's CoherenceModel om het optimale aantal onderwerpen te bepalen dat moet worden gedetecteerd uit de verzameling artikelen of tekstbestanden. Zie de volgende code:

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)

Nadat u het optimale aantal onderwerpen hebt gekregen, gebruikt u die waarde voor de taak van Amazon Comprehend-onderwerpmodellering. Verschillende waarden opgeven voor de parameter NumberOfTopics in Amazon Comprehend StartTopicsDetectionJob-bewerking resulteert in een variatie in de distributie van trefwoorden die in elke onderwerpgroep worden geplaatst. Een geoptimaliseerde waarde voor de parameter NumberOfTopics vertegenwoordigt het aantal onderwerpen dat de meest coherente groepering van trefwoorden met een hogere contextuele relevantie biedt. U kunt de output van onderwerpmodellering van Amazon Comprehend in zijn onbewerkte indeling opslaan in Amazon S3.

De objectlabel-API van Amazon Rekognition detecteert labels in afbeeldingen

U analyseert elke afbeelding die van alle webpagina's is geëxtraheerd met behulp van de Amazon Recognition DetectLabels-bewerking. Voor elke afbeelding levert de bewerking een JSON-reactie met alle labels die in de afbeelding zijn gedetecteerd, gekoppeld aan een betrouwbaarheidsscore voor elk. Voor onze use case selecteren we willekeurig een betrouwbaarheidsscore van 60% of hoger als de drempel voor objectlabels om in de volgende stap te gebruiken. U slaat objectlabels in hun onbewerkte indeling op in Amazon S3. Zie de volgende code:

"""
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 wijst inhoud toe aan een standaard taxonomie

Het CITM vergelijkt geëxtraheerde contentmetadata (onderwerpen uit tekst en labels uit afbeeldingen) met trefwoorden op de IAB-taxonomie, en koppelt vervolgens de contentmetadata aan trefwoorden uit de taxonomie die semantisch gerelateerd zijn. Voor deze taak doorloopt het CITM de volgende drie stappen:

  1. Genereer neurale inbeddingen voor de inhoudstaxonomie, trefwoorden voor onderwerpen en afbeeldingslabels met behulp van Hugging Face's BERT-zintransformator. We hebben toegang tot het zinstransformatormodel van: Amazon Sage Maker. In dit bericht gebruiken we de parafrase-MiniLM-L6-v2 model, dat trefwoorden en labels toewijst aan een 384 dimensionale dichte vectorruimte.
  2. Bereken de cosinus-overeenkomstscore tussen taxonomiezoekwoorden en onderwerpzoekwoorden met behulp van hun inbedding. Het berekent ook cosinusovereenkomst tussen de taxonomiesleutelwoorden en de afbeeldingsobjectlabels. We gebruiken cosinusovereenkomst als scoremechanisme om semantisch vergelijkbare overeenkomsten te vinden tussen de metadata van de inhoud en de taxonomie. Zie de volgende code:
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. Identificeer koppelingen met overeenkomstenscores die boven een door de gebruiker gedefinieerde drempel liggen en gebruik deze om de inhoud toe te wijzen aan semantisch gerelateerde trefwoorden in de inhoudstaxonomie. In onze test selecteren we alle zoekwoorden uit koppelingen met een cosinus-overeenkomstscore van 0.5 of hoger. Zie de volgende code:
#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]:

Een veelvoorkomende uitdaging bij het werken met taalrepresentatie op internetschaal (zoals in deze use case) is dat je een model nodig hebt dat bij de meeste inhoud past, in dit geval woorden in de Engelse taal. De BERT-transformator van Hugging Face is vooraf getraind met behulp van een groot aantal Wikipedia-berichten in de Engelse taal om de semantische betekenis van woorden in relatie tot elkaar weer te geven. U verfijnt het vooraf getrainde model met behulp van uw specifieke dataset van trefwoorden voor onderwerpen, afbeeldingslabels en taxonomie-trefwoorden. Wanneer je alle inbeddingen in dezelfde functieruimte plaatst en ze visualiseert, zie je dat BERT logisch de semantische overeenkomst tussen termen weergeeft.

In het volgende voorbeeld worden IAB-inhoudstaxonomiesleutelwoorden gevisualiseerd voor de klasse Automotive weergegeven als vectoren met behulp van BERT. BERT plaatst Automotive-zoekwoorden uit de taxonomie dicht bij semantisch vergelijkbare termen.

Visualisatie van BERT-inbeddingen voor taxonomische trefwoorden

Met de feature-vectoren kan het CITM de metadatalabels en taxonomie-trefwoorden in dezelfde feature-ruimte vergelijken. In deze functieruimte berekent het CITM de cosinusovereenkomst tussen elke kenmerkvector voor taxonomische trefwoorden en elke kenmerkvector voor onderwerptrefwoorden. In een aparte stap vergelijkt het CITM taxonomische kenmerkvectoren en kenmerkvectoren voor afbeeldingslabels. Koppelingen met cosinusscores die het dichtst bij 1 liggen, worden geïdentificeerd als semantisch vergelijkbaar. Merk op dat een koppeling een onderwerpsleutelwoord en een taxonomiesleutelwoord kan zijn, of een objectlabel en een taxonomiesleutelwoord.

De volgende schermafbeelding toont voorbeeldcombinaties van trefwoorden voor onderwerpen en taxonomie trefwoorden met behulp van cosinus-overeenkomst berekend met BERT-inbedding.

Onderwerp naar taxonomie trefwoordparen

Om inhoud toe te wijzen aan taxonomische trefwoorden, selecteert het CITM trefwoorden uit koppelingen met cosinusscores die voldoen aan een door de gebruiker gedefinieerde drempel. Dit zijn de zoekwoorden die op realtime biedplatforms worden gebruikt om advertenties voor de voorraad van de webpagina te selecteren. Het resultaat is een rijke mapping van online content naar de taxonomie.

Optioneel inhoud opslaan in taxonomietoewijzing in een metagegevensarchief

Nadat u contextueel vergelijkbare taxonomietermen van CITM hebt geïdentificeerd, hebt u een manier nodig voor API's met lage latentie om toegang te krijgen tot deze informatie. Bij programmatisch bieden op advertenties spelen een lage responstijd en een hoge gelijktijdigheid een belangrijke rol bij het genereren van inkomsten met de inhoud. Het schema voor de datastore moet flexibel zijn om extra metadata te kunnen verwerken wanneer dat nodig is om biedingsverzoeken te verrijken. Amazon DynamoDB kunnen overeenkomen met de datatoegangspatronen en operationele vereisten voor een dergelijke service.

Conclusie

In dit bericht heb je geleerd hoe je een op taxonomie gebaseerde oplossing voor contextuele targeting bouwt met behulp van Contextual Intelligence Taxonomy Mapper (CITM). Je hebt geleerd hoe je Amazon Comprehend en Amazon Rekognition kunt gebruiken om gedetailleerde metadata uit je media-items te extraheren. Vervolgens heeft u met behulp van CITM de items toegewezen aan een branchestandaard taxonomie om programmatic advertentiebiedingen voor contextueel gerelateerde advertenties te vergemakkelijken. U kunt dit raamwerk toepassen op andere gebruikssituaties waarvoor een standaardtaxonomie moet worden gebruikt om de waarde van bestaande media-items te vergroten.

Om met CITM te experimenteren, hebt u toegang tot zijn code opslagplaats en gebruik het met een tekst- en beelddataset naar keuze.

We raden aan om meer te weten te komen over de oplossingscomponenten die in dit bericht zijn geïntroduceerd. Ontdek meer over AWS Media-inlichtingen om metadata uit media-inhoud te extraheren. Lees ook meer over het gebruik van Hugging Face-modellen voor NLP met Amazon SageMaker.


Over de auteurs

Bouw op taxonomie gebaseerde contexttargeting met AWS Media Intelligence en Hugging Face BERT PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Aramide Kehinde is een Sr. Partner Solution Architect bij AWS in Machine Learning en AI. Haar carrière omvatte de gebieden Business Intelligence en Advanced Analytics in meerdere sectoren. Ze werkt eraan om partners in staat te stellen oplossingen te bouwen met AWS AI/ML-services die voldoen aan de innovatiebehoeften van klanten. Ze vindt het ook leuk om de kruising van AI en creatieve arena's te bouwen en tijd door te brengen met haar familie.

Bouw op taxonomie gebaseerde contexttargeting met AWS Media Intelligence en Hugging Face BERT PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Anuj Gupta is een Principal Solutions Architect die samenwerkt met hypergroeiende bedrijven op hun cloud-native reis. Hij is gepassioneerd door het gebruik van technologie om uitdagende problemen op te lossen en heeft samen met klanten gewerkt aan het bouwen van sterk gedistribueerde applicaties met een lage latentie. Hij draagt ​​bij aan open source Serverless en Machine Learning oplossingen. Naast zijn werk houdt hij van reizen met zijn gezin en het schrijven van gedichten en filosofische blogs.

Tijdstempel:

Meer van AWS-machine learning