AWSMediaIntelligenceとHuggingFaceBERT PlatoBlockchain Data Intelligenceを使用して、分類法に基づくコンテンツターゲットを構築します。 垂直検索。 愛。

AWSMediaIntelligenceとHuggingFaceBERTを使用して、分類法に基づくコンテンツターゲットを構築します

GDPR(一般データ保護規則、2017年)などの新しいデータプライバシー規則が施行されると、顧客は新しい規則を遵守しながらメディア資産を収益化するというプレッシャーにさらされています。 プライバシー規制を尊重しながらメディアを収益化するには、インターネット規模でテキスト、画像、ビデオ、オーディオファイルなどのアセットから詳細なメタデータを自動的に抽出する機能が必要です。 また、コンテンツの発見と収益化を促進する業界分類にメディア資産をマッピングするスケーラブルな方法も必要です。 このユースケースは、データプライバシールールがサードパーティのCookieを使用した行動ターゲティングからの移行を引き起こすため、広告業界にとって特に重要です。

第三者のクッキー Webユーザー向けにパーソナライズされた広告を有効にし、広告主が目的のオーディエンスにリーチできるようにします。 サードパーティのCookieを使用せずに広告を配信する従来のソリューションは、コンテンツターゲット広告です。これは、ページに公開されたコンテンツに基づいてWebページに広告を配置します。 ただし、コンテンツターゲット広告は、メディアアセットからコンテキストを大規模に抽出し、同様にそのコンテキストを使用してアセットを収益化するという課題をもたらします。

この投稿では、Contextual Intelligence Taxonomy Mapper(CITM)と呼ばれる機械学習(ML)ソリューションを構築して、デジタルコンテンツからコンテキストを抽出し、それを標準の分類法にマッピングして価値を生み出す方法について説明します。 このソリューションはコンテンツターゲット広告に適用されますが、他のユースケースを解決するために使用できます。 たとえば、教育テクノロジー企業は、これを使用してコンテンツを業界分類にマッピングし、学生の個々のニーズに基づいて個別化された学習体験を提供するアダプティブラーニングを促進できます。

ソリューションの概要

このソリューションは、次のXNUMXつのコンポーネントで構成されています。 AWSメディアインテリジェンス (AWS MI)Webページのコンテンツからコンテキストを抽出する機能、およびコンテンツを業界分類にインテリジェントにマッピングするCITM。 ソリューションにアクセスできます コードリポジトリ コンポーネントの実装方法の詳細については、こちらをご覧ください。

AWSメディアインテリジェンス

AWS MI機能により、メタデータの自動抽出が可能になり、ウェブページのコンテンツのコンテキストを理解できます。 コンピュータービジョン、音声からテキスト、自然言語処理(NLP)などのML技術を組み合わせて、テキスト、ビデオ、画像、オーディオファイルからメタデータを自動的に生成し、ダウンストリーム処理で使用できます。 などのマネージドAIサービス Amazonの再認識, Amazon Transcribe, Amazon Comprehend, アマゾンテキストラック API呼び出しを使用してこれらのML手法にアクセスできるようにします。 これにより、MLモデルを最初からトレーニングおよび構築するために必要なオーバーヘッドが排除されます。 この投稿では、メディアインテリジェンスにAmazonComprehendとAmazonRekognitionを使用することで、大規模なメタデータ抽出がどのように可能になるかを説明します。

コンテキストインテリジェンスタクソノミーマッパー

メディアコンテンツからメタデータを抽出した後、コンテンツターゲットを容易にするために、そのメタデータを業界分類にマッピングする方法が必要です。 これを行うには、HuggingFaceのBERTセンテンストランスフォーマーを搭載したContextualIntelligence Taxonomy Mapper(CITM)を構築します。

BERTセンテンストランスフォーマーを使用すると、CITMはコンテキストに関連するキーワードを使用してWebコンテンツを分類できます。 たとえば、「健康的な料理と食事」、「ランニングとジョギング」などの業界分類のキーワードを使用して、健康的な生活に関するWeb記事を、記事内で記述されたテキストと使用された画像に基づいて分類できます。 CITMには、基準に基づいて広告入札プロセスに使用するマップされた分類用語を選択する機能もあります。

次の図は、CITMを使用したアーキテクチャの概念図を示しています。

IAB(Interactive Advertising Bureau)コンテンツ分類法

この投稿では、 IABTechLabのコンテンツ分類法 コンテンツターゲット広告のユースケースの業界標準の分類法として。 設計上、IAB分類法は、コンテンツクリエーターがコンテンツをより正確に説明するのに役立ち、プログラマティック広告プロセスのすべての関係者に共通の言語を提供します。 ユーザーがアクセスするWebページの広告の選択は数ミリ秒以内に行われる必要があるため、一般的な用語の使用は非常に重要です。 IAB分類法は、さまざまなソースからのコンテンツを分類するための標準化された方法として機能すると同時に、リアルタイム入札プラットフォームが広告選択に使用する業界プロトコルでもあります。 階層構造があり、分類用語の粒度と広告主のコンテキストの強化を提供します。

