この XNUMX 部構成のシリーズでは、グラフ ニューラル ネットワーク (GNN) と アマゾン海王星 を使用して映画のおすすめを生成する IMDb とボックス オフィス Mojo 映画/TV/OTT ライセンス可能なデータ パッケージ。1 億を超えるユーザー評価を含む幅広いエンターテイメント メタデータを提供します。 11 万人を超えるキャストとスタッフのクレジット。 9 万の映画、テレビ、エンターテイメント タイトル。 および 60 か国以上からのグローバル興行レポート データ。 多くの AWS メディアおよびエンターテイメントのお客様は、IMDb データのライセンスを AWSデータ交換 コンテンツの発見を改善し、顧客の関与と維持を向上させます。
次の図は、このシリーズの一部として実装された完全なアーキテクチャを示しています。
In 第1部では、GNN のアプリケーションと、IMDb データをナレッジ グラフ (KG) に変換して準備する方法について説明しました。 AWS Data Exchange からデータをダウンロードし、 AWSグルー KG ファイルを生成します。 KGファイルは次の場所に保存されました Amazon シンプル ストレージ サービス (Amazon S3) に読み込まれ、 アマゾン海王星.
In 第2部、使用方法をデモンストレーションしました アマゾンネプチューンML (中 アマゾンセージメーカー) KG をトレーニングし、KG 埋め込みを作成します。
この投稿では、Amazon S3 でトレーニング済みの KG 埋め込みをカタログ外検索のユースケースに適用する方法について説明します。 AmazonOpenSearchサービス および AWSラムダ. また、インタラクティブな検索エクスペリエンスのためにローカル Web アプリをデプロイします。 この投稿で使用されるすべてのリソースは、XNUMX つのツールを使用して作成できます。 AWSクラウド開発キット (AWS CDK) コマンドは、この記事の後半で説明されています。
経歴
ビデオ ストリーミング プラットフォームで利用できないコンテンツ タイトルをうっかり検索してしまったことはありませんか? はいの場合、空白の検索結果ページに直面する代わりに、同じジャンルの映画のリストがキャストまたはクルー メンバーと共に表示されることがわかります。 それは、カタログ外の検索エクスペリエンスです。
カタログ外検索 (OOC) は、カタログに直接一致しない検索クエリを入力した場合です。 このイベントは、期間限定で複数のベンダーや制作会社から常にさまざまなコンテンツを購入している動画ストリーミング プラットフォームで頻繁に発生します。 ストリーミング会社のカタログから映画や番組の大規模なナレッジ ベースへの関連性やマッピングが存在しないと、OOC コンテンツをクエリする顧客の検索エクスペリエンスが平均以下になり、プラットフォームとの対話時間が短縮される可能性があります。 このマッピングは、頻繁な OOC クエリをカタログ コンテンツに手動でマッピングするか、機械学習 (ML) を使用して自動化できます。
この投稿では、IMDb データセット (グローバル エンターテイメント メタデータの主要なソース) とナレッジ グラフの力を利用して、OOC を処理する方法を説明します。
OpenSearch サービス は、インタラクティブなログ分析、リアルタイムのアプリケーション監視、Web サイト検索などを簡単に実行できるフル マネージド サービスです。 OpenSearch は、Elasticsearch から派生したオープン ソースの分散検索および分析スイートです。 OpenSearch サービスは、OpenSearch の最新バージョン、Elasticsearch の 19 バージョン (1.5 から 7.10 バージョン) のサポート、および OpenSearch ダッシュボードと Kibana (1.5 から 7.10 バージョン) による可視化機能を提供します。 OpenSearch Service には現在、数万のアクティブな顧客がおり、数十万のクラスターが管理されており、毎月数兆のリクエストを処理しています。 OpenSearch Service は kNN 検索を提供します。これにより、製品の推奨、不正行為の検出、画像、動画、およびドキュメントとクエリの類似性などの特定のセマンティック シナリオなどのユース ケースで検索を強化できます。 OpenSearch Service の自然言語理解を利用した検索機能の詳細については、次を参照してください。 Amazon SageMaker と Amazon OpenSearch Service KNN 機能を使用して、NLU を利用した検索アプリケーションを構築する.
ソリューションの概要
この投稿では、OpenSearch Service の k 最近傍 (kNN) 検索機能を使用したナレッジ グラフ ベースの埋め込み検索により、OOC 状況を処理するソリューションを紹介します。 このソリューションの実装に使用される主要な AWS サービスは、OpenSearch Service、SageMaker、Lambda、および Amazon S3 です。
チェックアウト 第1部 および 第2部 Amazon Neptune ML を使用したナレッジ グラフの作成と GNN 埋め込みの詳細については、このシリーズの をご覧ください。
私たちの OOC ソリューションは、ストリーミング会社の KG と IMDb KG を合併して得られた結合 KG があることを前提としています。 これは、タイトルをタイトルの種類 (映画、シリーズ、ドキュメンタリー)、キャスト、スタッフと照合する単純なテキスト処理技術によって行うことができます。 さらに、この共同ナレッジ グラフは、で説明されているパイプラインを介してナレッジ グラフの埋め込みを生成するようにトレーニングする必要があります。 第1部 および 第2部. 次の図は、結合された KG の簡略図を示しています。
OOC 検索機能を簡単な例で説明するために、IMDb ナレッジ グラフを顧客カタログと顧客カタログ外に分割します。 「トイ・ストーリー」を含むタイトルをアウトオブカスタマー カタログ リソースとしてマークし、残りの IMDb ナレッジ グラフをカスタマー カタログとしてマークします。 顧客カタログが拡張されていないか、外部データベースと結合されていないシナリオでは、「トイ ストーリー」を検索すると、メタデータに「おもちゃ」または「ストーリー」という単語が含まれるタイトルが OpenSearch テキスト検索で返されます。 顧客カタログが IMDb にマッピングされている場合、「トイ ストーリー」というクエリがカタログに存在せず、IMDb での上位の一致が「トイ ストーリー」、「トイ ストーリー 2」、「トイ ストーリー」であることを簡単に収集できます。ストーリー 3」、「トイ ストーリー 4」、および「チャーリー: トイ ストーリー」は、テキスト マッチとの関連性が高い順に並べられています。 これらの一致ごとにカタログ内の結果を取得するために、OpenSearch Service を介して、顧客のカタログベースの kNN 埋め込み (共同 KG の) 類似性で最も近い XNUMX つの映画を生成できます。
一般的な OOC エクスペリエンスは、次の図に示すフローに従います。
次のビデオは、クエリ「トイ ストーリー」の OOC 結果の上位 XNUMX つ (ヒット数) と、顧客カタログ内の関連する一致 (推奨数) を示しています。
ここでは、OpenSearch Service のテキスト検索を使用して、クエリをナレッジ グラフと照合します。 次に、OpenSearch Service kNN インデックスを使用して、テキスト一致の埋め込みを顧客カタログ タイトルにマッピングします。 ユーザー クエリをナレッジ グラフ エンティティに直接マッピングすることはできないため、XNUMX 段階のアプローチを使用して、最初にタイトル ベースのクエリの類似性を見つけ、次にナレッジ グラフの埋め込みを使用してタイトルに類似したアイテムを見つけます。 以下のセクションでは、OpenSearch Service クラスターをセットアップし、ナレッジ グラフ インデックスを作成してアップロードし、ソリューションを Web アプリケーションとしてデプロイするプロセスについて説明します。
前提条件
このソリューションを実装するには、 AWSアカウント、OpenSearch Service、SageMaker、Lambda、および AWS CloudFormation、およびの手順を完了している 第1部 および 第2部 このシリーズの。
起動ソリューション リソース
次のアーキテクチャ図は、カタログ外のワークフローを示しています。
AWS Cloud Development Kit (CDK) を使用して、OOC 検索アプリケーションに必要なリソースをプロビジョニングします。 これらのリソースを起動するコードは、次の操作を実行します。
- リソースの VPC を作成します。
- 検索アプリケーション用の OpenSearch Service ドメインを作成します。
- 映画のメタデータと埋め込みを処理して OpenSearch Service インデックスに読み込む Lambda 関数を作成します (
**-ReadFromOpenSearchLambda-**
). - Web アプリからのユーザー クエリを入力として受け取り、OpenSearch から関連するタイトルを返す Lambda 関数を作成します (
**-LoadDataIntoOpenSearchLambda-**
). - Web アプリのユーザー インターフェイスと Lambda の間に追加のセキュリティ レイヤーを追加する API ゲートウェイを作成します。
開始するには、次の手順を実行します。
- コマンドを使用して、ターミナルから AWS CDK を起動します。
bash launch_stack.sh
. - パート 3 で作成した 2 つの SXNUMX ファイル パスを入力として提供します。
- ムービー埋め込み CSV ファイルへの S3 パス。
- ムービー ノード ファイルへの S3 パス。
- スクリプトが必要なすべてのリソースをプロビジョニングし、実行が完了するまで待ちます。
- AWS CDK スクリプトが出力する API Gateway URL をコピーして保存します。 (これは後で Streamlit アプリに使用します)。
OpenSearch サービス ドメインの作成
説明のために、安全な VPC とサブネット内の r6g.large.search インスタンスの XNUMX つのアベイラビリティーゾーンに検索ドメインを作成します。 ベスト プラクティスは、XNUMX つのプライマリ インスタンスと XNUMX つのレプリカ インスタンスを使用して XNUMX つのアベイラビリティー ゾーンを設定することです。
OpenSearch Service インデックスを作成してデータをアップロードする
Lambda 関数 (AWS CDK 起動スタック コマンドを使用して作成) を使用して、OpenSearch Service インデックスを作成します。 インデックスの作成を開始するには、次の手順を実行します。
- Lambda コンソールで、
LoadDataIntoOpenSearchLambda
ラムダ関数。 - ソフトウェア設定ページで、下図のように ホイール試乗 タブを選択 ホイール試乗 データを作成して OpenSearch Service インデックスに取り込みます。
この Lambda 関数の次のコードは、次の場所にあります。 part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
この関数は、次のタスクを実行します。
- スタック作成ファイルに渡された S3 ファイル パスから、ムービー メタデータとそれに関連付けられた埋め込みを含む IMDB KG ムービー ノード ファイルをロードします。
launch_stack.sh
. - XNUMX つの入力ファイルをマージして、インデックス作成用の XNUMX つのデータフレームを作成します。
- Boto3 Python ライブラリを使用して OpenSearch Service クライアントを初期化します。
- テキストの XNUMX つのインデックスを作成します (
ooc_text
) および kNN 埋め込み検索 (ooc_knn
) を介して結合されたデータフレームからデータを一括アップロードします。ingest_data_into_ops
機能。
このデータ取り込みプロセスには 5 ~ 10 分かかり、 アマゾンクラウドウォッチ にログオンします 監視 Lambda 関数のタブ。
XNUMX つのインデックスを作成して、テキスト ベースの検索と kNN 埋め込みベースの検索を有効にします。 テキスト検索は、ユーザーが入力する自由形式のクエリを映画のタイトルにマップします。 kNN 埋め込み検索は、KG 潜在空間から最適なテキスト マッチに最も近い k 個のムービーを見つけて、出力として返します。
ソリューションをローカル Web アプリケーションとしてデプロイする
OpenSearch Service でテキスト検索と kNN インデックスが機能するようになったので、ML を利用した Web アプリを作成する準備が整いました。
私たちは、使用 streamlit
このアプリケーションのフロントエンドのイラストを作成するための Python パッケージ。 の IMDb-Knowledge-Graph-Blog/part3-out-of-catalog/run_imdb_demo.py
私たちのPythonファイル GitHubレポ には、ローカル Web アプリを起動してこの機能を調べるために必要なコードがあります。
コードを実行するには、次の手順を実行します。
- インストール
streamlit
およびaws_requests_auth
ターミナルで次のコマンドを使用して、ローカル仮想 Python 環境の Python パッケージ:
- 次のように、コード内の API Gateway URL のプレースホルダーを、AWS CDK によって作成されたものに置き換えます。
api = '<ENTER URL OF THE API GATEWAY HERE>/opensearch-lambda?q={query_text}&numMovies={num_movies}&numRecs={num_recs}'
- コマンドで Web アプリを起動します
streamlit run run_imdb_demo.py
ターミナルから。
このスクリプトは、Web ブラウザーでアクセスできる Streamlit Web アプリを起動します。 次のスクリーンショットに示すように、Web アプリの URL はスクリプト出力から取得できます。
アプリは、新しい検索文字列、ヒット数、推奨数を受け入れます。 ヒット数は、外部 (IMDb) カタログから取得する一致する OOC タイトルの数に対応します。 推奨の数は、kNN 埋め込み検索に基づいて顧客カタログから取得する最近傍の数に対応します。 次のコードを参照してください。
この入力 (クエリ、ヒット数、推奨事項) は、 **-ReadFromOpenSearchLambda-**
API Gateway リクエストを通じて AWS CDK によって作成された Lambda 関数。 これは、次の関数で行われます。
OpenSearch Service からの Lambda 関数の出力結果は API Gateway に渡され、Streamlit アプリに表示されます。
クリーンアップ
コマンドを使用して、AWS CDK によって作成されたすべてのリソースを削除できます。 npx cdk destroy –app “python3 appy.py” --all
同じインスタンスで ( cdk
フォルダー) はスタックの起動に使用されました (次のスクリーンショットを参照)。
まとめ
この投稿では、テキストを使用した OOC 検索と、SageMaker と OpenSearch Service を使用した kNN ベースの検索のソリューションを作成する方法を紹介しました。 カスタム ナレッジ グラフ モデルの埋め込みを使用して、カタログ内で IMDb タイトルのカタログに最も近いものを見つけました。 たとえば、Amazon Prime Video が開発したファンタジー シリーズ「The Rings of Power」を他のストリーミング プラットフォームで検索し、検索結果を最適化する方法を推論できるようになりました。
この投稿のコードサンプルの詳細については、 GitHubレポ. Amazon ML Solutions Lab と協力して同様の最先端の ML アプリケーションを構築する方法の詳細については、以下を参照してください。 Amazon 機械学習ソリューション ラボ. IMDb データセットのライセンスの詳細については、次の Web サイトをご覧ください。 development.imdb.com.
著者について
ディヴィヤ・バルガヴィ Amazon ML Solutions Lab のデータサイエンティストであり、メディアとエンターテイメントの垂直リーダーであり、機械学習を使用して AWS のお客様の価値の高いビジネス上の問題を解決しています。 彼女は、画像/ビデオの理解、ナレッジ グラフ推奨システム、予測広告のユース ケースに取り組んでいます。
ガウラヴ・レレ はAmazonML Solution Labのデータサイエンティストであり、さまざまな業種のAWSのお客様と協力して、機械学習とAWSクラウドサービスの使用を加速し、ビジネス上の課題を解決しています。
マシューローズ 私は Amazon ML Solutions Lab で働いているデータサイエンティストです。 彼は、自然言語処理やコンピューター ビジョンなどの概念を含む機械学習パイプラインの構築を専門としています。
カランシンドワニ Amazon ML Solutions Lab のデータサイエンティストであり、深層学習モデルの構築とデプロイを行っています。 彼はコンピュータビジョンの分野を専門としています。 余暇には、ハイキングを楽しんでいます。
アデシナ宗司 AWS の応用科学者であり、グラフ タスクで機械学習を行うためのグラフ ニューラル ネットワーク ベースのモデルを開発し、詐欺や悪用、ナレッジ グラフ、レコメンダー システム、ライフ サイエンスへの応用を行っています。 余暇には、読書と料理を楽しんでいます。
ヴィディヤ・サーガル・ラヴィパティ Amazon ML Solutions Lab のマネージャーであり、大規模な分散システムでの豊富な経験と機械学習への情熱を活用して、さまざまな業種の AWS のお客様が AI とクラウドの採用を加速できるよう支援しています。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- Platoblockchain。 Web3メタバースインテリジェンス。 知識の増幅。 こちらからアクセスしてください。
- 情報源: https://aws.amazon.com/blogs/machine-learning/power-recommendations-and-search-using-an-imdb-knowledge-graph-part-3/
- 1
- 10
- 100
- 11
- 116
- 7
- 9
- a
- 私たちについて
- 虐待
- 加速する
- 受け入れる
- アクセス
- 越えて
- アクティブ
- NEW
- さらに
- 追加
- 養子縁組
- 広告運用
- AI
- すべて
- Amazon
- Amazon MLソリューションラボ
- アマゾン海王星
- アマゾンネプチューンML
- AmazonOpenSearchサービス
- アマゾンセージメーカー
- 分析論
- および
- API
- アプリ
- 申し込み
- 適用された
- 申し込む
- アプローチ
- 建築
- AREA
- 関連する
- 自動化
- 賃貸条件の詳細・契約費用のお見積り等について
- 利用できます
- AWS
- AWSデータ交換
- ベース
- なぜなら
- BEST
- の間に
- 10億
- ボックス
- 興行収入
- ブラウザ
- ビルド
- 建物
- 構築します
- ビジネス
- 機能
- 例
- カタログ
- 課題
- 選択する
- クライアント
- クラウド
- クラウドの採用
- クラウドサービス
- クラスタ
- コード
- 協業
- 組み合わせた
- 企業
- 会社
- 会社の
- コンプリート
- 記入済みの
- コンピュータ
- Computer Vision
- コンセプト
- 領事
- 絶えず
- 含まれています
- コンテンツ
- 対応する
- 可能性
- 国
- 作ります
- 作成した
- 作成
- 創造
- Applied Deposits
- 電流プローブ
- 現在
- カスタム
- 顧客
- 顧客エンゲージメント
- Customers
- データ
- データ交換
- データサイエンティスト
- データベースを追加しました
- データセット
- 深いです
- 深い学習
- 実証します
- 実証
- 展開します
- 展開する
- 配備する
- 派生
- 記載された
- 破壊する
- 検出
- 発展した
- 開発
- 開発
- 異なります
- 直接
- 直接に
- 発見
- 議論する
- 配布
- 分散システム
- ドキュメント
- ドキュメンタリー
- そうではありません
- ドメイン
- 各
- 容易
- enable
- 婚約
- 強化された
- 入力します
- 入ります
- エンターテインメント
- エンティティ
- 環境
- イベント
- EVER
- 例
- 交換
- 体験
- 探る
- 外部
- 余分な
- 向い
- 親しみ
- FANTASY
- フィギュア
- File
- もう完成させ、ワークスペースに掲示しましたか?
- 発見
- 名
- フロー
- フォロー中
- 次
- 発見
- 詐欺
- 不正検出
- 頻繁な
- 頻繁に
- から
- 完全に
- function
- 機能性
- 機能性
- 機能
- ゲートウェイ
- 生成する
- 取得する
- グローバル
- グラフ
- グラフ
- ハンドル
- ヘッダーの
- 助けます
- ヒット
- ヒット
- 認定条件
- How To
- HTML
- HTTPS
- 何百
- 画像
- 実装する
- 実装
- 改善します
- in
- 含めて
- 増える
- index
- インデックス
- 索引
- 産業を変えます
- 情報
- install
- を取得する必要がある者
- 相互作用
- 相互作用的
- インタフェース
- 巻き込む
- IT
- リーディングシート
- キー
- 知識
- 知識グラフ
- ラボ
- 言語
- 大
- 大規模
- 最新の
- 起動する
- 起動
- 層
- つながる
- LEARN
- 学習
- レバレッジ
- 図書館
- ライセンス
- ライセンシング
- 生活
- 生命科学
- 限定的
- リスト
- 負荷
- ローカル
- 機械
- 機械学習
- 作る
- マネージド
- 管理
- マネージャー
- 手動で
- 多くの
- 地図
- マッピング
- ゲレンデマップ
- マーク
- 一致
- マッチング
- メディア
- メンバー
- 言及した
- マージ
- 百万
- 分
- ML
- モデル
- 監視対象
- モニタリング
- 月
- 他には?
- 映画
- 動画
- の試合に
- ナチュラル
- 自然言語処理
- 隣人
- ネプチューン
- ネットワークベース
- ネットワーク
- ニューラルネットワーク
- 新作
- 数
- 得
- オファー
- Office
- ONE
- 開いた
- オープンソース
- 業務執行統括
- 最適化
- 注文
- OS
- その他
- パッケージ
- 部
- 渡された
- 情熱
- path
- 実行する
- 実行する
- プレースホルダー
- プラットフォーム
- プラットフォーム
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- お願いします
- ポスト
- 電力
- パワード
- 練習
- プレミア
- 準備
- 現在
- 主要な
- 素数
- プリント
- 問題
- プロセス
- 処理済み
- 処理
- プロダクト
- 生産
- は、大阪で
- 準備
- 購入
- 目的
- Python
- 範囲
- 評価
- リーディング
- 準備
- への
- 理由
- おすすめ
- 提言
- 関連性
- 関連した
- 返信
- 各種レポート作成
- 倉庫
- 要求
- リクエスト
- の提出が必要です
- リソースを追加する。
- リソース
- 応答
- REST
- 結果
- 結果
- 保持
- return
- 収益
- ラン
- ランニング
- セージメーカー
- 同じ
- Save
- シナリオ
- 科学
- 科学者
- を検索
- セクション
- 安全に
- セキュリティ
- シリーズ
- サービス
- サービス
- セッションに
- 設定
- 設定
- すべき
- 示す
- 作品
- 同様の
- 類似
- 簡単な拡張で
- 簡略化されました
- 状況
- 溶液
- ソリューション
- 解決する
- 解決する
- 一部
- ソース
- スペース
- 専門にする
- 特定の
- split
- スタック
- start
- 開始
- 最先端の
- ステップ
- ストレージ利用料
- 保存され
- ストーリー
- ストリーミング
- サブネット
- そのような
- スイート
- サポート
- システム
- 取る
- 取り
- タスク
- テクニック
- ターミナル
- エリア
- ジョイント
- アプリ環境に合わせて
- それによって
- 数千
- 三
- 介して
- 時間
- 役職
- タイトル
- 〜へ
- top
- トレーニング
- 訓練された
- 最適化の適用
- 数兆
- tv
- 典型的な
- 下
- 理解する
- アップロード
- URL
- つかいます
- ユーザー
- ユーザーインターフェース
- 活用
- 多様
- 広大な
- ベンダー
- 垂直
- ビデオ
- 詳しく見る
- バーチャル
- ビジョン
- 可視化
- ウェブ
- ウェブアプリケーション
- ウェブブラウザ
- ウェブサイト
- which
- ワイド
- 広い範囲
- 意志
- 以内
- Word
- 言葉
- ワーキング
- 作品
- でしょう
- You
- あなたの
- ゼファーネット
- ゾーン