Cette série en trois parties montre comment utiliser les réseaux de neurones graphiques (GNN) et Amazone Neptune pour générer des recommandations de films à l'aide de IMDb et Box Office Mojo Films/TV/OTT un ensemble de données sous licence, qui fournit un large éventail de métadonnées de divertissement, y compris plus d'un milliard d'évaluations d'utilisateurs ; des crédits pour plus de 1 millions de membres de la distribution et de l'équipe ; 11 millions de titres de films, de télévision et de divertissement ; et des données de rapports sur le box-office mondial de plus de 9 pays. De nombreux clients de médias et de divertissement d'AWS autorisent les données IMDb via Échange de données AWS pour améliorer la découverte de contenu et accroître l'engagement et la fidélisation des clients.
Le schéma suivant illustre l'architecture complète mise en œuvre dans le cadre de cette série.
In Partie 1, nous avons discuté des applications des GNN et de la manière de transformer et de préparer nos données IMDb en un graphe de connaissances (KG). Nous avons téléchargé les données d'AWS Data Exchange et les avons traitées dans Colle AWS pour générer des fichiers KG. Les fichiers KG ont été stockés dans Service de stockage simple Amazon (Amazon S3) puis chargé dans Amazone Neptune.
In Partie 2, nous avons montré comment utiliser Amazon Neptune ML (en Amazon Sage Maker) pour entraîner le KG et créer des représentations vectorielles continues de KG.
Dans cet article, nous vous expliquons comment appliquer nos intégrations KG formées dans Amazon S3 à des cas d'utilisation de recherche hors catalogue à l'aide de Service Amazon OpenSearch ainsi que AWS Lambda. Vous déployez également une application Web locale pour une expérience de recherche interactive. Toutes les ressources utilisées dans cet article peuvent être créées à l'aide d'un seul Kit de développement AWS Cloud (AWS CDK) comme décrit plus loin dans l'article.
Contexte
Avez-vous déjà recherché par inadvertance un titre de contenu qui n'était pas disponible sur une plateforme de streaming vidéo ? Si oui, vous constaterez qu'au lieu de faire face à une page de résultats de recherche vierge, vous trouverez une liste de films du même genre, avec des acteurs ou des membres de l'équipe. C'est une expérience de recherche hors catalogue !
Recherche hors catalogue (OOC) correspond à la saisie d'une requête de recherche qui n'a pas de correspondance directe dans un catalogue. Cet événement se produit fréquemment sur les plateformes de streaming vidéo qui achètent constamment une variété de contenus auprès de plusieurs fournisseurs et sociétés de production pendant une durée limitée. L'absence de pertinence ou de mappage entre le catalogue d'une société de streaming et de vastes bases de connaissances de films et d'émissions peut entraîner une expérience de recherche médiocre pour les clients qui interrogent le contenu OOC, réduisant ainsi le temps d'interaction avec la plate-forme. Ce mappage peut être effectué en mappant manuellement les requêtes OOC fréquentes au contenu du catalogue ou peut être automatisé à l'aide de l'apprentissage automatique (ML).
Dans cet article, nous illustrons comment gérer l'OOC en utilisant la puissance de l'ensemble de données IMDb (la première source de métadonnées de divertissement mondiales) et des graphes de connaissances.
Service OpenSearch est un service entièrement géré qui vous permet d'effectuer facilement des analyses de journaux interactives, la surveillance des applications en temps réel, la recherche de sites Web, etc. OpenSearch est une suite open source de recherche et d'analyse distribuée dérivée d'Elasticsearch. OpenSearch Service offre les dernières versions d'OpenSearch, la prise en charge de 19 versions d'Elasticsearch (versions 1.5 à 7.10), ainsi que des capacités de visualisation optimisées par OpenSearch Dashboards et Kibana (versions 1.5 à 7.10). OpenSearch Service compte actuellement des dizaines de milliers de clients actifs avec des centaines de milliers de clusters sous gestion traitant des billions de demandes par mois. OpenSearch Service propose la recherche kNN, qui peut améliorer la recherche dans des cas d'utilisation tels que les recommandations de produits, la détection de fraude, l'image, la vidéo et certains scénarios sémantiques spécifiques tels que la similarité des documents et des requêtes. Pour plus d'informations sur les fonctionnalités de recherche basées sur la compréhension du langage naturel d'OpenSearch Service, reportez-vous à Création d'une application de recherche alimentée par NLU avec Amazon SageMaker et la fonctionnalité Amazon OpenSearch Service KNN.
Vue d'ensemble de la solution
Dans cet article, nous présentons une solution pour gérer les situations OOC grâce à la recherche d'intégration basée sur le graphe de connaissances en utilisant les capacités de recherche du k-plus proche voisin (kNN) du service OpenSearch. Les principaux services AWS utilisés pour mettre en œuvre cette solution sont OpenSearch Service, SageMaker, Lambda et Amazon S3.
Vérifier Partie 1 ainsi que Partie 2 de cette série pour en savoir plus sur la création de graphes de connaissances et l'intégration GNN à l'aide d'Amazon Neptune ML.
Notre solution OOC suppose que vous disposez d'un KG combiné obtenu en fusionnant une société de streaming KG et IMDb KG. Cela peut être fait grâce à des techniques simples de traitement de texte qui font correspondre les titres avec le type de titre (film, série, documentaire), les acteurs et l'équipe. De plus, ce graphe de connaissances conjoint doit être formé pour générer des intégrations de graphes de connaissances via les pipelines mentionnés dans Partie 1 ainsi que Partie 2. Le diagramme suivant illustre une vue simplifiée du KG combiné.
Pour démontrer la fonctionnalité de recherche OOC avec un exemple simple, nous avons divisé le graphe de connaissances IMDb en catalogue client et hors catalogue client. Nous marquons les titres qui contiennent "Toy Story" en tant que ressource de catalogue hors client et le reste du graphique de connaissances IMDb en tant que catalogue client. Dans un scénario où le catalogue client n'est pas amélioré ou fusionné avec des bases de données externes, une recherche de « histoire de jouet » renverrait tout titre contenant les mots « jouet » ou « histoire » dans ses métadonnées, avec la recherche de texte OpenSearch. Si le catalogue client était mappé sur IMDb, il serait plus facile de comprendre que la requête "histoire de jouets" n'existe pas dans le catalogue et que les principales correspondances dans IMDb sont "Toy Story", "Toy Story 2", "Toy Story 3". Story 4", "Toy Story XNUMX" et "Charlie : Toy Story" par ordre décroissant de pertinence avec la correspondance du texte. Pour obtenir des résultats dans le catalogue pour chacune de ces correspondances, nous pouvons générer cinq films les plus proches dans la similarité d'intégration kNN basée sur le catalogue client (du KG commun) via OpenSearch Service.
Une expérience OOC typique suit le flux illustré dans la figure suivante.
La vidéo suivante montre les cinq premiers résultats OOC (nombre de visites) pour la requête "histoire de jouet" et les correspondances pertinentes dans le catalogue client (nombre de recommandations).
Ici, la requête est mise en correspondance avec le graphe de connaissances à l'aide de la recherche de texte dans OpenSearch Service. Nous mappons ensuite les intégrations de la correspondance de texte avec les titres du catalogue client à l'aide de l'index kNN d'OpenSearch Service. Étant donné que la requête de l'utilisateur ne peut pas être directement mappée aux entités du graphe de connaissances, nous utilisons une approche en deux étapes pour d'abord rechercher les similitudes de requête basées sur le titre, puis les éléments similaires au titre à l'aide des représentations incorporées du graphe de connaissances. Dans les sections suivantes, nous passons en revue le processus de configuration d'un cluster OpenSearch Service, de création et de téléchargement d'index de graphes de connaissances et de déploiement de la solution en tant qu'application Web.
Pré-requis
Pour mettre en œuvre cette solution, vous devez disposer d'un Compte AWS, familiarité avec OpenSearch Service, SageMaker, Lambda et AWS CloudFormation, et avoir suivi les étapes de Partie 1 ainsi que Partie 2 de cette série.
Lancer les ressources de la solution
Le diagramme d'architecture suivant illustre le workflow hors catalogue.
Vous utiliserez le AWS Cloud Development Kit (CDK) pour provisionner les ressources requises pour les applications de recherche OOC. Le code pour lancer ces ressources effectue les opérations suivantes :
- Crée un VPC pour les ressources.
- Crée un domaine OpenSearch Service pour l'application de recherche.
- Crée une fonction Lambda pour traiter et charger les métadonnées et les intégrations de films dans les index du service OpenSearch (
**-ReadFromOpenSearchLambda-**
). - Crée une fonction Lambda qui prend en entrée la requête de l'utilisateur à partir d'une application Web et renvoie les titres pertinents à partir d'OpenSearch (
**-LoadDataIntoOpenSearchLambda-**
). - Crée une passerelle API qui ajoute une couche de sécurité supplémentaire entre l'interface utilisateur de l'application Web et Lambda.
Pour commencer, procédez comme suit:
- Exécutez le code et les blocs-notes à partir de Partie 1 ainsi que Partie 2.
- Accédez à la
part3-out-of-catalog
dossier dans le référentiel de code.
- Lancez le CDK AWS depuis le terminal avec la commande
bash launch_stack.sh
. - Fournissez les deux chemins de fichier S3 créés dans la partie 2 en entrée :
- Le chemin S3 vers le fichier CSV des incorporations de films.
- Le chemin S3 vers le fichier de nœud de film.
- Attendez que le script provisionne toutes les ressources requises et termine son exécution.
- Copiez l'URL de la passerelle API que le script AWS CDK imprime et enregistrez-la. (Nous l'utilisons plus tard pour l'application Streamlit).
Créer un domaine de service OpenSearch
À des fins d'illustration, vous créez un domaine de recherche sur une zone de disponibilité dans une instance r6g.large.search au sein d'un VPC et d'un sous-réseau sécurisés. Notez que la meilleure pratique consiste à configurer sur trois zones de disponibilité avec une instance principale et deux répliques.
Créer un index OpenSearch Service et télécharger des données
Vous utilisez les fonctions Lambda (créées à l'aide de la commande AWS CDK launch stack) pour créer les index du service OpenSearch. Pour démarrer la création de l'index, procédez comme suit :
- Sur la console Lambda, ouvrez le
LoadDataIntoOpenSearchLambda
Fonction Lambda. - Sur le Teste onglet, choisissez Teste pour créer et ingérer des données dans l'index OpenSearch Service.
Le code suivant de cette fonction Lambda se trouve dans part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
La fonction effectue les tâches suivantes :
- Charge le fichier de nœud de film IMDB KG qui contient les métadonnées du film et ses incorporations associées à partir des chemins de fichier S3 qui ont été transmis au fichier de création de pile
launch_stack.sh
. - Fusionne les deux fichiers d'entrée pour créer une seule trame de données pour la création d'index.
- Initialise le client OpenSearch Service à l'aide de la bibliothèque Boto3 Python.
- Crée deux index pour le texte (
ooc_text
) et la recherche d'intégration kNN (ooc_knn
) et télécharge en bloc les données de la base de données combinée via leingest_data_into_ops
la fonction.
Ce processus d'ingestion de données prend 5 à 10 minutes et peut être surveillé via le Amazon Cloud Watch se connecte sur Le Monitoring de la fonction Lambda.
Vous créez deux index pour activer la recherche basée sur le texte et la recherche basée sur l'intégration kNN. La recherche de texte mappe la requête de forme libre saisie par l'utilisateur sur les titres du film. La recherche d'intégration kNN trouve les k films les plus proches de la meilleure correspondance de texte à partir de l'espace latent KG à renvoyer en tant que sorties.
Déployer la solution en tant qu'application Web locale
Maintenant que vous disposez d'une recherche de texte et d'un index kNN fonctionnels sur OpenSearch Service, vous êtes prêt à créer une application Web alimentée par ML.
Nous utilisons les streamlit
Package Python pour créer une illustration frontale pour cette application. Les IMDb-Knowledge-Graph-Blog/part3-out-of-catalog/run_imdb_demo.py
Fichier Python dans notre GitHub repo dispose du code requis pour lancer une application Web locale afin d'explorer cette fonctionnalité.
Pour exécuter le code, procédez comme suit :
- Installez l'
streamlit
ainsi queaws_requests_auth
Package Python dans votre environnement Python virtuel local via les commandes suivantes dans votre terminal :
- Remplacez l'espace réservé pour l'URL API Gateway dans le code comme suit par celui créé par AWS CDK :
api = '<ENTER URL OF THE API GATEWAY HERE>/opensearch-lambda?q={query_text}&numMovies={num_movies}&numRecs={num_recs}'
- Lancez l'application Web avec la commande
streamlit run run_imdb_demo.py
depuis votre borne.
Ce script lance une application Web Streamlit accessible dans votre navigateur Web. L'URL de l'application Web peut être récupérée à partir de la sortie du script, comme illustré dans la capture d'écran suivante.
L'application accepte les nouvelles chaînes de recherche, le nombre de résultats et le nombre de recommandations. Le nombre de hits correspond au nombre de titres OOC correspondants que nous devrions récupérer dans le catalogue externe (IMDb). Le nombre de recommandations correspond au nombre de voisins les plus proches que nous devrions récupérer dans le catalogue client en fonction de la recherche d'intégration kNN. Voir le code suivant :
Cette entrée (requête, nombre d'accès et recommandations) est transmise au **-ReadFromOpenSearchLambda-**
Fonction Lambda créée par AWS CDK via la demande API Gateway. Cela se fait dans la fonction suivante :
Les résultats de sortie de la fonction Lambda du service OpenSearch sont transmis à API Gateway et affichés dans l'application Streamlit.
Nettoyer
Vous pouvez supprimer toutes les ressources créées par le CDK AWS via la commande npx cdk destroy –app “python3 appy.py” --all
dans le même cas (à l'intérieur du cdk
dossier) qui a été utilisé pour lancer la pile (voir la capture d'écran suivante).
Conclusion
Dans cet article, nous vous avons montré comment créer une solution pour la recherche OOC à l'aide d'une recherche textuelle et kNN à l'aide de SageMaker et d'OpenSearch Service. Vous avez utilisé des incorporations de modèles de graphes de connaissances personnalisés pour trouver les voisins les plus proches dans votre catalogue de celui des titres IMDb. Vous pouvez désormais, par exemple, rechercher "The Rings of Power", une série fantastique développée par Amazon Prime Video, sur d'autres plateformes de streaming et expliquer comment elles auraient pu optimiser le résultat de la recherche.
Pour plus d'informations sur l'exemple de code dans cet article, consultez le GitHub repo. Pour en savoir plus sur la collaboration avec Amazon ML Solutions Lab pour créer des applications ML de pointe similaires, consultez Laboratoire de solutions Amazon Machine Learning. Pour plus d'informations sur les licences d'ensembles de données IMDb, visitez développeur.imdb.com.
À propos des auteurs
Divya Bhargavi est Data Scientist et Media and Entertainment Vertical Lead au Amazon ML Solutions Lab, où elle résout des problèmes commerciaux de grande valeur pour les clients AWS à l'aide de Machine Learning. Elle travaille sur la compréhension des images/vidéos, les systèmes de recommandation de graphes de connaissances, les cas d'utilisation de la publicité prédictive.
Gaurav Relé est un Data Scientist au Amazon ML Solution Lab, où il travaille avec les clients AWS dans différents secteurs verticaux pour accélérer leur utilisation de l'apprentissage automatique et des services AWS Cloud pour résoudre leurs défis commerciaux.
Matthieu Rhodes est un Data Scientist qui travaille au Amazon ML Solutions Lab. Il se spécialise dans la construction de pipelines d'apprentissage automatique qui impliquent des concepts tels que le traitement du langage naturel et la vision par ordinateur.
Karan Sindwani est Data Scientist chez Amazon ML Solutions Lab, où il construit et déploie des modèles d'apprentissage en profondeur. Il est spécialisé dans le domaine de la vision par ordinateur. Dans ses temps libres, il aime faire de la randonnée.
Soji Adeshina est un scientifique appliqué chez AWS où il développe des modèles basés sur des réseaux de neurones graphiques pour l'apprentissage automatique sur des tâches de graphes avec des applications à la fraude et à l'abus, aux graphes de connaissances, aux systèmes de recommandation et aux sciences de la vie. Dans ses temps libres, il aime lire et cuisiner.
Vidya Sagar Ravipati est responsable chez Amazon ML Solutions Lab, où il met à profit sa vaste expérience des systèmes distribués à grande échelle et sa passion pour l'apprentissage automatique pour aider les clients AWS de différents secteurs verticaux à accélérer leur adoption de l'IA et du cloud.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- Platoblockchain. Intelligence métaverse Web3. Connaissance Amplifiée. Accéder ici.
- La source: 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
- A Propos
- abus
- accélérer
- Accepte
- accédé
- à travers
- infection
- Supplémentaire
- En outre
- Ajoute
- Adoption
- Numérique
- AI
- Tous
- Amazon
- Laboratoire de solutions Amazon ML
- Amazone Neptune
- Amazon Neptune ML
- Service Amazon OpenSearch
- Amazon Sage Maker
- analytique
- ainsi que
- api
- appli
- Application
- applications
- appliqué
- Appliquer
- une approche
- architecture
- Réservé
- associé
- Automatisation
- disponibilité
- disponibles
- AWS
- Échange de données AWS
- basé
- car
- LES MEILLEURS
- jusqu'à XNUMX fois
- Milliards
- Box
- box-office
- navigateur
- construire
- Développement
- construit
- la performance des entreprises
- capacités
- cas
- catalogue
- globaux
- Selectionnez
- client
- le cloud
- adoption du cloud
- services de cloud computing
- Grappe
- code
- collaboration
- combiné
- Sociétés
- Société
- De l'entreprise
- complet
- Complété
- ordinateur
- Vision par ordinateur
- concepts
- Console
- constamment
- contient
- contenu
- correspond
- pourriez
- d'exportation
- engendrent
- créée
- La création
- création
- Crédits
- Courant
- Lecture
- Customiser
- des clients
- L'engagement des clients
- Clients
- données
- D'échange de données
- Data Scientist
- bases de données
- ensembles de données
- profond
- l'apprentissage en profondeur
- démontrer
- démontré
- déployer
- déployer
- déploie
- Dérivé
- décrit
- détruire
- Détection
- développé
- Développement
- développe
- différent
- directement
- découverte
- discuté
- distribué
- systèmes distribués
- document
- documentaire
- Ne fait pas
- domaine
- chacun
- plus facilement
- permettre
- participation
- améliorée
- Entrer
- Entre dans
- Divertissement
- entités
- Environment
- événement
- JAMAIS
- exemple
- échange
- d'experience
- explorez
- externe
- supplémentaire
- Familiarité
- FANTAISIE
- Figure
- Déposez votre dernière attestation
- Fichiers
- Trouvez
- trouve
- Prénom
- flux
- Abonnement
- suit
- trouvé
- fraude
- détection de fraude
- fréquent
- fréquemment
- De
- d’étiquettes électroniques entièrement
- fonction
- fonctionnalités
- fonctions
- porte
- générer
- obtenez
- Global
- graphique
- graphiques
- manipuler
- têtes
- vous aider
- Frappé
- Hits
- Comment
- How To
- HTML
- HTTPS
- Des centaines
- image
- Mettre en oeuvre
- mis en œuvre
- améliorer
- in
- Y compris
- Améliore
- indice
- index
- Indices
- industrie
- d'information
- contribution
- installer
- instance
- plutôt ;
- l'interaction
- Interactif
- Interfaces
- impliquer
- IT
- articles
- ACTIVITES
- spécialisées
- Graphique connaissances
- laboratoire
- langue
- gros
- grande échelle
- Nouveautés
- lancer
- lance
- couche
- conduire
- APPRENTISSAGE
- apprentissage
- les leviers
- Bibliothèque
- Licence
- Licence
- VIE
- Life Sciences
- limité
- Liste
- charge
- locales
- click
- machine learning
- FAIT DU
- gérés
- gestion
- manager
- manuellement
- de nombreuses
- Localisation
- cartographie
- Map
- marque
- Match
- assorti
- Médias
- Membres
- mentionné
- fusion
- Métadonnées
- million
- Minutes
- ML
- modèle
- numériques jumeaux (digital twin models)
- surveillé
- Stack monitoring
- Mois
- PLUS
- film
- Films
- plusieurs
- Nature
- Traitement du langage naturel
- voisins
- Neptune
- basé sur le réseau
- réseaux
- les réseaux de neurones
- Nouveauté
- nœud
- nombre
- obtenu
- Offres Speciales
- Bureaux
- ONE
- ouvert
- open source
- Opérations
- optimisé
- de commander
- OS
- Autre
- paquet
- partie
- passé
- passion
- chemin
- Effectuer
- effectue
- espace réservé
- plateforme
- Plateformes
- Platon
- Intelligence des données Platon
- PlatonDonnées
- veuillez cliquer
- Post
- power
- alimenté
- pratique
- premier
- Préparer
- représentent
- primaire
- Prime
- impressions
- d'ouvrabilité
- processus
- Traité
- traitement
- Produit
- Vidéo
- fournit
- disposition
- achat
- des fins
- Python
- gamme
- votes
- en cours
- solutions
- en temps réel
- raison
- Recommandation
- recommandations
- pertinence
- pertinent
- répondre
- Rapports
- dépôt
- nécessaire
- demandes
- conditions
- ressource
- Resources
- réponse
- REST
- résultat
- Résultats
- rétention
- retourner
- Retours
- Courir
- pour le running
- sagemaker
- même
- Épargnez
- scénarios
- STARFLEET SCIENCES
- Scientifique
- Rechercher
- les sections
- sécurisé
- sécurité
- Série
- service
- Services
- set
- mise
- Paramétres
- devrait
- montré
- Spectacles
- similaires
- similitudes
- étapes
- simplifié
- unique
- situations
- sur mesure
- Solutions
- RÉSOUDRE
- Résout
- quelques
- Identifier
- Space
- spécialise
- groupe de neurones
- scission
- empiler
- Commencer
- j'ai commencé
- state-of-the-art
- Étapes
- storage
- stockée
- Histoire
- streaming
- sous-réseau
- tel
- suite
- Support
- Système
- Prenez
- prend
- tâches
- techniques
- terminal
- La
- La Région
- Le joint
- leur
- ainsi
- milliers
- trois
- Avec
- fiable
- Titre
- titres
- à
- top
- Train
- qualifié
- Transformer
- trillions
- tv
- débutante
- sous
- compréhension
- Téléchargement
- URL
- utilisé
- Utilisateur
- Interface utilisateur
- Utilisant
- variété
- Vaste
- fournisseurs
- verticales
- Vidéo
- Voir
- Salle de conférence virtuelle
- vision
- visualisation
- web
- application Web
- navigateur web
- Site Web
- qui
- large
- Large gamme
- sera
- dans les
- Word
- des mots
- de travail
- vos contrats
- pourra
- Vous n'avez
- Votre
- zéphyrnet
- zones