Denna tredelade serie visar hur man använder grafiska neurala nätverk (GNN) och Amazon Neptunus för att generera filmrekommendationer med hjälp av IMDb och Box Office Mojo Movies/TV/OTT licenserbart datapaket, som tillhandahåller ett brett utbud av underhållningsmetadata, inklusive över 1 miljard användarbetyg; krediter för mer än 11 miljoner skådespelare och besättningsmedlemmar; 9 miljoner film-, TV- och underhållningstitlar; och globala kassarapportdata från mer än 60 länder. Många AWS media- och underhållningskunder licensierar IMDb-data genom AWS datautbyte för att förbättra innehållsupptäckten och öka kundernas engagemang och retention.
Följande diagram illustrerar den fullständiga arkitekturen som implementeras som en del av denna serie.
In del 1, diskuterade vi tillämpningarna av GNN och hur man omvandlar och förbereder våra IMDb-data till en kunskapsgraf (KG). Vi laddade ner data från AWS Data Exchange och bearbetade den AWS-lim för att generera KG-filer. KG-filerna lagrades i Amazon enkel lagringstjänst (Amazon S3) och sedan laddas in Amazon Neptunus.
In del 2, visade vi hur man använder Amazon Neptune ML (i Amazon SageMaker) för att träna KG och skapa KG-inbäddningar.
I det här inlägget går vi igenom hur du tillämpar våra tränade KG-inbäddningar i Amazon S3 för användningsfall utanför katalogen med hjälp av Amazon OpenSearch Service och AWS Lambda. Du distribuerar också en lokal webbapp för en interaktiv sökupplevelse. Alla resurser som används i det här inlägget kan skapas med en singel AWS Cloud Development Kit (AWS CDK) kommando som beskrivs senare i inlägget.
Bakgrund
Har du någonsin oavsiktligt sökt efter en innehållstitel som inte var tillgänglig på en videoströmningsplattform? Om ja, kommer du att upptäcka att istället för att möta en tom sökresultatsida, hittar du en lista med filmer i samma genre, med skådespelare eller besättningsmedlemmar. Det är en sökupplevelse utanför katalogen!
Sökning utanför katalogen (OOC) är när du anger en sökfråga som inte har någon direkt matchning i en katalog. Denna händelse inträffar ofta i videoströmningsplattformar som ständigt köper en mängd olika innehåll från flera leverantörer och produktionsbolag under en begränsad tid. Frånvaron av relevans eller kartläggning från ett streamingföretags katalog till stora kunskapsbaser av filmer och program kan resultera i en undermålig sökupplevelse för kunder som frågar efter OOC-innehåll, och därmed minska interaktionstiden med plattformen. Denna mappning kan göras genom att manuellt mappa frekventa OOC-frågor till kataloginnehåll eller kan automatiseras med hjälp av maskininlärning (ML).
I det här inlägget illustrerar vi hur man hanterar OOC genom att utnyttja kraften i IMDb-datauppsättningen (den främsta källan till global underhållningsmetadata) och kunskapsgrafer.
OpenSearch-tjänsten är en helt hanterad tjänst som gör det enkelt för dig att utföra interaktiv logganalys, applikationsövervakning i realtid, webbplatssökning och mer. OpenSearch är en öppen källkod, distribuerad sök- och analyssvit som kommer från Elasticsearch. OpenSearch Service erbjuder de senaste versionerna av OpenSearch, stöd för 19 versioner av Elasticsearch (1.5 till 7.10 versioner), samt visualiseringsmöjligheter som drivs av OpenSearch Dashboards och Kibana (1.5 till 7.10 versioner). OpenSearch Service har för närvarande tiotusentals aktiva kunder med hundratusentals kluster under ledning som behandlar biljoner förfrågningar per månad. OpenSearch Service erbjuder kNN-sökning, som kan förbättra sökningen i användningsfall som produktrekommendationer, bedrägeriupptäckt och bild, video och vissa specifika semantiska scenarier som dokument- och frågelikhet. För mer information om de naturliga språkförståelsedrivna sökfunktionerna i OpenSearch Service, se Bygga en NLU-driven sökapplikation med Amazon SageMaker och Amazon OpenSearch Service KNN-funktionen.
Lösningsöversikt
I det här inlägget presenterar vi en lösning för att hantera OOC-situationer genom kunskapsgrafbaserad inbäddningssökning med hjälp av k-nearest neighbor (kNN) sökfunktionerna i OpenSearch Service. De viktigaste AWS-tjänsterna som används för att implementera denna lösning är OpenSearch Service, SageMaker, Lambda och Amazon S3.
Checka ut del 1 och del 2 i den här serien för att lära dig mer om att skapa kunskapsgrafer och GNN-inbäddning med Amazon Neptune ML.
Vår OOC-lösning förutsätter att du har en kombinerad KG erhållen genom att slå samman ett streamingbolag KG och IMDb KG. Detta kan göras genom enkla textbehandlingstekniker som matchar titlar tillsammans med titeltypen (film, serie, dokumentär), skådespelare och besättning. Dessutom måste denna gemensamma kunskapsgraf tränas för att generera kunskapsgrafinbäddningar genom pipelines som nämns i del 1 och del 2. Följande diagram illustrerar en förenklad vy av den kombinerade KG.
För att demonstrera OOC-sökfunktionen med ett enkelt exempel delade vi upp IMDb-kunskapsdiagrammet i kundkatalog och utomkundkatalog. Vi markerar titlarna som innehåller "Toy Story" som en katalogresurs utanför kund och resten av IMDb-kunskapsdiagrammet som kundkatalog. I ett scenario där kundkatalogen inte förbättras eller slås samman med externa databaser, skulle en sökning på "leksakshistoria" returnera vilken titel som helst som har orden "leksak" eller "berättelse" i sin metadata, med OpenSearch-textsökningen. Om kundkatalogen mappades till IMDb skulle det vara lättare att ta reda på att frågan "toy story" inte finns i katalogen och att de bästa matchningarna i IMDb är "Toy Story", "Toy Story 2", "Toy" Story 3", "Toy Story 4" och "Charlie: Toy Story" i fallande ordning efter relevans med textmatchning. För att få resultat inom katalogen för var och en av dessa matchningar kan vi generera fem närmast filmer i kundkatalogbaserad kNN-inbäddning (av den gemensamma KG) likheten genom OpenSearch Service.
En typisk OOC-upplevelse följer flödet som illustreras i följande figur.
Följande video visar de fem bästa (antal träffar) OOC-resultat för frågan "toy story" och relevanta matchningar i kundkatalogen (antal rekommendationer).
Här matchas frågan mot kunskapsgrafen med hjälp av textsökning i OpenSearch Service. Vi mappar sedan inbäddningarna av textmatchningen till kundkatalogtitlarna med hjälp av OpenSearch Service kNN-index. Eftersom användarfrågan inte kan mappas direkt till kunskapsgrafentiteterna använder vi en tvåstegsmetod för att först hitta titelbaserade frågelikheter och sedan objekt som liknar titeln med hjälp av kunskapsdiagraminbäddningar. I följande avsnitt går vi igenom processen med att sätta upp ett OpenSearch Service-kluster, skapa och ladda upp kunskapsdiagramindex och distribuera lösningen som en webbapplikation.
Förutsättningar
För att implementera denna lösning bör du ha en AWS-konto, bekantskap med OpenSearch Service, SageMaker, Lambda och AWS molnformationoch har slutfört stegen i del 1 och del 2 av den här serien.
Starta lösningsresurser
Följande arkitekturdiagram visar arbetsflödet utanför katalogen.
Du kommer att använda AWS Cloud Development Kit (CDK) för att tillhandahålla de resurser som krävs för OOC-sökapplikationerna. Koden för att starta dessa resurser utför följande operationer:
- Skapar en VPC för resurserna.
- Skapar en OpenSearch Service-domän för sökapplikationen.
- Skapar en Lambda-funktion för att bearbeta och ladda filmmetadata och inbäddningar till OpenSearch Service-index (
**-ReadFromOpenSearchLambda-**
). - Skapar en Lambda-funktion som tar som indata användarfrågan från en webbapp och returnerar relevanta titlar från OpenSearch (
**-LoadDataIntoOpenSearchLambda-**
). - Skapar en API-gateway som lägger till ett extra lager av säkerhet mellan webbappens användargränssnitt och Lambda.
Gör så här för att komma igång:
- Kör koden och anteckningsböckerna från del 1 och del 2.
- Navigera till
part3-out-of-catalog
mapp i kodförrådet.
- Starta AWS CDK från terminalen med kommandot
bash launch_stack.sh
. - Ange de två S3-filsökvägarna som skapades i del 2 som indata:
- S3-sökvägen till CSV-filen för filminbäddning.
- S3-sökvägen till filmnodfilen.
- Vänta tills skriptet tillhandahåller alla nödvändiga resurser och körs klart.
- Kopiera API Gateway-URL som AWS CDK-skriptet skriver ut och spara den. (Vi använder detta för Streamlit-appen senare).
Skapa en OpenSearch-tjänstdomän
I illustrationssyfte skapar du en sökdomän på en tillgänglighetszon i en r6g.large.search-instans inom en säker VPC och undernät. Observera att bästa praxis skulle vara att ställa in på tre tillgänglighetszoner med en primär och två replikinstanser.
Skapa ett OpenSearch Service-index och ladda upp data
Du använder Lambda-funktioner (skapade med AWS CDK-startstackkommandot) för att skapa OpenSearch Service-index. Utför följande steg för att starta indexskapandet:
- Öppna lambdakonsolen
LoadDataIntoOpenSearchLambda
Lambda-funktion. - På Testa fliken, välj Testa för att skapa och mata in data i OpenSearch Service-index.
Följande kod till denna Lambda-funktion finns i part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
Funktionen utför följande uppgifter:
- Laddar IMDB KG-filmnodfilen som innehåller filmens metadata och dess associerade inbäddningar från S3-filsökvägarna som skickades till stackskapande filen
launch_stack.sh
. - Slår samman de två indatafilerna för att skapa en enda dataram för att skapa index.
- Initierar OpenSearch Service-klienten med Boto3 Python-biblioteket.
- Skapar två index för text (
ooc_text
) och kNN-inbäddningssökning (ooc_knn
) och massuppladdningar data från den kombinerade dataramen genomingest_data_into_ops
funktion.
Denna dataintagsprocess tar 5–10 minuter och kan övervakas genom amazoncloudwatch loggar på Övervakning fliken för lambdafunktionen.
Du skapar två index för att möjliggöra textbaserad sökning och kNN-inbäddningsbaserad sökning. Textsökningen mappar den fria frågan som användaren anger till filmens titlar. KNN-inbäddningssökningen hittar de k filmer som ligger närmast den bästa textmatchningen från KG latenta utrymmet för att returnera som utdata.
Implementera lösningen som en lokal webbapplikation
Nu när du har en fungerande textsökning och kNN-index på OpenSearch Service är du redo att bygga en ML-driven webbapp.
Vi använder streamlit
Python-paket för att skapa en front-end-illustration för denna applikation. De IMDb-Knowledge-Graph-Blog/part3-out-of-catalog/run_imdb_demo.py
Python-fil i vår GitHub repo har den nödvändiga koden för att starta en lokal webbapp för att utforska denna funktion.
Utför följande steg för att köra koden:
- installera
streamlit
ochaws_requests_auth
Python-paketet i din lokala virtuella Python-miljö genom för följande kommandon i din terminal:
- Byt ut platshållaren för API Gateway URL i koden enligt följande med den som skapats av AWS CDK:
api = '<ENTER URL OF THE API GATEWAY HERE>/opensearch-lambda?q={query_text}&numMovies={num_movies}&numRecs={num_recs}'
- Starta webbappen med kommandot
streamlit run run_imdb_demo.py
från din terminal.
Det här skriptet startar en Streamlit webbapp som kan nås i din webbläsare. Webbappens URL kan hämtas från skriptutdata, som visas i följande skärmdump.
Appen accepterar nya söksträngar, antal träffar och antal rekommendationer. Antalet träffar motsvarar hur många matchande OOC-titlar vi ska hämta från den externa (IMDb) katalogen. Antalet rekommendationer motsvarar hur många närmaste grannar vi ska hämta från kundkatalogen baserat på kNN inbäddningssökning. Se följande kod:
Denna indata (fråga, antal träffar och rekommendationer) skickas till **-ReadFromOpenSearchLambda-**
Lambdafunktion skapad av AWS CDK genom API Gateway-förfrågan. Detta görs i följande funktion:
Resultaten av Lambda-funktionen från OpenSearch Service skickas till API Gateway och visas i Streamlit-appen.
Städa upp
Du kan ta bort alla resurser som skapats av AWS CDK genom kommandot npx cdk destroy –app “python3 appy.py” --all
i samma instans (inuti cdk
mapp) som användes för att starta stacken (se följande skärmdump).
Slutsats
I det här inlägget visade vi dig hur du skapar en lösning för OOC-sökning med text och kNN-baserad sökning med SageMaker och OpenSearch Service. Du använde anpassade kunskapsgrafmodeller för att hitta närmaste grannar i din katalog till den för IMDb-titlar. Du kan nu till exempel söka efter "The Rings of Power", en fantasyserie utvecklad av Amazon Prime Video, på andra streamingplattformar och resonera hur de kunde ha optimerat sökresultatet.
Mer information om kodprovet i det här inlägget finns i GitHub repo. För att lära dig mer om att samarbeta med Amazon ML Solutions Lab för att bygga liknande toppmoderna ML-applikationer, se Amazon Machine Learning Solutions Lab. För mer information om licensiering av IMDb-datauppsättningar, besök developer.imdb.com.
Om författarna
Divya Bhargavi är datavetare och vertikal ledare för media och underhållning vid Amazon ML Solutions Lab, där hon löser affärsproblem med högt värde för AWS-kunder med hjälp av maskininlärning. Hon arbetar med bild-/videoförståelse, rekommendationssystem för kunskapsdiagram, användningsfall för prediktiv reklam.
Gaurav Rele är datavetare vid Amazon ML Solution Lab, där han arbetar med AWS-kunder över olika vertikaler för att påskynda deras användning av maskininlärning och AWS Cloud-tjänster för att lösa deras affärsutmaningar.
Matthew Rhodes är en dataforskare och jag arbetar i Amazon ML Solutions Lab. Han är specialiserad på att bygga pipelines för maskininlärning som involverar begrepp som Natural Language Processing och Computer Vision.
Karan Sindwani är en dataforskare på Amazon ML Solutions Lab, där han bygger och distribuerar modeller för djupinlärning. Han är specialiserad inom området datorseende. På fritiden tycker han om att vandra.
Soji Adeshina är en tillämpad vetenskapsman på AWS där han utvecklar grafiska neurala nätverksbaserade modeller för maskininlärning på grafuppgifter med applikationer för bedrägeri och missbruk, kunskapsdiagram, rekommendatorsystem och biovetenskap. På fritiden tycker han om att läsa och laga mat.
Vidya Sagar Ravipati är chef på Amazon ML Solutions Lab, där han drar nytta av sin stora erfarenhet av distribuerade system i stor skala och sin passion för maskininlärning för att hjälpa AWS-kunder i olika branschvertikaler att påskynda deras AI- och molnintroduktion.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: 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
- Om oss
- missbruk
- accelerera
- accepterar
- Accessed
- tvärs
- aktiv
- Annat
- Dessutom
- Lägger
- Antagande
- reklam
- AI
- Alla
- amason
- Amazon ML Solutions Lab
- Amazon Neptunus
- Amazon Neptune ML
- Amazon OpenSearch Service
- Amazon SageMaker
- analytics
- och
- api
- app
- Ansökan
- tillämpningar
- tillämpas
- Ansök
- tillvägagångssätt
- arkitektur
- OMRÅDE
- associerad
- Automatiserad
- tillgänglighet
- tillgänglig
- AWS
- AWS datautbyte
- baserat
- därför att
- BÄST
- mellan
- Miljarder
- Box
- box office
- webbläsare
- SLUTRESULTAT
- Byggnad
- bygger
- företag
- kapacitet
- fall
- katalog
- utmaningar
- Välja
- klient
- cloud
- moln adoption
- molntjänster
- kluster
- koda
- samarbeta
- kombinerad
- Företag
- företag
- Företagets
- fullborda
- Avslutade
- dator
- Datorsyn
- Begreppen
- Konsol
- ständigt
- innehåller
- innehåll
- motsvarar
- kunde
- länder
- skapa
- skapas
- Skapa
- skapande
- krediter
- Aktuella
- För närvarande
- beställnings
- kund
- Kundförlovning
- Kunder
- datum
- Datautbyte
- datavetare
- databaser
- datauppsättningar
- djup
- djupt lärande
- demonstrera
- demonstreras
- distribuera
- utplacera
- vecklas ut
- Härledd
- beskriven
- förstöra
- Detektering
- utvecklade
- Utveckling
- utvecklar
- olika
- rikta
- direkt
- Upptäckten
- diskuteras
- distribueras
- distribuerade system
- dokumentera
- dokumentär
- inte
- domän
- varje
- lättare
- möjliggöra
- ingrepp
- förbättrad
- ange
- Går in
- Underhållning
- enheter
- Miljö
- händelse
- NÅGONSIN
- exempel
- utbyta
- erfarenhet
- utforska
- extern
- extra
- vänd
- Förtrogenhet
- FANTASI
- Figur
- Fil
- Filer
- hitta
- fynd
- Förnamn
- flöda
- efter
- följer
- hittade
- bedrägeri
- spårning av bedrägerier
- frekvent
- ofta
- från
- fullständigt
- fungera
- funktionaliteter
- funktionalitet
- funktioner
- nätbryggan
- generera
- skaffa sig
- Välgörenhet
- diagram
- grafer
- hantera
- headers
- hjälpa
- Träffa
- träffar
- Hur ser din drömresa ut
- How To
- html
- HTTPS
- Hundratals
- bild
- genomföra
- genomföras
- förbättra
- in
- Inklusive
- Öka
- index
- index
- index
- industrin
- informationen
- ingång
- installera
- exempel
- istället
- interaktion
- interaktiva
- Gränssnitt
- engagera
- IT
- artikel
- Nyckel
- kunskap
- Kunskap Diagram
- lab
- språk
- Large
- storskalig
- senaste
- lansera
- lanserar
- lager
- leda
- LÄRA SIG
- inlärning
- hävstångs
- Bibliotek
- Licens
- Licens
- livet
- Life Sciences
- Begränsad
- Lista
- läsa in
- lokal
- Maskinen
- maskininlärning
- GÖR
- förvaltade
- ledning
- chef
- manuellt
- många
- karta
- kartläggning
- kartor
- markera
- Match
- matchande
- Media
- Medlemmar
- nämnts
- sammanslagning
- metadata
- miljon
- minuter
- ML
- modell
- modeller
- övervakas
- övervakning
- Månad
- mer
- film
- Filmer
- multipel
- Natural
- Naturlig språkbehandling
- grannar
- Neptune
- nätverksbaserade
- nätverk
- neurala nätverk
- Nya
- nod
- antal
- erhållna
- Erbjudanden
- Office
- ONE
- öppet
- öppen källkod
- Verksamhet
- optimerad
- beställa
- OS
- Övriga
- paket
- del
- Godkänd
- brinner
- bana
- Utföra
- utför
- platshållare
- plattform
- Plattformar
- plato
- Platon Data Intelligence
- PlatonData
- snälla du
- Inlägg
- kraft
- drivs
- praktiken
- Premier
- Förbered
- presentera
- primär
- Prime
- utskrifter
- problem
- process
- Bearbetad
- bearbetning
- Produkt
- Produktion
- ger
- tillhandahållande
- inköp
- syfte
- Python
- område
- betyg
- Läsning
- redo
- realtid
- Anledningen
- Rekommendation
- rekommendationer
- relevans
- relevanta
- svara
- Rapportering
- Repository
- begära
- förfrågningar
- Obligatorisk
- resurs
- Resurser
- respons
- REST
- resultera
- Resultat
- retentionstid
- avkastning
- återgår
- Körning
- rinnande
- sagemaker
- Samma
- Save
- scenarier
- VETENSKAPER
- Forskare
- Sök
- sektioner
- säkra
- säkerhet
- Serier
- service
- Tjänster
- in
- inställning
- inställningar
- skall
- visas
- Visar
- liknande
- Likheterna
- Enkelt
- förenklade
- enda
- situationer
- lösning
- Lösningar
- LÖSA
- Löser
- några
- Källa
- Utrymme
- specialiserat
- specifik
- delas
- stapel
- starta
- igång
- state-of-the-art
- Steg
- förvaring
- lagras
- Historia
- streaming
- undernät
- sådana
- svit
- stödja
- System
- Ta
- tar
- uppgifter
- tekniker
- terminal
- Smakämnen
- Området
- skarven
- deras
- vari
- tusentals
- tre
- Genom
- tid
- Titel
- titlar
- till
- topp
- Tåg
- tränad
- Förvandla
- biljoner
- tv
- typisk
- under
- förståelse
- uppladdning
- URL
- användning
- Användare
- Användargränssnitt
- Använda
- mängd
- Omfattande
- försäljare
- vertikaler
- Video
- utsikt
- Virtuell
- syn
- visualisering
- webb
- webbapplikation
- webbläsare
- Webbplats
- som
- bred
- Brett utbud
- kommer
- inom
- ord
- ord
- arbetssätt
- fungerar
- skulle
- Om er
- Din
- zephyrnet
- zoner