Denne tredelte serien viser hvordan du bruker grafiske nevrale nettverk (GNN) og Amazon Neptun for å generere filmanbefalinger ved hjelp av IMDb og Box Office Mojo Movies/TV/OTT lisensierbar datapakke, som gir et bredt spekter av underholdningsmetadata, inkludert over 1 milliard brukervurderinger; kreditter for mer enn 11 millioner rollebesetnings- og besetningsmedlemmer; 9 millioner film-, TV- og underholdningstitler; og globale billettkontorrapporteringsdata fra mer enn 60 land. Mange AWS medie- og underholdningskunder lisensierer IMDb-data gjennom AWS datautveksling for å forbedre innholdsoppdagelsen og øke kundeengasjement og -oppbevaring.
Følgende diagram illustrerer den komplette arkitekturen implementert som en del av denne serien.
In Del 1, diskuterte vi bruken av GNN-er og hvordan vi kan transformere og forberede IMDb-dataene våre til en kunnskapsgraf (KG). Vi lastet ned dataene fra AWS Data Exchange og behandlet dem inn AWS Lim for å generere KG-filer. KG-filene ble lagret i Amazon enkel lagringstjeneste (Amazon S3) og deretter lastet inn Amazon Neptun.
In Del 2, viste vi hvordan du bruker Amazon Neptune ML (i Amazon SageMaker) for å trene KG og lage KG-innbygginger.
I dette innlegget viser vi deg hvordan du bruker våre trente KG-innbygginger i Amazon S3 til brukstilfeller utenfor katalogen ved å bruke Amazon OpenSearch-tjeneste og AWS Lambda. Du distribuerer også en lokal nettapp for en interaktiv søkeopplevelse. Alle ressursene som brukes i dette innlegget kan opprettes ved hjelp av en enkelt AWS skyutviklingssett (AWS CDK) kommando som beskrevet senere i innlegget.
Bakgrunn
Har du noen gang utilsiktet søkt etter en innholdstittel som ikke var tilgjengelig på en videostrømmeplattform? Hvis ja, vil du finne at i stedet for å møte en tom søkeresultatside, finner du en liste over filmer i samme sjanger, med rollebesetning eller besetningsmedlemmer. Det er en søkeopplevelse utenfor katalogen!
Søk utenfor katalogen (OOC) er når du skriver inn et søk som ikke har noen direkte treff i en katalog. Denne hendelsen forekommer ofte i videostrømmeplattformer som hele tiden kjøper en rekke innhold fra flere leverandører og produksjonsselskaper i en begrenset periode. Fraværet av relevans eller kartlegging fra et strømmeselskaps katalog til store kunnskapsbaser av filmer og serier kan resultere i en underparet søkeopplevelse for kunder som spør etter OOC-innhold, og dermed redusere interaksjonstiden med plattformen. Denne kartleggingen kan gjøres ved å manuelt kartlegge hyppige OOC-spørringer til kataloginnhold eller kan automatiseres ved hjelp av maskinlæring (ML).
I dette innlegget illustrerer vi hvordan du håndterer OOC ved å bruke kraften til IMDb-datasettet (den fremste kilden til globale underholdningsmetadata) og kunnskapsgrafer.
OpenSearch-tjenesten er en fullstendig administrert tjeneste som gjør det enkelt for deg å utføre interaktiv logganalyse, applikasjonsovervåking i sanntid, nettstedsøk og mer. OpenSearch er en åpen kildekode, distribuert søke- og analysesuite hentet fra Elasticsearch. OpenSearch Service tilbyr de nyeste versjonene av OpenSearch, støtte for 19 versjoner av Elasticsearch (versjoner 1.5 til 7.10), samt visualiseringsfunksjoner drevet av OpenSearch Dashboards og Kibana (versjoner 1.5 til 7.10). OpenSearch Service har for tiden titusenvis av aktive kunder med hundretusenvis av klynger under administrasjon som behandler billioner av forespørsler per måned. OpenSearch Service tilbyr kNN-søk, som kan forbedre søk i brukstilfeller som produktanbefalinger, svindeldeteksjon og bilde, video og noen spesifikke semantiske scenarier som dokument- og spørringslikhet. For mer informasjon om de naturlige språkforståelsesdrevne søkefunksjonene til OpenSearch Service, se Bygge en NLU-drevet søkeapplikasjon med Amazon SageMaker og Amazon OpenSearch Service KNN-funksjonen.
Løsningsoversikt
I dette innlegget presenterer vi en løsning for å håndtere OOC-situasjoner gjennom kunnskapsgrafbasert innebyggingssøk ved å bruke k-nearest neighbor (kNN) søkefunksjonene til OpenSearch Service. De viktigste AWS-tjenestene som brukes til å implementere denne løsningen er OpenSearch Service, SageMaker, Lambda og Amazon S3.
Sjekk ut Del 1 og Del 2 av denne serien for å lære mer om å lage kunnskapsgrafer og GNN-innbygging ved hjelp av Amazon Neptune ML.
Vår OOC-løsning forutsetter at du har en kombinert KG oppnådd ved å slå sammen et strømmeselskap KG og IMDb KG. Dette kan gjøres gjennom enkle tekstbehandlingsteknikker som matcher titler sammen med titteltypen (film, serie, dokumentar), rollebesetning og crew. I tillegg må denne felles kunnskapsgrafen trenes opp til å generere kunnskapsgrafinnbygginger gjennom rørledningene nevnt i Del 1 og Del 2. Følgende diagram illustrerer en forenklet visning av den kombinerte KG.
For å demonstrere OOC-søkefunksjonaliteten med et enkelt eksempel, deler vi IMDb-kunnskapsgrafen inn i kundekatalog og ut-av-kundekatalog. Vi merker titlene som inneholder "Toy Story" som en katalogressurs utenfor kunde og resten av IMDb-kunnskapsgrafen som kundekatalog. I et scenario der kundekatalogen ikke er forbedret eller slått sammen med eksterne databaser, vil et søk etter "leketøyhistorie" returnere en hvilken som helst tittel som har ordene "leketøy" eller "historie" i metadataene, med tekstsøket i OpenSearch. Hvis kundekatalogen ble tilordnet til IMDb, ville det være lettere å finne ut at søket «toy story» ikke eksisterer i katalogen og at de beste treffene i IMDb er «Toy Story», «Toy Story 2», «Toy» Story 3," "Toy Story 4" og "Charlie: Toy Story" i synkende rekkefølge etter relevans med tekstmatch. For å få resultater innenfor katalogen for hver av disse kampene, kan vi generere fem nærmeste filmer i kundekatalogbasert kNN-innbygging (av felles KG) likhet gjennom OpenSearch Service.
En typisk OOC-opplevelse følger flyten illustrert i følgende figur.
Følgende video viser de fem beste (antall treff) OOC-resultatene for søket "leketøyshistorie" og relevante treff i kundekatalogen (antall anbefalinger).
Her matches spørringen mot kunnskapsgrafen ved hjelp av tekstsøk i OpenSearch Service. Vi kartlegger deretter innbyggingen av tekstmatchen til kundekatalogtitlene ved å bruke OpenSearch Service kNN-indeksen. Fordi brukerspørringen ikke kan tilordnes direkte til kunnskapsgrafenhetene, bruker vi en to-trinns tilnærming for først å finne tittelbaserte spørringslikheter og deretter elementer som ligner på tittelen ved å bruke kunnskapsgrafinnbygginger. I de følgende delene går vi gjennom prosessen med å sette opp en OpenSearch Service-klynge, opprette og laste opp kunnskapsgrafindekser og distribuere løsningen som en nettapplikasjon.
Forutsetninger
For å implementere denne løsningen bør du ha en AWS-konto, kjennskap til OpenSearch Service, SageMaker, Lambda og AWS skyformasjon, og har fullført trinnene i Del 1 og Del 2 av denne serien.
Start løsningsressurser
Følgende arkitekturdiagram viser arbeidsflyten utenfor katalogen.
Du vil bruke AWS Cloud Development Kit (CDK) til å klargjøre ressursene som kreves for OOC-søkeapplikasjonene. Koden for å starte disse ressursene utfører følgende operasjoner:
- Oppretter en VPC for ressursene.
- Oppretter et OpenSearch Service-domene for søkeapplikasjonen.
- Oppretter en Lambda-funksjon for å behandle og laste filmmetadata og innbygginger til OpenSearch Service-indekser (
**-ReadFromOpenSearchLambda-**
). - Oppretter en Lambda-funksjon som tar brukerspørringen som input fra en nettapp og returnerer relevante titler fra OpenSearch (
**-LoadDataIntoOpenSearchLambda-**
). - Oppretter en API-gateway som legger til et ekstra lag med sikkerhet mellom nettappens brukergrensesnitt og Lambda.
Gjør følgende for å komme i gang:
- Kjør koden og notatbøkene fra Del 1 og Del 2.
- Naviger til
part3-out-of-catalog
mappen i kodelageret.
- Start AWS CDK fra terminalen med kommandoen
bash launch_stack.sh
. - Oppgi de to S3-filbanene opprettet i del 2 som input:
- S3-banen til CSV-filen for innbygging av filmen.
- S3-banen til filmnodefilen.
- Vent til skriptet sørger for alle nødvendige ressurser og kjører ferdig.
- Kopier API-gateway-URLen som AWS CDK-skriptet skriver ut og lagre den. (Vi bruker dette til Streamlit-appen senere).
Opprett et OpenSearch-tjenestedomene
For illustrasjonsformål oppretter du et søkedomene på én tilgjengelighetssone i en r6g.large.search-forekomst innenfor en sikker VPC og undernett. Merk at den beste praksisen vil være å sette opp på tre tilgjengelighetssoner med én primær og to replikaforekomster.
Opprett en OpenSearch Service-indeks og last opp data
Du bruker Lambda-funksjoner (opprettet ved hjelp av AWS CDK-startstabelkommandoen) for å lage OpenSearch Service-indeksene. For å starte indeksopprettingen, fullfør følgende trinn:
- På Lambda-konsollen åpner du
LoadDataIntoOpenSearchLambda
Lambda-funksjon. - På Test kategorien, velg Test for å opprette og ta inn data i OpenSearch Service-indeksen.
Følgende kode til denne Lambda-funksjonen finner du i part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
Funksjonen utfører følgende oppgaver:
- Laster inn IMDB KG-filmnodefilen som inneholder filmens metadata og tilhørende innebygginger fra S3-filbanene som ble sendt til stabelopprettingsfilen
launch_stack.sh
. - Slår sammen de to inndatafilene for å lage en enkelt dataramme for indeksoppretting.
- Initialiserer OpenSearch Service-klienten ved å bruke Boto3 Python-biblioteket.
- Oppretter to indekser for tekst (
ooc_text
) og kNN-innbyggingssøk (ooc_knn
) og masseopplasting av data fra den kombinerte datarammen gjennomingest_data_into_ops
funksjon.
Denne datainntaksprosessen tar 5–10 minutter og kan overvåkes gjennom Amazon CloudWatch logger på Overvåking kategorien i Lambda-funksjonen.
Du oppretter to indekser for å aktivere tekstbasert søk og kNN-innbyggingsbasert søk. Tekstsøket kartlegger søket i fritt format brukeren skriver inn til titlene på filmen. KNN-innbyggingssøket finner de k filmene som er nærmest den beste tekstmatchen fra KG latent plass for å returnere som utdata.
Distribuer løsningen som en lokal nettapplikasjon
Nå som du har et fungerende tekstsøk og kNN-indeks på OpenSearch Service, er du klar til å bygge en ML-drevet nettapp.
Vi bruker streamlit
Python-pakke for å lage en front-end-illustrasjon for denne applikasjonen. De IMDb-Knowledge-Graph-Blog/part3-out-of-catalog/run_imdb_demo.py
Python-fil i vår GitHub repo har den nødvendige koden for å starte en lokal nettapp for å utforske denne muligheten.
For å kjøre koden, fullfør følgende trinn:
- Installer
streamlit
ogaws_requests_auth
Python-pakken i ditt lokale virtuelle Python-miljø gjennom for følgende kommandoer i terminalen din:
- Erstatt plassholderen for API Gateway URL i koden som følger med den som er opprettet av AWS CDK:
api = '<ENTER URL OF THE API GATEWAY HERE>/opensearch-lambda?q={query_text}&numMovies={num_movies}&numRecs={num_recs}'
- Start nettappen med kommandoen
streamlit run run_imdb_demo.py
fra terminalen din.
Dette skriptet lanserer en Streamlit-nettapp som kan nås i nettleseren din. URL-en til nettappen kan hentes fra skriptutdataene, som vist i følgende skjermbilde.
Appen godtar nye søkestrenger, antall treff og antall anbefalinger. Antall treff tilsvarer hvor mange matchende OOC-titler vi bør hente fra den eksterne (IMDb) katalogen. Antall anbefalinger tilsvarer hvor mange nærmeste naboer vi bør hente fra kundekatalogen basert på kNN-innbyggingssøk. Se følgende kode:
Denne inndata (forespørsel, antall treff og anbefalinger) sendes til **-ReadFromOpenSearchLambda-**
Lambda-funksjon opprettet av AWS CDK gjennom API Gateway-forespørselen. Dette gjøres i følgende funksjon:
Utdataresultatene fra Lambda-funksjonen fra OpenSearch Service sendes til API Gateway og vises i Streamlit-appen.
Rydd opp
Du kan slette alle ressursene som er opprettet av AWS CDK gjennom kommandoen npx cdk destroy –app “python3 appy.py” --all
i samme tilfelle (inne i cdk
mappe) som ble brukt til å starte stabelen (se følgende skjermbilde).
konklusjonen
I dette innlegget viste vi deg hvordan du lager en løsning for OOC-søk ved hjelp av tekst og kNN-basert søk ved hjelp av SageMaker og OpenSearch Service. Du brukte tilpassede kunnskapsgrafmodeller for å finne nærmeste naboer i katalogen din til IMDb-titler. Du kan nå for eksempel søke etter «The Rings of Power», en fantasyserie utviklet av Amazon Prime Video, på andre strømmeplattformer og begrunne hvordan de kunne ha optimalisert søkeresultatet.
For mer informasjon om kodeeksemplet i dette innlegget, se GitHub repo. For å lære mer om å samarbeide med Amazon ML Solutions Lab for å bygge lignende toppmoderne ML-applikasjoner, se Amazon Machine Learning Solutions Lab. For mer informasjon om lisensiering av IMDb-datasett, besøk developer.imdb.com.
Om forfatterne
Divya Bhargavi er dataforsker og vertikal leder for media og underholdning ved Amazon ML Solutions Lab, hvor hun løser forretningsproblemer med høy verdi for AWS-kunder ved hjelp av maskinlæring. Hun jobber med bilde-/videoforståelse, anbefalingssystemer for kunnskapsgrafer, brukstilfeller for prediktiv annonsering.
Gaurav Rele er dataforsker ved Amazon ML Solution Lab, hvor han jobber med AWS-kunder på tvers av forskjellige vertikaler for å akselerere bruken av maskinlæring og AWS Cloud-tjenester for å løse deres forretningsutfordringer.
Matthew Rhodes er en dataforsker jeg jobber i Amazon ML Solutions Lab. Han spesialiserer seg på å bygge Machine Learning-pipelines som involverer konsepter som Natural Language Processing og Computer Vision.
Karan Sindwani er dataforsker ved Amazon ML Solutions Lab, hvor han bygger og implementerer dyplæringsmodeller. Han har spesialisert seg på området datasyn. På fritiden liker han å gå tur.
Soji Adeshina er en Applied Scientist ved AWS hvor han utvikler grafiske nevrale nettverksbaserte modeller for maskinlæring på grafoppgaver med applikasjoner for svindel og misbruk, kunnskapsgrafer, anbefalingssystemer og biovitenskap. På fritiden liker han å lese og lage mat.
Vidya Sagar Ravipati er en leder ved Amazon ML Solutions Lab, hvor han utnytter sin store erfaring innen distribuerte systemer i stor skala og sin lidenskap for maskinlæring for å hjelpe AWS-kunder på tvers av ulike bransjevertikaler med å akselerere deres AI og skyadopsjon.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang 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 oss
- misbruk
- akselerere
- godtar
- aksesseres
- tvers
- aktiv
- Ytterligere
- I tillegg
- Legger
- Adopsjon
- Annonsering
- AI
- Alle
- Amazon
- Amazon ML Solutions Lab
- Amazon Neptun
- Amazon Neptune ML
- Amazon OpenSearch-tjeneste
- Amazon SageMaker
- analytics
- og
- api
- app
- Søknad
- søknader
- anvendt
- Påfør
- tilnærming
- arkitektur
- AREA
- assosiert
- Automatisert
- tilgjengelighet
- tilgjengelig
- AWS
- AWS datautveksling
- basert
- fordi
- BEST
- mellom
- Milliarder
- Eske
- box office
- nett~~POS=TRUNC leseren~~POS=HEADCOMP
- bygge
- Bygning
- bygger
- virksomhet
- evner
- saker
- katalog
- utfordringer
- Velg
- kunde
- Cloud
- skyadopsjon
- skytjenester
- Cluster
- kode
- samarbeider
- kombinert
- Selskaper
- Selskapet
- Selskapets
- fullføre
- Terminado
- datamaskin
- Datamaskin syn
- konsepter
- Konsoll
- stadig
- inneholder
- innhold
- tilsvarer
- kunne
- land
- skape
- opprettet
- Opprette
- skaperverket
- studiepoeng
- Gjeldende
- I dag
- skikk
- kunde
- Kundedeltakelse
- Kunder
- dato
- Datautveksling
- dataforsker
- databaser
- datasett
- dyp
- dyp læring
- demonstrere
- demonstrert
- utplassere
- utplasserings
- Distribueres
- Avledet
- beskrevet
- ødelegge
- Gjenkjenning
- utviklet
- Utvikling
- utvikler
- forskjellig
- direkte
- direkte
- Funnet
- diskutert
- distribueres
- distribuerte systemer
- dokument
- dokumentar
- ikke
- domene
- hver enkelt
- enklere
- muliggjøre
- engasjement
- forbedret
- Enter
- Går inn
- Entertainment
- enheter
- Miljø
- Event
- NOEN GANG
- eksempel
- utveksling
- erfaring
- utforske
- utvendig
- ekstra
- vendt
- Familiær
- FANTASI
- Figur
- filet
- Filer
- Finn
- funn
- Først
- flyten
- etter
- følger
- funnet
- svindel
- svindeloppdagelse
- hyppig
- ofte
- fra
- fullt
- funksjon
- funksjonalitet
- funksjonalitet
- funksjoner
- gateway
- generere
- få
- Global
- graf
- grafer
- håndtere
- overskrifter
- hjelpe
- hit
- Hits
- Hvordan
- Hvordan
- HTML
- HTTPS
- Hundrevis
- bilde
- iverksette
- implementert
- forbedre
- in
- Inkludert
- Øke
- indeks
- indekser
- Indekser
- industri
- informasjon
- inngang
- installere
- f.eks
- i stedet
- interaksjon
- interaktiv
- Interface
- involvere
- IT
- varer
- nøkkel
- kunnskap
- Kunnskap Graph
- lab
- Språk
- stor
- storskala
- siste
- lansere
- lanseringer
- lag
- føre
- LÆRE
- læring
- utnytter
- Bibliotek
- Tillatelse
- Lisensiering
- Life
- Life Sciences
- Begrenset
- Liste
- laste
- lokal
- maskin
- maskinlæring
- GJØR AT
- fikk til
- ledelse
- leder
- manuelt
- mange
- kart
- kartlegging
- Kart
- merke
- Match
- matchende
- Media
- medlemmer
- nevnt
- sammenslåing
- metadata
- millioner
- minutter
- ML
- modell
- modeller
- overvåket
- overvåking
- Måned
- mer
- film
- Filmer
- flere
- Naturlig
- Natural Language Processing
- naboer
- Neptune
- nettverksbasert
- nettverk
- nevrale nettverk
- Ny
- node
- Antall
- innhentet
- Tilbud
- Office
- ONE
- åpen
- åpen kildekode
- Drift
- optimalisert
- rekkefølge
- OS
- Annen
- pakke
- del
- bestått
- lidenskap
- banen
- Utfør
- utfører
- placeholder
- plattform
- Plattformer
- plato
- Platon Data Intelligence
- PlatonData
- vær så snill
- Post
- makt
- powered
- praksis
- premier
- Forbered
- presentere
- primære
- Prime
- utskrifter
- problemer
- prosess
- Bearbeidet
- prosessering
- Produkt
- Produksjon
- gir
- forsyning
- Kjøp
- formål
- Python
- område
- rangeringer
- Lesning
- klar
- sanntids
- grunnen til
- Anbefaling
- anbefalinger
- relevans
- relevant
- svare
- Rapportering
- Repository
- anmode
- forespørsler
- påkrevd
- ressurs
- Ressurser
- svar
- REST
- resultere
- Resultater
- oppbevaring
- retur
- avkastning
- Kjør
- rennende
- sagemaker
- samme
- Spar
- scenarier
- VITENSKAPER
- Forsker
- Søk
- seksjoner
- sikre
- sikkerhet
- Serien
- tjeneste
- Tjenester
- sett
- innstilling
- innstillinger
- bør
- vist
- Viser
- lignende
- likheter
- Enkelt
- forenklet
- enkelt
- situasjoner
- løsning
- Solutions
- LØSE
- løser
- noen
- kilde
- Rom
- spesialisert
- spesifikk
- splittet
- stable
- Begynn
- startet
- state-of-the-art
- Steps
- lagring
- lagret
- Story
- streaming
- subnett
- slik
- suite
- støtte
- Systemer
- Ta
- tar
- oppgaver
- teknikker
- terminal
- De
- Området
- leddet
- deres
- derved
- tusener
- tre
- Gjennom
- tid
- Tittel
- titler
- til
- topp
- Tog
- trent
- Transform
- billioner
- tv
- typisk
- etter
- forståelse
- Opplasting
- URL
- bruke
- Bruker
- Brukergrensesnitt
- utnytte
- variasjon
- enorme
- leverandører
- vertikaler
- video
- Se
- virtuelle
- syn
- visualisering
- web
- Webapplikasjon
- nettleser
- Nettsted
- hvilken
- bred
- Bred rekkevidde
- vil
- innenfor
- ord
- ord
- arbeid
- virker
- ville
- Du
- Din
- zephyrnet
- soner