Deze driedelige serie demonstreert het gebruik van Graph Neural Networks (GNN's) en Amazone Neptunus om filmaanbevelingen te genereren met behulp van de IMDb en Box Office Mojo Movies/TV/OTT licentieerbaar datapakket, dat een breed scala aan entertainmentmetadata biedt, waaronder meer dan 1 miljard gebruikersbeoordelingen; credits voor meer dan 11 miljoen cast- en crewleden; 9 miljoen film-, tv- en amusementstitels; en wereldwijde box office-rapportagegegevens uit meer dan 60 landen. Veel AWS media- en entertainmentklanten geven licenties voor IMDb-gegevens via AWS-gegevensuitwisseling om de ontdekking van inhoud te verbeteren en de betrokkenheid en retentie van klanten te vergroten.
Het volgende diagram illustreert de volledige architectuur die is geïmplementeerd als onderdeel van deze serie.
In Deel 1, bespraken we de toepassingen van GNN's en hoe we onze IMDb-gegevens kunnen transformeren en voorbereiden in een kennisgrafiek (KG). We hebben de data gedownload van AWS Data Exchange en verwerkt in AWS lijm om KG-bestanden te genereren. De KG-bestanden werden opgeslagen in Amazon eenvoudige opslagservice (Amazon S3) en vervolgens ingeladen Amazone Neptunus.
In Deel 2, hebben we gedemonstreerd hoe te gebruiken Amazon Neptunus ML (In Amazon Sage Maker) om de KG te trainen en KG-inbeddingen te maken.
In dit bericht laten we je zien hoe je onze getrainde KG-inbeddingen in Amazon S3 kunt toepassen op out-of-catalog search use cases met behulp van Amazon OpenSearch-service en AWS Lambda. U implementeert ook een lokale web-app voor een interactieve zoekervaring. Alle bronnen die in dit bericht worden gebruikt, kunnen met één worden gemaakt AWS Cloud-ontwikkelingskit (AWS CDK) opdracht zoals later in de post beschreven.
Achtergrond
Heeft u ooit per ongeluk een inhoudstitel doorzocht die niet beschikbaar was op een videostreamingplatform? Zo ja, dan zult u merken dat u in plaats van een lege pagina met zoekresultaten te zien krijgt, een lijst met films in hetzelfde genre, met cast- of crewleden. Dat is een zoekervaring buiten de catalogus!
Zoeken buiten de catalogus (OOC) is wanneer u een zoekopdracht invoert die geen directe overeenkomst heeft in een catalogus. Deze gebeurtenis komt vaak voor op videostreamingplatforms die gedurende een beperkte tijd constant een verscheidenheid aan inhoud van meerdere leveranciers en productiebedrijven kopen. De afwezigheid van relevantie of koppeling van de catalogus van een streamingbedrijf met grote kennisbanken van films en shows kan resulteren in een ondermaatse zoekervaring voor klanten die OOC-inhoud opvragen, waardoor de interactietijd met het platform wordt verkort. Deze toewijzing kan worden gedaan door frequente OOC-query's handmatig toe te wijzen aan catalogusinhoud of kan worden geautomatiseerd met behulp van machine learning (ML).
In dit bericht illustreren we hoe om te gaan met OOC door gebruik te maken van de kracht van de IMDb-dataset (de belangrijkste bron van wereldwijde entertainmentmetadata) en kennisgrafieken.
OpenSearch-service is een volledig beheerde service waarmee u gemakkelijk interactieve loganalyses, real-time toepassingsbewaking, zoeken op websites en meer kunt uitvoeren. OpenSearch is een open source, gedistribueerde zoek- en analysesuite afgeleid van Elasticsearch. OpenSearch Service biedt de nieuwste versies van OpenSearch, ondersteuning voor 19 versies van Elasticsearch (1.5 tot 7.10 versies), evenals visualisatiemogelijkheden aangedreven door OpenSearch Dashboards en Kibana (1.5 tot 7.10 versies). OpenSearch Service heeft momenteel tienduizenden actieve klanten met honderdduizenden clusters onder beheer die biljoenen verzoeken per maand verwerken. OpenSearch Service biedt kNN-zoekopdrachten, die de zoekfunctie kunnen verbeteren in gebruikssituaties zoals productaanbevelingen, fraudedetectie en beeld-, video- en sommige specifieke semantische scenario's zoals document- en zoekovereenkomstovereenkomst. Voor meer informatie over de op natuurlijke taal gebaseerde zoekfunctionaliteiten van OpenSearch Service, zie Een NLU-aangedreven zoektoepassing bouwen met Amazon SageMaker en de Amazon OpenSearch Service KNN-functie.
Overzicht oplossingen
In dit bericht presenteren we een oplossing om OOC-situaties aan te pakken door middel van op kennisgrafieken gebaseerde inbeddingszoekopdrachten met behulp van de k-naaste buur (kNN) zoekmogelijkheden van OpenSearch Service. De belangrijkste AWS-services die worden gebruikt om deze oplossing te implementeren, zijn OpenSearch Service, SageMaker, Lambda en Amazon S3.
Check out Deel 1 en Deel 2 van deze serie voor meer informatie over het maken van kennisgrafieken en GNN-inbedding met Amazon Neptune ML.
Onze OOC-oplossing gaat ervan uit dat u een gecombineerde KG heeft verkregen door het samenvoegen van een streamingbedrijf KG en IMDb KG. Dit kan worden gedaan door middel van eenvoudige tekstverwerkingstechnieken die titels matchen met het titeltype (film, serie, documentaire), cast en crew. Bovendien moet deze gezamenlijke kennisgrafiek worden getraind om inbeddingen van kennisgrafieken te genereren via de pijplijnen die worden genoemd in Deel 1 en Deel 2. Het volgende diagram illustreert een vereenvoudigde weergave van de gecombineerde KG.
Om de OOC-zoekfunctionaliteit met een eenvoudig voorbeeld te demonstreren, hebben we de IMDb-kennisgrafiek opgesplitst in klantcatalogus en out-of-customer-catalogus. We markeren de titels die "Toy Story" bevatten als een out-of-customer catalogusbron en de rest van de IMDb-kennisgrafiek als klantencatalogus. In een scenario waarin de klantencatalogus niet is verbeterd of samengevoegd met externe databases, zou een zoekopdracht naar "toy story" elke titel met de woorden "toy" of "story" in de metadata opleveren, met de OpenSearch-tekstzoekopdracht. Als de klantencatalogus was toegewezen aan IMDb, zou het gemakkelijker zijn om erachter te komen dat de zoekopdracht 'toy story' niet in de catalogus bestaat en dat de beste overeenkomsten in IMDb 'Toy Story', 'Toy Story 2', 'Toy Verhaal 3", "Toy Story 4" en "Charlie: Toy Story" in afnemende volgorde van relevantie met tekstovereenkomst. Om resultaten binnen de catalogus te krijgen voor elk van deze overeenkomsten, kunnen we via OpenSearch Service vijf films genereren die het dichtst in de buurt komen van klantcatalogusgebaseerde kNN-inbedding (van de gezamenlijke KG).
Een typische OOC-ervaring volgt de stroom die wordt geïllustreerd in de volgende afbeelding.
De volgende video toont de top vijf (aantal hits) OOC-resultaten voor de zoekopdracht "toy story" en relevante overeenkomsten in de klantencatalogus (aantal aanbevelingen).
Hier wordt de zoekopdracht gekoppeld aan de kennisgrafiek met behulp van tekstzoeken in OpenSearch Service. Vervolgens brengen we de inbedding van de tekstovereenkomst in kaart met de titels van de klantcatalogus met behulp van de OpenSearch Service kNN-index. Omdat de zoekopdracht van de gebruiker niet direct kan worden toegewezen aan de entiteiten van de kennisgrafiek, gebruiken we een aanpak in twee stappen om eerst op titel gebaseerde zoekopdrachtovereenkomsten te vinden en vervolgens items die vergelijkbaar zijn met de titel met behulp van kennisgrafiek-insluitingen. In de volgende secties doorlopen we het proces van het opzetten van een OpenSearch Service-cluster, het maken en uploaden van kennisgrafiekindexen en het implementeren van de oplossing als een webtoepassing.
Voorwaarden
Om deze oplossing te implementeren, moet u een AWS-account, bekendheid met OpenSearch Service, SageMaker, Lambda en AWS CloudFormatie, en de stappen in hebben voltooid Deel 1 en Deel 2 van deze serie.
Lanceer oplossingsbronnen
Het volgende architectuurdiagram toont de out-of-catalog workflow.
U gebruikt de AWS Cloud Development Kit (CDK) om de middelen te leveren die nodig zijn voor de OOC-zoektoepassingen. De code om deze bronnen te starten voert de volgende bewerkingen uit:
- Creëert een VPC voor de resources.
- Creëert een OpenSearch Service-domein voor de zoektoepassing.
- Creëert een Lambda-functie om filmmetadata en inbeddingen te verwerken en te laden naar OpenSearch Service-indexen (
**-ReadFromOpenSearchLambda-**
). - Creëert een Lambda-functie die de gebruikersvraag van een webapp als input neemt en relevante titels van OpenSearch retourneert (
**-LoadDataIntoOpenSearchLambda-**
). - Creëert een API Gateway die een extra beveiligingslaag toevoegt tussen de gebruikersinterface van de webapp en Lambda.
Voer de volgende stappen uit om aan de slag te gaan:
- Voer de code en notebooks uit vanaf Deel 1 en Deel 2.
- Navigeer naar de
part3-out-of-catalog
map in de coderepository.
- Start de AWS CDK vanaf de terminal met de opdracht
bash launch_stack.sh
. - Geef de twee S3-bestandspaden die in deel 2 zijn gemaakt als invoer op:
- Het S3-pad naar het CSV-bestand met ingesloten films.
- Het S3-pad naar het filmknooppuntbestand.
- Wacht totdat het script alle vereiste bronnen heeft ingericht en de uitvoering is voltooid.
- Kopieer de API Gateway-URL die het AWS CDK-script afdrukt en sla deze op. (Dit gebruiken we later voor de Streamlit-app).
Maak een OpenSearch-servicedomein
Ter illustratie: u maakt een zoekdomein op één beschikbaarheidszone in een r6g.large.search-instantie binnen een beveiligde VPC en subnet. Houd er rekening mee dat de best practice is om drie Beschikbaarheidszones in te stellen met één primaire en twee replica-exemplaren.
Maak een OpenSearch Service-index en upload gegevens
U gebruikt Lambda-functies (gemaakt met de opdracht AWS CDK launch stack) om de OpenSearch Service-indexen te maken. Voer de volgende stappen uit om het maken van de index te starten:
- Open op de Lambda-console het
LoadDataIntoOpenSearchLambda
Lambda-functie. - Op de test tabblad, kies test om gegevens te creëren en op te nemen in de OpenSearch Service-index.
De volgende code voor deze Lambda-functie is te vinden in part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
De functie voert de volgende taken uit:
- Laadt het IMDB KG-filmknooppuntbestand dat de metagegevens van de film en de bijbehorende inbeddingen bevat uit de S3-bestandspaden die zijn doorgegeven aan het bestand voor het maken van de stapel
launch_stack.sh
. - Voegt de twee invoerbestanden samen om één dataframe te maken voor het maken van indexen.
- Initialiseert de OpenSearch Service-client met behulp van de Boto3 Python-bibliotheek.
- Maakt twee indexen voor tekst (
ooc_text
) en zoeken naar kNN-inbedding (ooc_knn
) en bulkuploads van gegevens uit het gecombineerde dataframe via deingest_data_into_ops
functie.
Dit proces van gegevensopname duurt 5-10 minuten en kan worden gecontroleerd via de Amazon Cloud Watch logt in op de Monitoren tabblad van de Lambda-functie.
U maakt twee indexen om op tekst gebaseerd zoeken en zoeken op basis van kNN-insluiting mogelijk te maken. De tekstzoekopdracht koppelt de vrije zoekopdracht die de gebruiker invoert aan de titels van de film. De kNN-inbeddingszoekopdracht vindt de k films die het dichtst bij de beste tekstovereenkomst uit de latente ruimte van KG liggen om als uitvoer terug te keren.
Implementeer de oplossing als een lokale webtoepassing
Nu je een werkende tekstzoekfunctie en kNN-index op OpenSearch Service hebt, ben je klaar om een ML-aangedreven webapp te bouwen.
We maken gebruik van de streamlit
Python-pakket om een front-end illustratie voor deze applicatie te maken. De IMDb-Knowledge-Graph-Blog/part3-out-of-catalog/run_imdb_demo.py
Python-bestand in ons GitHub repo heeft de vereiste code om een lokale web-app te starten om deze mogelijkheid te verkennen.
Voer de volgende stappen uit om de code uit te voeren:
- Installeer de
streamlit
enaws_requests_auth
Python-pakket in uw lokale virtuele Python-omgeving door middel van de volgende opdrachten in uw terminal:
- Vervang de tijdelijke aanduiding voor de API Gateway-URL in de code als volgt door degene die is gemaakt door de AWS CDK:
api = '<ENTER URL OF THE API GATEWAY HERE>/opensearch-lambda?q={query_text}&numMovies={num_movies}&numRecs={num_recs}'
- Start de web-app met de opdracht
streamlit run run_imdb_demo.py
vanaf uw terminal.
Dit script start een Streamlit-webapp die toegankelijk is in uw webbrowser. De URL van de web-app kan worden opgehaald uit de scriptuitvoer, zoals weergegeven in de volgende schermafbeelding.
De app accepteert nieuwe zoekstrings, aantal treffers en aantal aanbevelingen. Het aantal hits komt overeen met hoeveel overeenkomende OOC-titels we uit de externe (IMDb) catalogus moeten halen. Het aantal aanbevelingen komt overeen met hoeveel naaste buren we moeten ophalen uit de klantencatalogus op basis van kNN-inbeddingszoekopdracht. Zie de volgende code:
Deze input (query, aantal hits en aanbevelingen) wordt doorgegeven aan de **-ReadFromOpenSearchLambda-**
Lambda-functie gemaakt door de AWS CDK via het API Gateway-verzoek. Dit gebeurt in de volgende functie:
De uitvoerresultaten van de Lambda-functie van OpenSearch Service worden doorgegeven aan API Gateway en worden weergegeven in de Streamlit-app.
Opruimen
U kunt alle bronnen die door de AWS CDK zijn gemaakt, verwijderen via de opdracht npx cdk destroy –app “python3 appy.py” --all
in hetzelfde geval (in de cdk
map) die werd gebruikt om de stapel te starten (zie de volgende schermafbeelding).
Conclusie
In dit bericht hebben we je laten zien hoe je een oplossing kunt maken voor OOC-zoeken met behulp van op tekst en kNN gebaseerd zoeken met behulp van SageMaker en OpenSearch Service. U hebt aangepaste kennisgrafiekmodelinsluitingen gebruikt om de dichtstbijzijnde buren in uw catalogus te vinden voor die van IMDb-titels. Je kunt nu bijvoorbeeld op andere streamingplatforms zoeken naar 'The Rings of Power', een fantasieserie ontwikkeld door Amazon Prime Video, en redeneren hoe ze het zoekresultaat hadden kunnen optimaliseren.
Voor meer informatie over het codevoorbeeld in dit bericht, zie het GitHub repo. Zie voor meer informatie over samenwerking met het Amazon ML Solutions Lab om vergelijkbare geavanceerde ML-applicaties te bouwen Amazon Machine Learning Solutions-lab. Ga voor meer informatie over licenties voor IMDb-datasets naar ontwikkelaar.imdb.com.
Over de auteurs
Divya Bhargavi is Data Scientist en Media and Entertainment Vertical Lead bij het Amazon ML Solutions Lab, waar ze hoogwaardige zakelijke problemen voor AWS-klanten oplost met behulp van Machine Learning. Ze werkt aan het begrijpen van afbeeldingen/video's, aanbevelingssystemen voor kennisgrafieken en gebruiksscenario's voor voorspellende advertenties.
Gaurav Rele is een datawetenschapper bij het Amazon ML Solution Lab, waar hij samenwerkt met AWS-klanten in verschillende branches om hun gebruik van machine learning en AWS Cloud-services te versnellen om hun zakelijke uitdagingen op te lossen.
Matthijs Rhodos is een datawetenschapper die ik werk in het Amazon ML Solutions Lab. Hij is gespecialiseerd in het bouwen van Machine Learning-pijplijnen met concepten als Natural Language Processing en Computer Vision.
Karan Sindwani is een Data Scientist bij Amazon ML Solutions Lab, waar hij deep learning-modellen bouwt en implementeert. Hij is gespecialiseerd op het gebied van computervisie. In zijn vrije tijd houdt hij van wandelen.
Soji Adeshin is een toegepaste wetenschapper bij AWS, waar hij op grafische neurale netwerken gebaseerde modellen ontwikkelt voor machine learning op grafische taken met toepassingen voor fraude en misbruik, kennisgrafieken, aanbevelingssystemen en levenswetenschappen. In zijn vrije tijd houdt hij van lezen en koken.
Vidya Sagar Ravipati is een manager bij het Amazon ML Solutions Lab, waar hij zijn enorme ervaring in grootschalige gedistribueerde systemen en zijn passie voor machine learning gebruikt om AWS-klanten in verschillende branches te helpen hun AI- en cloud-adoptie te versnellen.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. Toegang hier.
- Bron: 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
- Over
- misbruik
- versnellen
- Accepteert
- geraadpleegde
- over
- actieve
- Extra
- Daarnaast
- Voegt
- Adoptie
- ADVERTISING
- AI
- Alles
- Amazone
- Amazon ML Solutions-lab
- Amazone Neptunus
- Amazon Neptunus ML
- Amazon OpenSearch-service
- Amazon Sage Maker
- analytics
- en
- api
- gebruiken
- Aanvraag
- toepassingen
- toegepast
- Solliciteer
- nadering
- architectuur
- GEBIED
- geassocieerd
- geautomatiseerde
- beschikbaarheid
- Beschikbaar
- AWS
- AWS-gegevensuitwisseling
- gebaseerde
- omdat
- BEST
- tussen
- Miljard
- Box camera's
- box office
- browser
- bouw
- Gebouw
- bouwt
- bedrijfsdeskundigen
- mogelijkheden
- gevallen
- catalogus
- uitdagingen
- Kies
- klant
- Cloud
- cloud adoptie
- cloud-diensten
- TROS
- code
- samenwerken
- gecombineerde
- Bedrijven
- afstand
- Bedrijf
- compleet
- Voltooid
- computer
- Computer visie
- concepten
- troosten
- permanent
- bevat
- content
- komt overeen
- kon
- landen
- en je merk te creëren
- aangemaakt
- Wij creëren
- het aanmaken
- credits
- Actueel
- Op dit moment
- gewoonte
- klant
- Klantbinding
- Klanten
- gegevens
- Gegevensuitwisseling
- data scientist
- databanken
- datasets
- deep
- diepgaand leren
- tonen
- gedemonstreerd
- implementeren
- het inzetten
- ontplooit
- Afgeleid
- beschreven
- vernietigen
- Opsporing
- ontwikkelde
- Ontwikkeling
- ontwikkelt
- anders
- directe
- direct
- ontdekking
- besproken
- verdeeld
- gedistribueerde systemen
- document
- documentaire
- Nee
- domein
- elk
- gemakkelijker
- in staat stellen
- engagement
- verbeterde
- Enter
- Komt binnen
- Onstpanning
- entiteiten
- Milieu
- Event
- OOIT
- voorbeeld
- uitwisseling
- ervaring
- Verken
- extern
- extra
- naar
- vertrouwdheid
- FANTASIE
- Figuur
- Dien in
- Bestanden
- VIND DE PLEK DIE PERFECT VOOR JOU IS
- vondsten
- Voornaam*
- stroom
- volgend
- volgt
- gevonden
- bedrog
- fraude detectie
- veelvuldig
- vaak
- oppompen van
- geheel
- functie
- functionaliteiten
- functionaliteit
- functies
- poort
- voortbrengen
- krijgen
- Globaal
- diagram
- grafieken
- handvat
- headers
- hulp
- Hit
- Hits
- Hoe
- How To
- HTML
- HTTPS
- Honderden
- beeld
- uitvoeren
- geïmplementeerd
- verbeteren
- in
- Inclusief
- Laat uw omzet
- index
- indexen
- Index
- -industrie
- informatie
- invoer
- installeren
- instantie
- verkrijgen in plaats daarvan
- wisselwerking
- interactieve
- Interface
- betrekken
- IT
- artikelen
- sleutel
- kennis
- Kennis Grafiek
- laboratorium
- taal
- Groot
- grootschalig
- laatste
- lancering
- lanceert
- lagen
- leiden
- LEARN
- leren
- hefbomen
- Bibliotheek
- Vergunning
- Licenties
- Life
- Bio
- Beperkt
- Lijst
- laden
- lokaal
- machine
- machine learning
- MERKEN
- beheerd
- management
- manager
- handmatig
- veel
- kaart
- in kaart brengen
- Maps
- Mark
- Match
- matching
- Media
- Leden
- vermeld
- samen te voegen
- Metadata
- miljoen
- minuten
- ML
- model
- modellen
- bewaakt
- Grensverkeer
- Maand
- meer
- filmpje
- Films
- meervoudig
- Naturel
- Natural Language Processing
- buren
- Neptunus
- netwerkgebaseerd
- netwerken
- neurale netwerken
- New
- knooppunt
- aantal
- verkregen
- Aanbod
- Kantoor
- EEN
- open
- open source
- Operations
- geoptimaliseerde
- bestellen
- OS
- Overige
- pakket
- deel
- voorbij
- passie
- pad
- Uitvoeren
- presteert
- placeholder
- platform
- platforms
- Plato
- Plato gegevensintelligentie
- PlatoData
- dan
- Post
- energie
- aangedreven
- praktijk
- premier
- Voorbereiden
- presenteren
- primair
- Prime
- prints
- problemen
- Verwerkt
- verwerking
- Product
- productie
- biedt
- voorziening
- inkomsten
- doeleinden
- Python
- reeks
- waarderingen
- lezing
- klaar
- real-time
- reden
- Aanbeveling
- aanbevelingen
- relevantie
- relevante
- antwoord
- Rapportage
- bewaarplaats
- te vragen
- verzoeken
- nodig
- hulpbron
- Resources
- antwoord
- REST
- resultaat
- Resultaten
- behoud
- terugkeer
- Retourneren
- lopen
- lopend
- sagemaker
- dezelfde
- Bespaar
- scenario's
- WETENSCHAPPEN
- Wetenschapper
- Ontdek
- secties
- beveiligen
- veiligheid
- -Series
- service
- Diensten
- reeks
- het instellen van
- settings
- moet
- getoond
- Shows
- gelijk
- overeenkomsten
- Eenvoudig
- vereenvoudigd
- single
- situaties
- oplossing
- Oplossingen
- OPLOSSEN
- Lost op
- sommige
- bron
- Tussenruimte
- specialiseert
- specifiek
- spleet
- stack
- begin
- gestart
- state-of-the-art
- Stappen
- mediaopslag
- opgeslagen
- Verhaal
- streaming
- subnet
- dergelijk
- suite
- ondersteuning
- Systems
- Nemen
- neemt
- taken
- technieken
- terminal
- De
- De omgeving
- het gewricht
- hun
- daarbij
- duizenden kosten
- drie
- Door
- niet de tijd of
- Titel
- titels
- naar
- top
- Trainen
- getraind
- Transformeren
- triljoenen
- tv
- typisch
- voor
- begrip
- Uploaden
- URL
- .
- Gebruiker
- User Interface
- Gebruik makend
- variëteit
- groot
- vendors
- verticals
- Video
- Bekijk
- Virtueel
- visie
- visualisatie
- web
- web applicatie
- web browser
- Website
- welke
- breed
- Grote range
- wil
- binnen
- Woord
- woorden
- werkzaam
- Bedrijven
- zou
- You
- Your
- zephyrnet
- zones