Această serie de trei părți demonstrează cum se utilizează rețelele neuronale grafice (GNN) și Amazon Neptun pentru a genera recomandări de filme folosind IMDb și Box Office Mojo Movies/TV/OTT pachet de date cu licență, care oferă o gamă largă de metadate de divertisment, inclusiv peste 1 miliard de evaluări ale utilizatorilor; credite pentru mai mult de 11 milioane de membri ai distribuției și echipajului; 9 milioane de titluri de filme, TV și divertisment; și date de raportare la box office la nivel mondial din peste 60 de țări. Mulți clienți media și divertisment AWS licențiază datele IMDb prin Schimb de date AWS pentru a îmbunătăți descoperirea de conținut și pentru a crește implicarea și reținerea clienților.
Următoarea diagramă ilustrează arhitectura completă implementată ca parte a acestei serii.
In Partea 1, am discutat despre aplicațiile GNN-urilor și cum să transformăm și să pregătim datele noastre IMDb într-un grafic de cunoaștere (KG). Am descărcat datele de la AWS Data Exchange și le-am procesat AWS Adeziv pentru a genera fișiere KG. Fișierele KG au fost stocate în Serviciul Amazon de stocare simplă (Amazon S3) și apoi încărcat Amazon Neptun.
In Partea 2, am demonstrat cum se utilizează Amazon Neptune ML (În Amazon SageMaker) pentru a antrena KG-ul și a crea înglobări KG.
În această postare, vă prezentăm cum să aplicați înglobările noastre KG instruite în Amazon S3 la cazurile de utilizare ale căutării în afara catalogului folosind Serviciul Amazon OpenSearch și AWS Lambdas. De asemenea, implementați o aplicație web locală pentru o experiență de căutare interactivă. Toate resursele utilizate în această postare pot fi create folosind un singur Kit AWS Cloud Development (AWS CDK), așa cum este descris mai târziu în postare.
Context
Ați căutat vreodată din neatenție un titlu de conținut care nu era disponibil într-o platformă de streaming video? Dacă da, veți descoperi că, în loc să vă confruntați cu o pagină goală cu rezultatele căutării, veți găsi o listă de filme din același gen, cu membri ai distribuției sau ai echipajului. Aceasta este o experiență de căutare în afara catalogului!
Căutare în afara catalogului (OOC) este atunci când introduceți o interogare de căutare care nu are potrivire directă într-un catalog. Acest eveniment are loc frecvent în platformele de streaming video care achiziționează în mod constant o varietate de conținut de la mai mulți furnizori și companii de producție pentru un timp limitat. Absența relevanței sau a cartografierii din catalogul unei companii de streaming către bazele mari de cunoștințe despre filme și emisiuni poate duce la o experiență de căutare inferioară pentru clienții care interoghează conținut OOC, reducând astfel timpul de interacțiune cu platforma. Această mapare poate fi realizată prin maparea manuală a interogărilor OOC frecvente la conținutul catalogului sau poate fi automatizată folosind învățarea automată (ML).
În această postare, ilustrăm cum să gestionăm OOC utilizând puterea setului de date IMDb (sursa principală de metadate de divertisment global) și graficele de cunoștințe.
Serviciul OpenSearch este un serviciu complet gestionat care vă ajută să efectuați analize interactive de jurnal, monitorizare în timp real a aplicațiilor, căutare pe site și multe altele. OpenSearch este o suită de căutare și analiză distribuită, cu sursă deschisă, derivată din Elasticsearch. Serviciul OpenSearch oferă cele mai recente versiuni de OpenSearch, suport pentru 19 versiuni de Elasticsearch (versiunile 1.5 până la 7.10), precum și capabilități de vizualizare alimentate de OpenSearch Dashboards și Kibana (versiunile 1.5 până la 7.10). OpenSearch Service are în prezent zeci de mii de clienți activi, cu sute de mii de clustere aflate în gestiune, care procesează trilioane de solicitări pe lună. Serviciul OpenSearch oferă căutare kNN, care poate îmbunătăți căutarea în cazuri de utilizare, cum ar fi recomandări de produse, detectarea fraudelor și imagini, videoclipuri și unele scenarii semantice specifice, cum ar fi similaritatea documentelor și a interogărilor. Pentru mai multe informații despre funcționalitățile de căutare bazate pe înțelegerea limbajului natural ale Serviciului OpenSearch, consultați Crearea unei aplicații de căutare bazate pe NLU cu Amazon SageMaker și caracteristica Amazon OpenSearch Service KNN.
Prezentare generală a soluțiilor
În această postare, prezentăm o soluție pentru a gestiona situațiile OOC prin căutarea prin încorporare bazată pe grafice de cunoștințe, folosind capabilitățile de căutare k-nearest neighbor (kNN) ale serviciului OpenSearch. Serviciile AWS cheie utilizate pentru implementarea acestei soluții sunt OpenSearch Service, SageMaker, Lambda și Amazon S3.
Finalizează comanda Partea 1 și Partea 2 din această serie pentru a afla mai multe despre crearea graficelor de cunoștințe și încorporarea GNN folosind Amazon Neptune ML.
Soluția noastră OOC presupune că aveți un KG combinat obținut prin fuzionarea unei companii de streaming KG și IMDb KG. Acest lucru se poate face prin tehnici simple de procesare a textului care se potrivesc cu titlurile împreună cu tipul de titlu (film, serial, documentar), distribuție și echipa. În plus, acest grafic comun de cunoștințe trebuie să fie antrenat pentru a genera înglobare de grafice de cunoștințe prin conductele menționate în Partea 1 și Partea 2. Următoarea diagramă ilustrează o vedere simplificată a KG combinat.
Pentru a demonstra funcționalitatea de căutare OOC cu un exemplu simplu, am împărțit graficul de cunoștințe IMDb în catalog-client și în afara catalogului-client. Marcăm titlurile care conțin „Toy Story” ca resursă de catalog în afara clientului, iar restul graficului de cunoștințe IMDb ca catalog pentru clienți. Într-un scenariu în care catalogul clienților nu este îmbunătățit sau îmbinat cu baze de date externe, o căutare pentru „poveste jucărie” ar returna orice titlu care conține cuvintele „jucărie” sau „poveste” în metadatele sale, cu căutarea text OpenSearch. Dacă catalogul clienților ar fi mapat la IMDb, ar fi mai ușor de înțeles că interogarea „poveste jucărie” nu există în catalog și că cele mai bune potriviri în IMDb sunt „Povestea jucăriei”, „Povestea jucăriei 2”, „Jucărie”. Story 3”, „Toy Story 4” și „Charlie: Toy Story” în ordine descrescătoare a relevanței cu potrivirea textului. Pentru a obține rezultate în cadrul catalogului pentru fiecare dintre aceste potriviri, putem genera cinci filme cele mai apropiate în asemănarea de încorporare kNN bazată pe catalogul clienților (a KG comun) prin serviciul OpenSearch.
O experiență OOC tipică urmează fluxul ilustrat în figura următoare.
Următorul videoclip prezintă primele cinci (număr de accesări) rezultate OOC pentru interogarea „poveste de jucărie” și potriviri relevante din catalogul clienților (număr de recomandări).
Aici, interogarea este corelată cu graficul de cunoștințe folosind căutarea text în OpenSearch Service. Apoi mapăm înglobările potrivirii textului la titlurile catalogului clienților folosind indexul kNN OpenSearch Service. Deoarece interogarea utilizatorului nu poate fi mapată direct la entitățile graficului de cunoștințe, folosim o abordare în doi pași pentru a găsi mai întâi asemănări de interogare bazate pe titlu și apoi elemente similare cu titlul folosind înglobarea graficului de cunoștințe. În secțiunile următoare, vom parcurge procesul de configurare a unui cluster OpenSearch Service, de creare și de încărcare a indicilor de grafice de cunoștințe și de implementare a soluției ca aplicație web.
Cerințe preliminare
Pentru a implementa această soluție, ar trebui să aveți un Cont AWS, familiaritatea cu OpenSearch Service, SageMaker, Lambda și Formarea AWS Cloudși ați parcurs pașii din Partea 1 și Partea 2 din această serie.
Lansați resurse de soluție
Următoarea diagramă de arhitectură arată fluxul de lucru în afara catalogului.
Veți folosi AWS Cloud Development Kit (CDK) pentru a furniza resursele necesare pentru aplicațiile de căutare OOC. Codul pentru lansarea acestor resurse efectuează următoarele operații:
- Creează un VPC pentru resurse.
- Creează un domeniu OpenSearch Service pentru aplicația de căutare.
- Creează o funcție Lambda pentru a procesa și încărca metadatele filmelor și înglobările în indexurile OpenSearch Service (
**-ReadFromOpenSearchLambda-**
). - Creează o funcție Lambda care ia ca intrare interogarea utilizatorului dintr-o aplicație web și returnează titluri relevante din OpenSearch (
**-LoadDataIntoOpenSearchLambda-**
). - Creează un gateway API care adaugă un nivel suplimentar de securitate între interfața cu utilizatorul aplicației web și Lambda.
Pentru a începe, parcurgeți următorii pași:
- Rulați codul și caietele de pe Partea 1 și Partea 2.
- Navigați către
part3-out-of-catalog
folderul din depozitul de coduri.
- Lansați AWS CDK de pe terminal cu comanda
bash launch_stack.sh
. - Furnizați cele două căi de fișiere S3 create în partea 2 ca intrare:
- Calea S3 către fișierul CSV de încorporare a filmului.
- Calea S3 către fișierul nod film.
- Așteptați până când scriptul furnizează toate resursele necesare și se termină de rulat.
- Copiați adresa URL a Gateway-ului API pe care o imprimă scriptul AWS CDK și salvați-o. (Folosim acest lucru pentru aplicația Streamlit mai târziu).
Creați un domeniu de serviciu OpenSearch
În scopuri ilustrative, creați un domeniu de căutare într-o zonă de disponibilitate într-o instanță r6g.large.search într-un VPC și subrețea securizate. Rețineți că cea mai bună practică ar fi să configurați trei zone de disponibilitate cu o instanță principală și două replică.
Creați un index OpenSearch Service și încărcați date
Utilizați funcții Lambda (create folosind comanda AWS CDK launch stack) pentru a crea indecșii serviciului OpenSearch. Pentru a începe crearea indexului, parcurgeți următorii pași:
- Pe consola Lambda, deschideți
LoadDataIntoOpenSearchLambda
Funcția lambda. - Pe Test fila, alegeți Test pentru a crea și a ingera date în indexul OpenSearch Service.
Următorul cod pentru această funcție Lambda poate fi găsit în part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
Funcția îndeplinește următoarele sarcini:
- Încarcă fișierul nod film IMDB KG care conține metadatele filmului și înglobările asociate acestuia din căile fișierelor S3 care au fost transmise fișierului de creare a stivei
launch_stack.sh
. - Îmbină cele două fișiere de intrare pentru a crea un singur cadru de date pentru crearea indexului.
- Inițializează clientul OpenSearch Service folosind biblioteca Boto3 Python.
- Creează doi indexuri pentru text (
ooc_text
) și căutare prin încorporare kNN (ooc_knn
) și încarcă în bloc date din cadrul de date combinat prin intermediulingest_data_into_ops
Funcția.
Acest proces de asimilare a datelor durează 5-10 minute și poate fi monitorizat prin intermediul Amazon CloudWatch jurnalele pe Monitorizarea fila funcției Lambda.
Creați doi indici pentru a activa căutarea bazată pe text și căutarea bazată pe încorporare kNN. Căutarea de text mapează interogarea în formă liberă pe care utilizatorul o introduce la titlurile filmului. Căutarea de încorporare kNN găsește cele mai apropiate k filme de cea mai bună potrivire de text din spațiul latent KG pentru a reveni ca ieșiri.
Implementați soluția ca aplicație web locală
Acum că aveți o căutare de text funcțională și un index kNN pe OpenSearch Service, sunteți gata să construiți o aplicație web bazată pe ML.
Noi folosim streamlit
Pachetul Python pentru a crea o ilustrație front-end pentru această aplicație. The IMDb-Knowledge-Graph-Blog/part3-out-of-catalog/run_imdb_demo.py
Fișierul Python în fișierul nostru GitHub repo are codul necesar pentru a lansa o aplicație web locală pentru a explora această capacitate.
Pentru a rula codul, parcurgeți următorii pași:
- instalaţi
streamlit
șiaws_requests_auth
Pachetul Python în mediul dvs. local virtual Python prin următoarele comenzi din terminalul dvs.:
- Înlocuiți substituentul pentru URL-ul API Gateway din cod, după cum urmează, cu cel creat de AWS CDK:
api = '<ENTER URL OF THE API GATEWAY HERE>/opensearch-lambda?q={query_text}&numMovies={num_movies}&numRecs={num_recs}'
- Lansați aplicația web cu comanda
streamlit run run_imdb_demo.py
din terminalul dvs.
Acest script lansează o aplicație web Streamlit care poate fi accesată în browserul dvs. web. Adresa URL a aplicației web poate fi preluată din rezultatul scriptului, așa cum se arată în următoarea captură de ecran.
Aplicația acceptă noi șiruri de căutare, numărul de accesări și numărul de recomandări. Numărul de accesări corespunde câte titluri OOC care se potrivesc ar trebui să recuperăm din catalogul extern (IMDb). Numărul de recomandări corespunde câți vecini cei mai apropiați ar trebui să preluăm din catalogul clienților pe baza căutării prin încorporare kNN. Vezi următorul cod:
Această intrare (interogare, număr de accesări și recomandări) este transmisă către **-ReadFromOpenSearchLambda-**
Funcție Lambda creată de AWS CDK prin cererea API Gateway. Acest lucru se face în următoarea funcție:
Rezultatele de ieșire ale funcției Lambda din serviciul OpenSearch sunt transmise către API Gateway și sunt afișate în aplicația Streamlit.
A curăța
Puteți șterge toate resursele create de AWS CDK prin intermediul comenzii npx cdk destroy –app “python3 appy.py” --all
în același caz (în interiorul cdk
folder) care a fost folosit pentru a lansa stiva (vezi următoarea captură de ecran).
Concluzie
În această postare, v-am arătat cum să creați o soluție pentru căutarea OOC folosind text și căutare bazată pe kNN folosind SageMaker și OpenSearch Service. Ați folosit încorporarea modelelor de grafice de cunoștințe personalizate pentru a găsi cei mai apropiați vecini din catalogul dvs. față de titlurile IMDb. Acum puteți, de exemplu, să căutați „The Rings of Power”, un serial fantastic dezvoltat de Amazon Prime Video, pe alte platforme de streaming și să argumentați cum ar fi putut optimiza rezultatul căutării.
Pentru mai multe informații despre exemplul de cod din această postare, consultați GitHub repo. Pentru a afla mai multe despre colaborarea cu Amazon ML Solutions Lab pentru a construi aplicații similare ML de ultimă generație, consultați Laboratorul de soluții Amazon Machine Learning Solutions. Pentru mai multe informații despre licențierea seturi de date IMDb, vizitați developer.imdb.com.
Despre Autori
Divya Bhargavi este Data Scientist și Media and Entertainment Vertical Lead la Amazon ML Solutions Lab, unde rezolvă probleme de afaceri de mare valoare pentru clienții AWS folosind Machine Learning. Lucrează la înțelegerea imaginilor/video, sistemelor de recomandare cu grafice de cunoștințe, cazuri de utilizare a publicității predictive.
Gaurav Rele este Data Scientist la Amazon ML Solution Lab, unde lucrează cu clienții AWS din diferite verticale pentru a accelera utilizarea învățării automate și a serviciilor AWS Cloud pentru a-și rezolva provocările de afaceri.
Matthew Rhodes este un Data Scientist și lucrez în Amazon ML Solutions Lab. El este specializat în construirea conductelor de învățare automată care implică concepte precum Procesarea limbajului natural și Viziunea pe computer.
Karan Sindwani este Data Scientist la Amazon ML Solutions Lab, unde construiește și implementează modele de deep learning. Este specializat în domeniul vederii computerizate. În timpul liber, îi place drumețiile.
Soji Adeshina este un om de știință aplicat la AWS, unde dezvoltă modele bazate pe rețele neuronale grafice pentru învățarea automată pe sarcini de grafice cu aplicații pentru fraudă și abuz, grafice de cunoștințe, sisteme de recomandare și științe ale vieții. În timpul liber, îi place să citească și să gătească.
Vidya Sagar Ravipati este manager la Amazon ML Solutions Lab, unde își valorifică experiența vastă în sistemele distribuite la scară largă și pasiunea pentru învățarea automată pentru a ajuta clienții AWS din diferite verticale din industrie să-și accelereze adoptarea AI și a cloud-ului.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- Platoblockchain. Web3 Metaverse Intelligence. Cunoștințe amplificate. Accesați Aici.
- Sursa: 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
- Despre Noi
- abuz
- accelera
- acceptă
- accesate
- peste
- activ
- Suplimentar
- În plus,
- Adaugă
- Adoptare
- Promovare
- AI
- TOATE
- Amazon
- Laboratorul Amazon ML Solutions
- Amazon Neptun
- Amazon Neptune ML
- Serviciul Amazon OpenSearch
- Amazon SageMaker
- Google Analytics
- și
- api
- aplicaţia
- aplicație
- aplicatii
- aplicat
- Aplică
- abordare
- arhitectură
- ZONĂ
- asociate
- Automata
- disponibilitate
- disponibil
- AWS
- Schimb de date AWS
- bazat
- deoarece
- CEL MAI BUN
- între
- Miliard
- Cutie
- box office
- browser-ul
- construi
- Clădire
- construiește
- afaceri
- capacități
- cazuri
- catalog
- provocări
- Alege
- client
- Cloud
- adoptarea norului
- servicii de tip cloud
- Grup
- cod
- colaborarea
- combinate
- Companii
- companie
- Compania
- Completă
- Terminat
- calculator
- Computer Vision
- Concepte
- Consoleze
- mereu
- conține
- conţinut
- corespunde
- ar putea
- țări
- crea
- a creat
- Crearea
- creaţie
- credite
- Curent
- În prezent
- personalizat
- client
- Angajarea cu clienții
- clienţii care
- de date
- Schimb de date
- om de știință de date
- baze de date
- seturi de date
- adânc
- învățare profundă
- demonstra
- demonstrat
- implementa
- Implementarea
- implementează
- Derivat
- descris
- distruge
- Detectare
- dezvoltat
- Dezvoltare
- dezvoltă
- diferit
- direcționa
- direct
- descoperire
- discutat
- distribuite
- sisteme distribuite
- document
- documentar
- Nu
- domeniu
- fiecare
- mai ușor
- permite
- angajament
- sporită
- Intrați
- intră
- Divertisment
- entități
- Mediu inconjurator
- eveniment
- EVER
- exemplu
- schimb
- experienţă
- explora
- extern
- suplimentar
- cu care se confruntă
- Familiaritate
- FANTEZIE
- Figura
- Fișier
- Fişiere
- Găsi
- descoperiri
- First
- debit
- următor
- urmează
- găsit
- fraudă
- detectarea fraudei
- frecvent
- frecvent
- din
- complet
- funcţie
- funcționalități
- funcționalitate
- funcții
- poartă
- genera
- obține
- Caritate
- grafic
- grafice
- manipula
- anteturile
- ajutor
- Lovit
- hit-uri
- Cum
- Cum Pentru a
- HTML
- HTTPS
- sute
- imagine
- punerea în aplicare a
- implementat
- îmbunătăţi
- in
- Inclusiv
- Crește
- index
- indexurile
- Indici
- industrie
- informații
- intrare
- instala
- instanță
- in schimb
- interacţiune
- interactiv
- interfaţă
- implica
- IT
- articole
- Cheie
- cunoştinţe
- Graficul de cunoștințe
- de laborator
- limbă
- mare
- pe scară largă
- Ultimele
- lansa
- lansează
- strat
- conduce
- AFLAȚI
- învăţare
- pîrghii
- Bibliotecă
- Licență
- de licențiere
- Viaţă
- Life Sciences
- Limitat
- Listă
- încărca
- local
- maşină
- masina de învățare
- FACE
- gestionate
- administrare
- manager
- manual
- multe
- Hartă
- cartografiere
- Harta
- marca
- Meci
- potrivire
- Mass-media
- Membri actuali
- menționat
- care fuzionează
- Metadata
- milion
- minute
- ML
- model
- Modele
- monitorizate
- Monitorizarea
- Lună
- mai mult
- film
- Filme
- multiplu
- Natural
- Procesarea limbajului natural
- vecini
- Neptun
- bazat pe rețea
- rețele
- rețele neuronale
- Nou
- nod
- număr
- obținut
- promoții
- Birou
- ONE
- deschide
- open-source
- Operațiuni
- optimizate
- comandă
- OS
- Altele
- pachet
- parte
- Trecut
- pasiune
- cale
- Efectua
- efectuează
- înlocuitor
- platformă
- Platforme
- Plato
- Informații despre date Platon
- PlatoData
- "vă rog"
- Post
- putere
- alimentat
- practică
- premier
- Pregăti
- prezenta
- primar
- Prim
- printuri
- probleme
- proces
- Procesat
- prelucrare
- Produs
- producere
- furnizează
- dispoziţie
- cumpărare
- scopuri
- Piton
- gamă
- evaluări
- Citind
- gata
- în timp real
- motiv
- Recomandare
- Recomandări
- relevanţa
- răspunde
- Raportarea
- depozit
- solicita
- cereri de
- necesar
- resursă
- Resurse
- răspuns
- REST
- rezultat
- REZULTATE
- retenţie
- reveni
- Returnează
- Alerga
- funcţionare
- sagemaker
- acelaşi
- Economisiți
- scenarii
- ȘTIINȚE
- Om de stiinta
- Caută
- secțiuni
- sigur
- securitate
- serie
- serviciu
- Servicii
- set
- instalare
- setări
- să
- indicat
- Emisiuni
- asemănător
- asemănări
- simplu
- simplificată
- singur
- situații
- soluţie
- soluţii
- REZOLVAREA
- rezolvă
- unele
- Sursă
- Spaţiu
- specializată
- specific
- împărţi
- stivui
- Începe
- început
- de ultimă oră
- paşi
- depozitare
- stocate
- Poveste
- de streaming
- subrețea
- astfel de
- suită
- a sustine
- sisteme
- Lua
- ia
- sarcini
- tehnici de
- Terminal
- Zona
- articulația
- lor
- astfel
- mii
- trei
- Prin
- timp
- Titlu
- titluri
- la
- top
- Tren
- dresat
- Transforma
- trilioane
- tv
- tipic
- în
- înţelegere
- Se încarcă
- URL-ul
- utilizare
- Utilizator
- User Interface
- Utilizand
- varietate
- Fixă
- furnizori
- verticalele
- Video
- Vizualizare
- Virtual
- viziune
- vizualizare
- web
- aplicatie web
- browser web
- website
- care
- larg
- Gamă largă
- voi
- în
- Cuvânt
- cuvinte
- de lucru
- fabrică
- ar
- Tu
- Ta
- zephyrnet
- zone