ソリューションワークフロー

次の図は、ソリューションのワークフローを示しています。

CITMソリューションの概要

手順は以下の通りです。

  1. Amazon シンプル ストレージ サービス (Amazon S3)は、IABコンテンツの分類法と抽出されたWebコンテンツを保存します。
  2. Amazon Comprehendは、トピックモデリングを実行して、記事のコレクションから一般的なテーマを抽出します。
  3. Amazon Rekognition オブジェクトラベルAPI 画像内のラベルを検出します。
  4. CITMは、コンテンツを標準の分類法にマップします。
  5. オプションで、メタデータストアにコンテンツから分類法へのマッピングを保存できます。

次のセクションでは、各ステップについて詳しく説明します。

Amazon S3は、IABコンテンツの分類法と抽出されたWebコンテンツを保存します

Web記事のコレクションから抽出されたテキストと画像をS3バケットに保存します。 また、IABコンテンツの分類法も保存しています。 最初のステップとして、分類法のさまざまな層を連結して、結合された分類法の用語を作成します。 このアプローチは、BERTセンテンストランスフォーマーが各キーワードの埋め込みを作成するときに、分類法の階層構造を維持するのに役立ちます。 次のコードを参照してください。

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)

次の図は、階層を組み合わせたIABコンテキスト分類法を示しています。

連結された層を使用したIABコンテンツ分類

Amazon Comprehendはトピックモデリングを実行して、記事のコレクションから一般的なテーマを抽出します

Amazon ComprehendトピックモデリングAPIを使用すると、潜在的ディリクレ割り当て(LDA)モデルを使用してすべての記事テキストを分析できます。 モデルは、コーパス内の各記事を調べ、記事のコレクション全体でキーワードが表示されるコンテキストと頻度に基づいて、キーワードを同じトピックにグループ化します。 LDAモデルが一貫性の高いトピックを確実に検出するようにするには、AmazonComprehendAPIを呼び出す前に前処理ステップを実行します。 あなたは使用することができます gensimライブラリの CoherenceModelは、記事またはテキストファイルのコレクションから検出するトピックの最適な数を決定します。 次のコードを参照してください。

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)

最適な数のトピックを取得したら、その値をAmazonComprehendトピックモデリングジョブに使用します。 AmazonComprehendのNumberOfTopicsパラメーターに異なる値を提供する StartTopicsDetectionJob操作 その結果、各トピックグループに配置されるキーワードの分布にばらつきが生じます。 NumberOfTopicsパラメーターの最適化された値は、コンテキストの関連性が高い、最も一貫性のあるキーワードのグループ化を提供するトピックの数を表します。 Amazon Comprehendからのトピックモデリング出力は、AmazonS3に未加工の形式で保存できます。

Amazon RekognitionオブジェクトラベルAPIは、画像内のラベルを検出します

を使用して、すべてのWebページから抽出された各画像を分析します。 AmazonRekognitionDetectLabelsオペレーション。 この操作では、画像ごとに、画像内で検出されたすべてのラベルと、それぞれの信頼スコアを含むJSON応答が提供されます。 このユースケースでは、次のステップで使用するオブジェクトラベルのしきい値として、60%以上の信頼スコアを任意に選択します。 オブジェクトラベルは、AmazonS3に未加工の形式で保存します。 次のコードを参照してください。

