Denne serie i tre dele demonstrerer, hvordan man bruger grafiske neurale netværk (GNN'er) og Amazon Neptun at generere filmanbefalinger ved hjælp af IMDb og Box Office Mojo Movies/TV/OTT licenserbar datapakke, som giver en bred vifte af underholdningsmetadata, inklusive over 1 milliard brugervurderinger; kreditter til mere end 11 millioner medvirkende og besætningsmedlemmer; 9 millioner film-, tv- og underholdningstitler; og globale box office-rapporteringsdata fra mere end 60 lande. Mange AWS medie- og underholdningskunder licenserer IMDb-data igennem AWS dataudveksling at forbedre indholdsopdagelsen og øge kundernes engagement og fastholdelse.
Følgende diagram illustrerer den komplette arkitektur implementeret som en del af denne serie.
In del 1, vi diskuterede anvendelserne af GNN'er og hvordan man transformerer og forbereder vores IMDb-data til en vidensgraf (KG). Vi downloadede dataene fra AWS Data Exchange og behandlede dem ind AWS Lim at generere KG-filer. KG-filerne blev gemt i Amazon Simple Storage Service (Amazon S3) og derefter indlæst Amazon Neptun.
In del 2, viste vi, hvordan man bruger Amazon Neptune ML (i Amazon SageMaker) for at træne KG og skabe KG-indlejringer.
I dette indlæg guider vi dig gennem, hvordan du anvender vores trænede KG-indlejringer i Amazon S3 til søgninger uden for kataloget vha. Amazon OpenSearch Service , AWS Lambda. Du implementerer også en lokal webapp til en interaktiv søgeoplevelse. Alle de ressourcer, der bruges i dette indlæg, kan oprettes ved hjælp af en enkelt AWS Cloud Development Kit (AWS CDK) kommando som beskrevet senere i indlægget.
Baggrund
Har du nogensinde utilsigtet søgt efter en indholdstitel, der ikke var tilgængelig på en videostreamingplatform? Hvis ja, vil du opdage, at i stedet for at stå over for en tom søgeresultatside, finder du en liste over film i samme genre med rollebesætning eller besætningsmedlemmer. Det er en søgeoplevelse uden for kataloget!
Søgning uden for kataloget (OOC) er, når du indtaster en søgeforespørgsel, der ikke har noget direkte match i et katalog. Denne begivenhed forekommer ofte i videostreamingplatforme, der konstant køber en række indhold fra flere leverandører og produktionsselskaber i en begrænset periode. Fraværet af relevans eller kortlægning fra et streamingfirmas katalog til store videnbaser af film og shows kan resultere i en underparret søgeoplevelse for kunder, der forespørger på OOC-indhold, og derved sænke interaktionstiden med platformen. Denne kortlægning kan udføres ved manuelt at kortlægge hyppige OOC-forespørgsler til katalogindhold eller kan automatiseres ved hjælp af maskinlæring (ML).
I dette indlæg illustrerer vi, hvordan man håndterer OOC ved at udnytte kraften i IMDb-datasættet (den førende kilde til globale underholdningsmetadata) og vidensgrafer.
OpenSearch Service er en fuldt administreret tjeneste, der gør det nemt for dig at udføre interaktive loganalyser, applikationsovervågning i realtid, webstedssøgning og meget mere. OpenSearch er en open source, distribueret søge- og analysepakke afledt af Elasticsearch. OpenSearch Service tilbyder de seneste versioner af OpenSearch, understøttelse af 19 versioner af Elasticsearch (1.5 til 7.10 versioner) samt visualiseringsfunktioner drevet af OpenSearch Dashboards og Kibana (1.5 til 7.10 versioner). OpenSearch Service har i øjeblikket titusindvis af aktive kunder med hundredtusindvis af klynger under ledelse, der behandler billioner af anmodninger om måneden. OpenSearch Service tilbyder kNN-søgning, som kan forbedre søgning i brugssager såsom produktanbefalinger, svindeldetektion og billede, video og nogle specifikke semantiske scenarier som dokument- og forespørgselslighed. For mere information om de naturlige sprogforståelsesdrevne søgefunktioner i OpenSearch Service, se Opbygning af en NLU-drevet søgeapplikation med Amazon SageMaker og Amazon OpenSearch Service KNN-funktionen.
Løsningsoversigt
I dette indlæg præsenterer vi en løsning til at håndtere OOC-situationer gennem videngrafbaseret indlejringssøgning ved hjælp af k-nearest neighbor (kNN) søgefunktionerne i OpenSearch Service. De vigtigste AWS-tjenester, der bruges til at implementere denne løsning, er OpenSearch Service, SageMaker, Lambda og Amazon S3.
Til betaling del 1 , del 2 af denne serie for at lære mere om at skabe vidensgrafer og GNN-indlejring ved hjælp af Amazon Neptune ML.
Vores OOC-løsning forudsætter, at du har en samlet KG opnået ved at fusionere et streamingselskab KG og IMDb KG. Dette kan gøres gennem simple tekstbehandlingsteknikker, der matcher titler sammen med titeltypen (film, serie, dokumentar), rollebesætning og besætning. Derudover skal denne fælles vidensgraf trænes til at generere vidensgrafindlejringer gennem pipelines nævnt i del 1 , del 2. Følgende diagram illustrerer et forenklet billede af den kombinerede KG.
For at demonstrere OOC-søgefunktionaliteten med et simpelt eksempel opdelte vi IMDb vidensgrafen i kundekatalog og ude af kundekatalog. Vi markerer de titler, der indeholder "Toy Story" som en katalogressource uden for kunden, og resten af IMDb vidensgrafen som kundekatalog. I et scenarie, hvor kundekataloget ikke er forbedret eller fusioneret med eksterne databaser, vil en søgning efter "legetøjshistorie" returnere enhver titel, der har ordene "legetøj" eller "historie" i sine metadata, med OpenSearch-tekstsøgningen. Hvis kundekataloget blev kortlagt til IMDb, ville det være lettere at finde ud af, at forespørgslen "toy story" ikke eksisterer i kataloget, og at de bedste resultater i IMDb er "Toy Story", "Toy Story 2", "Toy" Historie 3", "Toy Story 4" og "Charlie: Toy Story" i faldende rækkefølge efter relevans med tekstmatch. For at få resultater inden for kataloget for hver af disse kampe, kan vi generere fem nærmeste film i kundekatalog-baseret kNN-indlejring (af den fælles KG) lighed gennem OpenSearch Service.
En typisk OOC-oplevelse følger flowet illustreret i den følgende figur.
Den følgende video viser top fem (antal hits) OOC-resultater for forespørgslen "toy story" og relevante matches i kundekataloget (antal anbefalinger).
Her matches forespørgslen til vidensgrafen ved hjælp af tekstsøgning i OpenSearch Service. Vi kortlægger derefter indlejringerne af tekstmatchen til kundekatalogtitlerne ved hjælp af OpenSearch Service kNN-indekset. Fordi brugerforespørgslen ikke kan tilknyttes direkte til vidensgrafenhederne, bruger vi en to-trins tilgang til først at finde titelbaserede forespørgselsligheder og derefter elementer, der ligner titlen ved hjælp af vidensgrafindlejringer. I de følgende afsnit gennemgår vi processen med at opsætte en OpenSearch Service-klynge, oprette og uploade vidensgrafindekser og implementere løsningen som en webapplikation.
Forudsætninger
For at implementere denne løsning skal du have en AWS-konto, kendskab til OpenSearch Service, SageMaker, Lambda og AWS CloudFormation, og har gennemført trinene i del 1 , del 2 af denne serie.
Start løsningsressourcer
Følgende arkitekturdiagram viser arbejdsgangen uden for kataloget.
Du skal bruge AWS Cloud Development Kit (CDK) til at levere de ressourcer, der kræves til OOC-søgeapplikationerne. Koden til at starte disse ressourcer udfører følgende handlinger:
- Opretter en VPC for ressourcerne.
- Opretter et OpenSearch Service-domæne til søgeapplikationen.
- Opretter en Lambda-funktion til at behandle og indlæse filmmetadata og indlejringer til OpenSearch Service-indekser (
**-ReadFromOpenSearchLambda-**
). - Opretter en Lambda-funktion, der som input tager brugerforespørgslen fra en webapp og returnerer relevante titler fra OpenSearch (
**-LoadDataIntoOpenSearchLambda-**
). - Opretter en API-gateway, der tilføjer et ekstra lag af sikkerhed mellem webapp-brugergrænsefladen og Lambda.
For at komme i gang skal du udføre følgende trin:
- Start AWS CDK fra terminalen med kommandoen
bash launch_stack.sh
. - Angiv de to S3-filstier oprettet i del 2 som input:
- S3-stien til CSV-filen til filmindlejring.
- S3-stien til filmnodefilen.
- Vent, indtil scriptet klargør alle de nødvendige ressourcer og er færdig med at køre.
- Kopiér API-gateway-URL'en, som AWS CDK-scriptet udskriver, og gem det. (Vi bruger dette til Streamlit-appen senere).
Opret et OpenSearch-tjenestedomæne
Til illustrationsformål opretter du et søgedomæne på én tilgængelighedszone i en r6g.large.search-instans inden for et sikkert VPC og undernet. Bemærk, at den bedste praksis ville være at opsætte på tre tilgængelighedszoner med en primær og to replika-forekomster.
Opret et OpenSearch Service-indeks og upload data
Du bruger Lambda-funktioner (oprettet ved hjælp af AWS CDK-startstakkommandoen) til at oprette OpenSearch Service-indekserne. For at starte oprettelsen af indekset skal du udføre følgende trin:
- På Lambda-konsollen skal du åbne
LoadDataIntoOpenSearchLambda
Lambda funktion. - På Test fanebladet, vælg Test at oprette og indlæse data i OpenSearch Service-indekset.
Følgende kode til denne Lambda-funktion kan findes i part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
Funktionen udfører følgende opgaver:
- Indlæser IMDB KG-filmknudefilen, der indeholder filmens metadata og dens tilknyttede indlejringer fra S3-filstierne, der blev overført til stakoprettelsesfilen
launch_stack.sh
. - Fletter de to inputfiler for at skabe en enkelt dataramme til indeksoprettelse.
- Initialiserer OpenSearch Service-klienten ved hjælp af Boto3 Python-biblioteket.
- Opretter to indekser for tekst (
ooc_text
) og kNN-indlejringssøgning (ooc_knn
) og masseuploader data fra den kombinerede dataramme gennemingest_data_into_ops
funktion.
Denne dataindtagelsesproces tager 5-10 minutter og kan overvåges gennem amazoncloudwatch logger på Overvågning fanen i Lambda-funktionen.
Du opretter to indekser for at aktivere tekstbaseret søgning og kNN-indlejringsbaseret søgning. Tekstsøgningen kortlægger den frie forespørgsel, som brugeren indtaster, til filmens titler. kNN-indlejringssøgningen finder de k film, der er tættest på den bedste tekstmatch fra KG latente rum for at vende tilbage som output.
Implementer løsningen som en lokal webapplikation
Nu hvor du har en fungerende tekstsøgning og kNN-indeks på OpenSearch Service, er du klar til at bygge en ML-drevet webapp.
Vi bruger streamlit
Python-pakke til at skabe en frontend-illustration til denne applikation. Det IMDb-Knowledge-Graph-Blog/part3-out-of-catalog/run_imdb_demo.py
Python-fil i vores GitHub repo har den nødvendige kode til at starte en lokal webapp for at udforske denne funktion.
For at køre koden skal du udføre følgende trin:
- Installer
streamlit
,aws_requests_auth
Python-pakke i dit lokale virtuelle Python-miljø igennem for følgende kommandoer i din terminal:
- Erstat pladsholderen for API Gateway URL'en i koden som følger med den, der er oprettet af AWS CDK:
api = '<ENTER URL OF THE API GATEWAY HERE>/opensearch-lambda?q={query_text}&numMovies={num_movies}&numRecs={num_recs}'
- Start webappen med kommandoen
streamlit run run_imdb_demo.py
fra din terminal.
Dette script starter en Streamlit-webapp, som du kan få adgang til i din webbrowser. Web-appens URL kan hentes fra scriptoutputtet, som vist på det følgende skærmbillede.
Appen accepterer nye søgestrenge, antal hits og antal anbefalinger. Antallet af hits svarer til, hvor mange matchende OOC-titler vi skal hente fra det eksterne (IMDb) katalog. Antallet af anbefalinger svarer til, hvor mange nærmeste naboer vi skal hente fra kundekataloget baseret på kNN indlejringssøgning. Se følgende kode:
Dette input (forespørgsel, antal hits og anbefalinger) sendes til **-ReadFromOpenSearchLambda-**
Lambda-funktion oprettet af AWS CDK gennem API Gateway-anmodningen. Dette gøres i følgende funktion:
Outputresultaterne af Lambda-funktionen fra OpenSearch Service sendes til API Gateway og vises i Streamlit-appen.
Ryd op
Du kan slette alle ressourcer oprettet af AWS CDK gennem kommandoen npx cdk destroy –app “python3 appy.py” --all
i samme tilfælde (inde i cdk
mappe), der blev brugt til at starte stakken (se følgende skærmbillede).
Konklusion
I dette indlæg viste vi dig, hvordan du opretter en løsning til OOC-søgning ved hjælp af tekst- og kNN-baseret søgning ved hjælp af SageMaker og OpenSearch Service. Du brugte tilpassede vidensgrafmodeller til at finde nærmeste naboer i dit katalog til IMDb-titler. Du kan nu for eksempel søge efter "The Rings of Power", en fantasy-serie udviklet af Amazon Prime Video, på andre streamingplatforme og begrunde, hvordan de kunne have optimeret søgeresultatet.
For mere information om kodeeksemplet i dette indlæg, se GitHub repo. For at lære mere om at samarbejde med Amazon ML Solutions Lab for at bygge lignende avancerede ML-applikationer, se Amazon Machine Learning Solutions Lab. For mere information om licensering af IMDb-datasæt, besøg developer.imdb.com.
Om forfatterne
Divya Bhargavi er Data Scientist og Media and Entertainment Vertical Lead hos Amazon ML Solutions Lab, hvor hun løser forretningsproblemer af høj værdi for AWS-kunder ved hjælp af Machine Learning. Hun arbejder med billed-/videoforståelse, vidensgrafanbefalingssystemer, prædiktiv annonceringsbrug.
Gaurav Rele er dataforsker ved Amazon ML Solution Lab, hvor han arbejder med AWS-kunder på tværs af forskellige vertikaler for at accelerere deres brug af machine learning og AWS Cloud-tjenester til at løse deres forretningsmæssige udfordringer.
Matthew Rhodes er dataforsker, jeg arbejder i Amazon ML Solutions Lab. Han har specialiseret sig i at bygge Machine Learning pipelines, der involverer begreber som Natural Language Processing og Computer Vision.
Karan Sindwani er Data Scientist hos Amazon ML Solutions Lab, hvor han bygger og implementerer deep learning-modeller. Han har specialiseret sig inden for computersyn. I sin fritid nyder han at vandre.
Soji Adeshina er en Applied Scientist hos AWS, hvor han udvikler grafiske neurale netværksbaserede modeller til maskinlæring på grafopgaver med applikationer til bedrageri og misbrug, vidensgrafer, anbefalingssystemer og biovidenskab. I sin fritid nyder han at læse og lave mad.
Vidya Sagar Ravipati er leder hos Amazon ML Solutions Lab, hvor han udnytter sin store erfaring med distribuerede systemer i stor skala og sin passion for maskinlæring til at hjælpe AWS-kunder på tværs af forskellige brancher med at accelerere deres AI og cloud-adoption.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang her.
- Kilde: 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
- misbrug
- fremskynde
- accepterer
- af udleverede
- tværs
- aktiv
- Yderligere
- Derudover
- Tilføjer
- Vedtagelse
- Reklame
- AI
- Alle
- Amazon
- Amazon ML Solutions Lab
- Amazon Neptun
- Amazon Neptune ML
- Amazon OpenSearch Service
- Amazon SageMaker
- analytics
- ,
- api
- app
- Anvendelse
- applikationer
- anvendt
- Indløs
- tilgang
- arkitektur
- OMRÅDE
- forbundet
- Automatiseret
- tilgængelighed
- til rådighed
- AWS
- AWS dataudveksling
- baseret
- fordi
- BEDSTE
- mellem
- Billion
- Boks
- box office
- browser
- bygge
- Bygning
- bygger
- virksomhed
- kapaciteter
- tilfælde
- katalog
- udfordringer
- Vælg
- kunde
- Cloud
- cloud adoption
- cloud-tjenester
- Cluster
- kode
- samarbejde
- kombineret
- Virksomheder
- selskab
- Selskabs
- fuldføre
- Afsluttet
- computer
- Computer Vision
- begreber
- Konsol
- konstant
- indeholder
- indhold
- svarer
- kunne
- lande
- skabe
- oprettet
- Oprettelse af
- skabelse
- Medvirkende
- Nuværende
- For øjeblikket
- skik
- kunde
- Kundeforlovelse
- Kunder
- data
- Dataudveksling
- dataforsker
- databaser
- datasæt
- dyb
- dyb læring
- demonstrere
- demonstreret
- indsætte
- implementering
- udruller
- Afledt
- beskrevet
- ødelægge
- Detektion
- udviklet
- Udvikling
- udvikler
- forskellige
- direkte
- direkte
- opdagelse
- drøftet
- distribueret
- distribuerede systemer
- dokumentet
- dokumentarfilm
- Er ikke
- domæne
- hver
- lettere
- muliggøre
- engagement
- forbedret
- Indtast
- Går ind i
- Underholdning
- enheder
- Miljø
- begivenhed
- NOGENSINDE
- eksempel
- udveksling
- erfaring
- udforske
- ekstern
- ekstra
- vender
- Kendskab
- FANTASI
- Figur
- File (Felt)
- Filer
- Finde
- fund
- Fornavn
- flow
- efter
- følger
- fundet
- bedrageri
- bedrageri afsløring
- hyppig
- hyppigt
- fra
- fuldt ud
- funktion
- funktionaliteter
- funktionalitet
- funktioner
- gateway
- generere
- få
- Global
- graf
- grafer
- håndtere
- headers
- hjælpe
- Hit
- Hits
- Hvordan
- How To
- HTML
- HTTPS
- Hundreder
- billede
- gennemføre
- implementeret
- Forbedre
- in
- Herunder
- Forøg
- indeks
- indekser
- Indeks
- industrien
- oplysninger
- indgang
- installere
- instans
- i stedet
- interaktion
- interaktiv
- grænseflade
- involvere
- IT
- Varer
- Nøgle
- viden
- Viden Graph
- lab
- Sprog
- stor
- storstilet
- seneste
- lancere
- lanceringer
- lag
- føre
- LÆR
- læring
- Udnytter
- Bibliotek
- Licens
- Licenser
- Livet
- Life Sciences
- Limited
- Liste
- belastning
- lokale
- maskine
- machine learning
- maerker
- lykkedes
- ledelse
- leder
- manuelt
- mange
- kort
- kortlægning
- Maps
- markere
- Match
- matchende
- Medier
- Medlemmer
- nævnte
- sammenlægning
- Metadata
- million
- minutter
- ML
- model
- modeller
- overvåges
- overvågning
- Måned
- mere
- film
- Film
- flere
- Natural
- Natural Language Processing
- naboer
- Neptune
- netværksbaseret
- net
- neurale netværk
- Ny
- node
- nummer
- opnået
- Tilbud
- Office
- ONE
- åbent
- open source
- Produktion
- optimeret
- ordrer
- OS
- Andet
- pakke
- del
- Bestået
- lidenskab
- sti
- Udfør
- udfører
- pladsholder
- perron
- Platforme
- plato
- Platon Data Intelligence
- PlatoData
- Vær venlig
- Indlæg
- magt
- strøm
- praksis
- premier
- Forbered
- præsentere
- primære
- Prime
- udskrifter
- problemer
- behandle
- Behandlet
- forarbejdning
- Produkt
- produktion
- giver
- bestemmelse
- køb
- formål
- Python
- rækkevidde
- ratings
- Læsning
- klar
- realtid
- grund
- Anbefaling
- anbefalinger
- relevans
- relevant
- svar
- Rapportering
- Repository
- anmode
- anmodninger
- påkrævet
- ressource
- Ressourcer
- svar
- REST
- resultere
- Resultater
- tilbageholdelse
- afkast
- afkast
- Kør
- kører
- sagemaker
- samme
- Gem
- scenarier
- VIDENSKABER
- Videnskabsmand
- Søg
- sektioner
- sikker
- sikkerhed
- Series
- tjeneste
- Tjenester
- sæt
- indstilling
- indstillinger
- bør
- vist
- Shows
- lignende
- ligheder
- Simpelt
- forenklet
- enkelt
- situationer
- løsninger
- Løsninger
- SOLVE
- Løser
- nogle
- Kilde
- Space
- specialiseret
- specifikke
- delt
- stable
- starte
- påbegyndt
- state-of-the-art
- Steps
- opbevaring
- opbevaret
- Story
- streaming
- subnet
- sådan
- suite
- support
- Systemer
- Tag
- tager
- opgaver
- teknikker
- terminal
- Området
- leddet
- deres
- derved
- tusinder
- tre
- Gennem
- tid
- Titel
- titler
- til
- top
- Tog
- uddannet
- Transform
- billioner
- tv
- typisk
- under
- forståelse
- Uploading
- URL
- brug
- Bruger
- Brugergrænseflade
- Ved hjælp af
- række
- Vast
- leverandører
- vertikaler
- video
- Specifikation
- Virtual
- vision
- visualisering
- web
- Webapplikation
- webbrowser
- Hjemmeside
- som
- bred
- Bred rækkevidde
- vilje
- inden for
- ord
- ord
- arbejder
- virker
- ville
- Du
- Din
- zephyrnet
- zoner