"""
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は、コンテンツを標準の分類法にマッピングします

CITMは、抽出されたコンテンツメタデータ(テキストのトピックと画像のラベル)をIAB分類法のキーワードと比較し、コンテンツメタデータを意味的に関連する分類法のキーワードにマッピングします。 このタスクでは、CITMは次のXNUMXつのステップを完了します。

  1. Hugging FaceのBERTセンテンストランスフォーマーを使用して、コンテンツ分類、トピックキーワード、および画像ラベルのニューラル埋め込みを生成します。 からセンテンストランスフォーマーモデルにアクセスします アマゾンセージメーカー。 この投稿では、 言い換え-MiniLM-L6-v2 モデル。キーワードとラベルを384次元の密なベクトル空間にマッピングします。
  2. 埋め込みを使用して、分類キーワードとトピックキーワード間のコサイン類似度スコアを計算します。 また、分類キーワードと画像オブジェクトラベル間のコサイン類似度も計算します。 コンテンツメタデータと分類法の間で意味的に類似した一致を見つけるためのスコアリングメカニズムとして、コサイン類似性を使用します。 次のコードを参照してください。
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. ユーザー定義のしきい値を超える類似度スコアを持つペアを識別し、それらを使用して、コンテンツをコンテンツ分類法の意味的に関連するキーワードにマップします。 このテストでは、コサイン類似度スコアが0.5以上のペアリングからすべてのキーワードを選択します。 次のコードを参照してください。
#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]:

インターネット規模の言語表現(このユースケースなど)を使用する場合の一般的な課題は、ほとんどのコンテンツ(この場合は英語の単語)に適合するモデルが必要なことです。 Hugging FaceのBERTトランスフォーマーは、英語のWikipedia投稿の大規模なコーパスを使用して事前にトレーニングされており、相互に関連する単語の意味を表します。 トピックキーワード、画像ラベル、分類キーワードの特定のデータセットを使用して、事前にトレーニングされたモデルを微調整します。 すべての埋め込みを同じ機能空間に配置して視覚化すると、BERTが用語間の意味的類似性を論理的に表すことがわかります。

次の例では、BERTを使用してベクトルとして表されるAutomotiveクラスのIABコンテンツ分類キーワードを視覚化します。 BERTは、分類法の自動車キーワードを意味的に類似した用語の近くに配置します。

分類キーワードのBERT埋め込みの視覚化

特徴ベクトルにより、CITMは同じ特徴空間内のメタデータラベルと分類キーワードを比較できます。 この機能空間では、CITMは、分類キーワードの各機能ベクトルとトピックキーワードの各機能ベクトルの間のコサイン類似度を計算します。 別のステップで、CITMは分類法の特徴ベクトルと画像ラベルの特徴ベクトルを比較します。 1に最も近いコサインスコアを持つペアリングは、意味的に類似していると識別されます。 ペアリングは、トピックキーワードと分類法キーワード、またはオブジェクトラベルと分類法キーワードのいずれかであることに注意してください。

次のスクリーンショットは、BERT埋め込みで計算されたコサイン類似度を使用したトピックキーワードと分類キーワードのペアリングの例を示しています。

分類法のキーワードペアリングのトピック

コンテンツを分類キーワードにマッピングするために、CITMは、ユーザー定義のしきい値を満たすコサインスコアを持つペアからキーワードを選択します。 これらは、リアルタイムビッダープラットフォームでウェブページの広告枠の広告を選択するために使用されるキーワードです。 その結果、オンラインコンテンツから分類法への豊富なマッピングが実現します。

オプションで、メタデータストアにコンテンツから分類法へのマッピングを保存します

CITMからコンテキスト的に類似した分類用語を特定したら、低レイテンシのAPIがこの情報にアクセスする方法が必要になります。 広告のプログラマティック入札では、応答時間の短縮と同時実行性の高さがコンテンツの収益化に重要な役割を果たします。 データストアのスキーマは、入札リクエストを充実させるために必要な場合に追加のメタデータに対応できるように柔軟である必要があります。 Amazon DynamoDB このようなサービスのデータアクセスパターンと運用要件に一致させることができます。

まとめ

この投稿では、Contextual Intelligence Taxonomy Mapper(CITM)を使用して分類法ベースのコンテキストターゲティングソリューションを構築する方法を学びました。 AmazonComprehendとAmazonRekognitionを使用して、メディアアセットから詳細なメタデータを抽出する方法を学びました。 次に、CITMを使用して、アセットを業界標準の分類法にマッピングし、コンテキストに関連する広告のプログラマティック広告入札を促進します。 このフレームワークは、既存のメディア資産の価値を高めるために標準的な分類法を使用する必要がある他のユースケースに適用できます。

CITMを試すには、CITMにアクセスします。 コードリポジトリ 選択したテキストと画像のデータセットで使用します。

この投稿で紹介したソリューションコンポーネントについてさらに学ぶことをお勧めします。 詳細をご覧ください AWSメディアインテリジェンス メディアコンテンツからメタデータを抽出します。 また、使用方法についても学ぶ AmazonSageMakerを使用したNLPのHuggingFaceモデル.


著者について

AWSMediaIntelligenceとHuggingFaceBERT PlatoBlockchain Data Intelligenceを使用して、分類法に基づくコンテンツターゲットを構築します。 垂直検索。 愛。アラミドケヒンデ AWSの機械学習とAIのシニアパートナーソリューションアーキテクトです。 彼女のキャリアの旅は、複数の業界にわたるビジネスインテリジェンスと高度な分析の分野にまたがっています。 彼女は、パートナーがイノベーションに対する顧客のニーズに応えるAWS AI/MLサービスを使用してソリューションを構築できるようにするために取り組んでいます。 彼女はまた、AIとクリエイティブな分野の交差点を構築し、家族と過ごすことを楽しんでいます。

AWSMediaIntelligenceとHuggingFaceBERT PlatoBlockchain Data Intelligenceを使用して、分類法に基づくコンテンツターゲットを構築します。 垂直検索。 愛。アヌジグプタ は、クラウドネイティブジャーニーで超成長企業と協力しているプリンシパルソリューションアーキテクトです。 彼はテクノロジーを使用して困難な問題を解決することに情熱を注いでおり、顧客と協力して高度に分散された低遅延のアプリケーションを構築してきました。 彼は、オープンソースのサーバーレスおよび機械学習ソリューションに貢献しています。 仕事以外では、家族と一緒に旅行したり、詩や哲学的なブログを書いたりするのが大好きです。

タイムスタンプ:

より多くの AWS機械学習