Ta tridelna serija prikazuje, kako uporabljati grafične nevronske mreže (GNN) in Amazonski Neptun za ustvarjanje filmskih priporočil z uporabo IMDb in Box Office Mojo Movies/TV/OTT licenčni podatkovni paket, ki zagotavlja široko paleto zabavnih metapodatkov, vključno z več kot milijardo uporabniških ocen; zasluge za več kot 1 milijonov igralcev in članov ekipe; 11 milijonov filmov, TV in razvedrilnih naslovov; in podatki o svetovnih blagajnah iz več kot 9 držav. Številne stranke medijev in zabave AWS licencirajo podatke IMDb Izmenjava podatkov AWS izboljšati odkrivanje vsebine ter povečati sodelovanje in zadrževanje strank.
Naslednji diagram ponazarja celotno arhitekturo, implementirano kot del te serije.
In Del 1, smo razpravljali o aplikacijah GNN in o tem, kako preoblikovati in pripraviti naše podatke IMDb v graf znanja (KG). Podatke smo prenesli iz AWS Data Exchange in jih obdelali AWS lepilo za ustvarjanje datotek KG. Datoteke KG so bile shranjene v Preprosta storitev shranjevanja Amazon (Amazon S3) in nato naložen Amazonski Neptun.
In Del 2, smo pokazali, kako se uporablja Amazon Neptune ML (v Amazon SageMaker) za usposabljanje KG in ustvarjanje vdelav KG.
V tej objavi vas vodimo skozi uporabo naših usposobljenih vdelav KG v Amazon S3 za primere uporabe iskanja zunaj kataloga z uporabo Storitev Amazon OpenSearch in AWS Lambda. Prav tako uvedete lokalno spletno aplikacijo za interaktivno izkušnjo iskanja. Vse vire, uporabljene v tej objavi, je mogoče ustvariti z enim samim Komplet za razvoj oblaka AWS (AWS CDK), kot je opisano kasneje v objavi.
Ozadje
Ste že kdaj nenamerno iskali naslov vsebine, ki ni bil na voljo na platformi za pretakanje videa? Če je odgovor pritrdilen, boste namesto prazne strani z rezultati iskanja ugotovili, da boste našli seznam filmov istega žanra z igralci ali člani ekipe. To je izkušnja iskanja izven kataloga!
Iskanje izven kataloga (OOC) je, ko vnesete iskalno poizvedbo, ki nima neposrednega ujemanja v katalogu. Ta dogodek se pogosto zgodi v platformah za pretakanje videa, ki nenehno kupujejo različne vsebine od več prodajalcev in produkcijskih podjetij za omejen čas. Odsotnost ustreznosti ali preslikave iz kataloga pretočnega podjetja v velike baze znanja o filmih in oddajah lahko povzroči slabšo izkušnjo iskanja za stranke, ki poizvedujejo po vsebini OOC, s čimer se zmanjša čas interakcije s platformo. To preslikavo je mogoče narediti z ročnim preslikavo pogostih poizvedb OOC v vsebino kataloga ali pa jo lahko avtomatizirate s strojnim učenjem (ML).
V tej objavi ponazarjamo, kako ravnati z OOC z uporabo moči nabora podatkov IMDb (najboljši vir metapodatkov o globalni zabavi) in grafov znanja.
Storitev OpenSearch je v celoti upravljana storitev, ki vam olajša izvajanje interaktivne analitike dnevnika, spremljanje aplikacij v realnem času, iskanje po spletnih mestih in več. OpenSearch je odprtokodna zbirka za porazdeljeno iskanje in analitiko, ki izhaja iz Elasticsearch. Storitev OpenSearch ponuja najnovejše različice OpenSearch, podporo za 19 različic Elasticsearch (različice od 1.5 do 7.10), kot tudi zmožnosti vizualizacije, ki jih poganjajo nadzorne plošče OpenSearch in Kibana (različice od 1.5 do 7.10). Storitev OpenSearch ima trenutno na desettisoče aktivnih strank s stotisoči grozdov pod upravljanjem, ki obdelujejo trilijone zahtev na mesec. Storitev OpenSearch ponuja iskanje kNN, ki lahko izboljša iskanje v primerih uporabe, kot so priporočila za izdelke, odkrivanje goljufij ter slike, videoposnetki in nekateri posebni semantični scenariji, kot je podobnost dokumenta in poizvedbe. Za več informacij o funkciji iskanja OpenSearch Service, ki temelji na razumevanju naravnega jezika, glejte Izdelava iskalne aplikacije, ki jo poganja NLU, z Amazon SageMaker in funkcijo Amazon OpenSearch Service KNN.
Pregled rešitev
V tej objavi predstavljamo rešitev za obravnavanje situacij OOC z vdelanim iskanjem na podlagi grafa znanja z uporabo zmožnosti iskanja k-najbližjega soseda (kNN) storitve OpenSearch. Ključne storitve AWS, ki se uporabljajo za implementacijo te rešitve, so OpenSearch Service, SageMaker, Lambda in Amazon S3.
Preveri Del 1 in Del 2 te serije, če želite izvedeti več o ustvarjanju grafov znanja in vdelavi GNN z uporabo Amazon Neptune ML.
Naša rešitev OOC predvideva, da imate kombinirano KG, pridobljeno z združitvijo KG pretočnega podjetja in IMDb KG. To je mogoče storiti s preprostimi tehnikami obdelave besedila, ki ujemajo naslove z vrsto naslova (film, serija, dokumentarec), igralsko zasedbo in ekipo. Poleg tega je treba ta skupni graf znanja usposobiti za ustvarjanje vdelav grafa znanja prek cevovodov, omenjenih v Del 1 in Del 2. Naslednji diagram ponazarja poenostavljen pogled na kombinirani KG.
Za prikaz funkcionalnosti iskanja OOC s preprostim primerom smo graf znanja IMDb razdelili na katalog strank in katalog zunaj strank. Naslove, ki vsebujejo »Toy Story«, označimo kot vir kataloga zunaj stranke, preostali del grafikona znanja IMDb pa kot katalog strank. V scenariju, kjer katalog strank ni izboljšan ali združen z zunanjimi zbirkami podatkov, bi iskanje »zgodbe o igračah« vrnilo kateri koli naslov, ki ima v svojih metapodatkih besedi »igrača« ali »zgodba«, z iskanjem besedila OpenSearch. Če bi bil katalog strank preslikan v IMDb, bi bilo lažje ugotoviti, da poizvedba »zgodba o igračah« ne obstaja v katalogu in da so najbolj ujemanja v IMDb »Zgodba igrač«, »Zgodba igrač 2«, »Igrača Zgodba 3,« »Zgodba igrač 4« in »Charlie: Zgodba igrač« v padajočem vrstnem redu po pomembnosti z ujemanjem besedila. Da bi dobili rezultate znotraj kataloga za vsako od teh ujemanj, lahko ustvarimo pet najbližjih filmov v podobnosti vdelave kNN (skupnega KG) na osnovi kataloga strank prek storitve OpenSearch.
Tipična izkušnja OOC sledi toku, ki je prikazan na naslednji sliki.
Naslednji video prikazuje prvih pet (število zadetkov) rezultatov OOC za poizvedbo »zgodba o igračah« in ustrezna ujemanja v katalogu strank (število priporočil).
Tu se poizvedba ujema z grafom znanja s pomočjo iskanja besedila v storitvi OpenSearch. Nato preslikamo vdelave besedilnega ujemanja v naslove kataloga strank z uporabo indeksa OpenSearch Service kNN. Ker uporabniške poizvedbe ni mogoče neposredno preslikati v entitete grafikona znanja, uporabljamo dvostopenjski pristop, da najprej poiščemo podobnosti poizvedbe na podlagi naslova in nato elemente, podobne naslovu, z uporabo vdelav grafikona znanja. V naslednjih razdelkih se popeljemo skozi postopek nastavitve gruče OpenSearch Service, ustvarjanja in nalaganja indeksov grafov znanja ter uvajanja rešitve kot spletne aplikacije.
Predpogoji
Za izvedbo te rešitve bi morali imeti AWS račun, poznavanje storitev OpenSearch, SageMaker, Lambda in Oblikovanje oblaka AWSin dokončali korake v Del 1 in Del 2 te serije.
Zagon virov rešitve
Naslednji diagram arhitekture prikazuje potek dela zunaj kataloga.
Za zagotavljanje virov, potrebnih za iskalne aplikacije OOC, boste uporabili AWS Cloud Development Kit (CDK). Koda za zagon teh virov izvede naslednje operacije:
- Ustvari VPC za vire.
- Ustvari domeno OpenSearch Service za iskalno aplikacijo.
- Ustvari funkcijo Lambda za obdelavo in nalaganje metapodatkov in vdelav filmov v indekse OpenSearch Service (
**-ReadFromOpenSearchLambda-**
). - Ustvari funkcijo Lambda, ki sprejme kot vnos uporabniško poizvedbo iz spletne aplikacije in vrne ustrezne naslove iz OpenSearch (
**-LoadDataIntoOpenSearchLambda-**
). - Ustvari prehod API-ja, ki doda dodatno plast varnosti med uporabniškim vmesnikom spletne aplikacije in Lambdo.
Če želite začeti, izvedite naslednje korake:
- Zaženite kodo in zvezke iz Del 1 in Del 2.
- Pomaknite se na
part3-out-of-catalog
mapo v repozitoriju kode.
- Zaženite AWS CDK s terminala z ukazom
bash launch_stack.sh
. - Kot vhod navedite dve poti datoteke S3, ustvarjene v 2. delu:
- Pot S3 do datoteke CSV z vdelavami filmov.
- Pot S3 do datoteke vozlišča filma.
- Počakajte, da skript zagotovi vsa potrebna sredstva in se konča z izvajanjem.
- Kopirajte URL prehoda API, ki ga natisne skript AWS CDK, in ga shranite. (To bomo kasneje uporabili za aplikacijo Streamlit).
Ustvarite domeno storitve OpenSearch
Za ponazoritev ustvarite iskalno domeno na enem območju razpoložljivosti v primerku r6g.large.search znotraj varnega VPC in podomrežja. Upoštevajte, da bi bila najboljša praksa nastavitev na treh območjih razpoložljivosti z eno primarno in dvema kopijama.
Ustvarite indeks OpenSearch Service in naložite podatke
Funkcije Lambda (ustvarjene z ukazom zagonskega sklada AWS CDK) uporabljate za ustvarjanje indeksov storitve OpenSearch. Če želite začeti ustvarjati indeks, izvedite naslednje korake:
- Na konzoli Lambda odprite
LoadDataIntoOpenSearchLambda
Lambda funkcija. - o Test izberite jeziček Test za ustvarjanje in vnašanje podatkov v indeks storitve OpenSearch.
Naslednjo kodo te funkcije Lambda lahko najdete v part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
Funkcija opravlja naslednje naloge:
- Naloži datoteko vozlišča filma IMDB KG, ki vsebuje metapodatke filma in z njim povezane vdelave iz poti datoteke S3, ki so bile posredovane datoteki za ustvarjanje sklada
launch_stack.sh
. - Združi dve vhodni datoteki, da ustvari en sam podatkovni okvir za ustvarjanje indeksa.
- Inicializira odjemalca OpenSearch Service s knjižnico Boto3 Python.
- Ustvari dva indeksa za besedilo (
ooc_text
) in iskanje vdelave kNN (ooc_knn
) in množično nalaga podatke iz združenega podatkovnega okvira prekingest_data_into_ops
Funkcija.
Ta postopek vnosa podatkov traja 5–10 minut in ga je mogoče spremljati prek amazoncloudwatch dnevniki na Spremljanje zavihek funkcije Lambda.
Ustvarite dva indeksa, da omogočite iskanje po besedilu in iskanje po vdelavi kNN. Besedilno iskanje preslika poizvedbo v prosti obliki, ki jo uporabnik vnese, v naslove filma. Iskanje z vdelavo kNN najde k filmov, ki so najbližji najboljšemu ujemanju besedila iz latentnega prostora KG, da se vrne kot izhod.
Namestite rešitev kot lokalno spletno aplikacijo
Zdaj, ko imate delujoče iskanje po besedilu in indeks kNN v storitvi OpenSearch, ste pripravljeni na izdelavo spletne aplikacije, ki temelji na ML.
Mi uporabljamo streamlit
Paket Python za ustvarjanje sprednje ilustracije za to aplikacijo. The IMDb-Knowledge-Graph-Blog/part3-out-of-catalog/run_imdb_demo.py
Python datoteka v našem GitHub repo ima potrebno kodo za zagon lokalne spletne aplikacije za raziskovanje te zmožnosti.
Za zagon kode izvedite naslednje korake:
- namestite
streamlit
inaws_requests_auth
Paket Python v vašem lokalnem virtualnem okolju Python prek naslednjih ukazov v vašem terminalu:
- Zamenjajte nadomestni znak za URL prehoda API v kodi, kot sledi, s tistim, ki ga je ustvaril AWS CDK:
api = '<ENTER URL OF THE API GATEWAY HERE>/opensearch-lambda?q={query_text}&numMovies={num_movies}&numRecs={num_recs}'
- Zaženite spletno aplikacijo z ukazom
streamlit run run_imdb_demo.py
iz vašega terminala.
Ta skript zažene spletno aplikacijo Streamlit, do katere lahko dostopate v spletnem brskalniku. URL spletne aplikacije je mogoče pridobiti iz izhoda skripta, kot je prikazano na naslednjem posnetku zaslona.
Aplikacija sprejema nove iskalne nize, število zadetkov in število priporočil. Število zadetkov ustreza številu ujemajočih se naslovov OOC, ki jih moramo pridobiti iz zunanjega (IMDb) kataloga. Število priporočil ustreza temu, koliko najbližjih sosedov bi morali pridobiti iz kataloga strank na podlagi iskanja z vdelavo kNN. Oglejte si naslednjo kodo:
Ta vnos (poizvedba, število zadetkov in priporočila) se posreduje v **-ReadFromOpenSearchLambda-**
Funkcija Lambda, ki jo ustvari AWS CDK prek zahteve API Gateway. To se izvede v naslednji funkciji:
Izhodni rezultati funkcije Lambda iz storitve OpenSearch so posredovani prehodu API in prikazani v aplikaciji Streamlit.
Čiščenje
Z ukazom lahko izbrišete vse vire, ki jih je ustvaril AWS CDK npx cdk destroy –app “python3 appy.py” --all
v istem primeru (znotraj cdk
mapo), ki je bila uporabljena za zagon sklada (glejte naslednji posnetek zaslona).
zaključek
V tej objavi smo vam pokazali, kako ustvariti rešitev za OOC iskanje z uporabo besedila in iskanja na podlagi kNN z uporabo SageMaker in OpenSearch Service. Uporabili ste vdelave modela grafa znanja po meri, da bi našli najbližje sosede v vašem katalogu naslovov IMDb. Zdaj lahko na primer iščete »The Rings of Power«, domišljijsko serijo, ki jo je razvil Amazon Prime Video, na drugih pretočnih platformah in razmišljate, kako bi lahko optimizirali rezultat iskanja.
Za več informacij o vzorcu kode v tem prispevku glejte GitHub repo. Če želite izvedeti več o sodelovanju z Amazon ML Solutions Lab za izdelavo podobnih najsodobnejših aplikacij ML, glejte Amazonski laboratorij za strojno učenje. Za več informacij o licenciranju naborov podatkov IMDb obiščite developer.imdb.com.
O avtorjih
Divya Bhargavi je podatkovna znanstvenica in vodja vertikale za medije in razvedrilo v Amazon ML Solutions Lab, kjer rešuje pomembne poslovne probleme za stranke AWS s pomočjo strojnega učenja. Ukvarja se z razumevanjem slik/videoposnetkov, priporočilnimi sistemi grafov znanja, primeri uporabe napovednega oglaševanja.
Gaurav Rele je Data Scientist v Amazon ML Solution Lab, kjer sodeluje s strankami AWS v različnih vertikalah, da pospeši njihovo uporabo strojnega učenja in storitev AWS Cloud za reševanje njihovih poslovnih izzivov.
Matthew Rhodes je podatkovni znanstvenik, ki dela v Amazon ML Solutions Lab. Specializiran je za gradnjo cevovodov strojnega učenja, ki vključujejo koncepte, kot sta obdelava naravnega jezika in računalniški vid.
Karan Sindwani je podatkovni znanstvenik pri Amazon ML Solutions Lab, kjer gradi in uvaja modele globokega učenja. Specializiran je za področje računalniškega vida. V prostem času se rad pohodi.
Soji Adeshina je uporabni znanstvenik pri AWS, kjer razvija modele, ki temeljijo na grafičnih nevronskih mrežah, za strojno učenje na grafičnih nalogah z aplikacijami za goljufije in zlorabe, grafe znanja, sisteme priporočil in znanosti o življenju. V prostem času rada bere in kuha.
Vidya Sagar Ravipati je vodja v Amazon ML Solutions Lab, kjer izkorišča svoje bogate izkušnje v obsežnih porazdeljenih sistemih in svojo strast do strojnega učenja, da strankam AWS v različnih industrijskih vertikalah pomaga pri pospeševanju umetne inteligence in sprejemanja oblaka.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- Platoblockchain. Web3 Metaverse Intelligence. Razširjeno znanje. Dostopite tukaj.
- vir: 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
- O meni
- zloraba
- pospeši
- Sprejema
- dostopna
- čez
- aktivna
- Dodatne
- Poleg tega
- Dodaja
- Sprejetje
- Oglaševanje
- AI
- vsi
- Amazon
- Amazon ML Solutions Lab
- Amazonski Neptun
- Amazon Neptune ML
- Storitev Amazon OpenSearch
- Amazon SageMaker
- analitika
- in
- API
- aplikacija
- uporaba
- aplikacije
- uporabna
- Uporabi
- pristop
- Arhitektura
- OBMOČJE
- povezan
- Avtomatizirano
- razpoložljivost
- Na voljo
- AWS
- Izmenjava podatkov AWS
- temeljijo
- ker
- BEST
- med
- Billion
- Pasovi
- blagajna
- brskalnik
- izgradnjo
- Building
- Gradi
- poslovni
- Zmogljivosti
- primeri
- Katalog
- izzivi
- Izberite
- stranke
- Cloud
- sprejem v oblak
- storitev v oblaku
- Grozd
- Koda
- sodelovati
- kombinirani
- Podjetja
- podjetje
- Podjetja
- dokončanje
- Končana
- računalnik
- Računalniška vizija
- koncepti
- Konzole
- nenehno
- Vsebuje
- vsebina
- ustreza
- bi
- države
- ustvarjajo
- ustvaril
- Ustvarjanje
- Oblikovanje
- krediti
- Trenutna
- Trenutno
- po meri
- stranka
- Angažiranje strank
- Stranke, ki so
- datum
- Izmenjava podatkov
- podatkovni znanstvenik
- baze podatkov
- nabor podatkov
- globoko
- globoko učenje
- izkazati
- Dokazano
- razporedi
- uvajanja
- razpolaga
- Izpeljano
- opisano
- uniči
- Odkrivanje
- razvili
- Razvoj
- razvija
- drugačen
- neposredna
- neposredno
- Odkritje
- razpravljali
- porazdeljena
- porazdeljeni sistemi
- dokument
- Dokumentarec
- Ne
- domena
- vsak
- lažje
- omogočajo
- sodelovanje
- okrepljeno
- Vnesite
- Vstopi
- Zabava
- subjekti
- okolje
- Event
- VEDNO
- Primer
- Izmenjava
- izkušnje
- raziskuje
- zunanja
- dodatna
- s katerimi se sooča
- Poznavanje
- FANTASY
- Slika
- file
- datoteke
- Najdi
- najdbe
- prva
- Pretok
- po
- sledi
- je pokazala,
- goljufija
- odkrivanje goljufij
- pogosto
- pogosto
- iz
- v celoti
- funkcija
- funkcionalnosti
- funkcionalnost
- funkcije
- Prehod
- ustvarjajo
- dobili
- Globalno
- graf
- grafi
- ročaj
- Glave
- pomoč
- hit
- Hits
- Kako
- Kako
- HTML
- HTTPS
- Stotine
- slika
- izvajati
- izvajali
- izboljšanje
- in
- Vključno
- Povečajte
- Indeks
- indekse
- indeksi
- Industrija
- Podatki
- vhod
- namestitev
- primer
- Namesto
- interakcije
- interaktivno
- vmesnik
- vključujejo
- IT
- Izdelkov
- Ključne
- znanje
- Graf znanja
- lab
- jezik
- velika
- obsežne
- Zadnji
- kosilo
- izstrelki
- plast
- vodi
- UČITE
- učenje
- Leverages
- Knjižnica
- Licenca
- licenciranje
- življenje
- Life Sciences
- Limited
- Seznam
- obremenitev
- lokalna
- stroj
- strojno učenje
- IZDELA
- upravlja
- upravljanje
- upravitelj
- ročno
- več
- map
- kartiranje
- Zemljevidi
- znamka
- Stave
- ujemanje
- mediji
- člani
- omenjeno
- združitev
- metapodatki
- milijonov
- Minute
- ML
- Model
- modeli
- spremljati
- spremljanje
- mesec
- več
- Film
- filmi
- več
- naravna
- Obdelava Natural Language
- sosedi
- Neptun
- omrežno
- omrežij
- nevronske mreže
- Novo
- Vozel
- Številka
- pridobljeni
- Ponudbe
- Office
- ONE
- odprite
- open source
- operacije
- optimizirana
- Da
- OS
- Ostalo
- paket
- del
- opravil
- strast
- pot
- Izvedite
- opravlja
- placeholder
- platforma
- Platforme
- platon
- Platonova podatkovna inteligenca
- PlatoData
- prosim
- Prispevek
- moč
- poganja
- praksa
- premier
- Pripravimo
- predstaviti
- primarni
- Predsednik
- printi
- Težave
- Postopek
- Predelano
- obravnavati
- Izdelek
- proizvodnja
- zagotavlja
- zagotavljanje
- nakup
- namene
- Python
- območje
- ocen
- reading
- pripravljen
- v realnem času
- Razlog
- Priporočilo
- Priporočila
- ustreznost
- pomembno
- odgovori
- Poročanje
- Skladišče
- zahteva
- zahteva
- obvezna
- vir
- viri
- Odgovor
- REST
- povzroči
- Rezultati
- zadrževanje
- vrnitev
- vrne
- Run
- tek
- sagemaker
- Enako
- Shrani
- scenariji
- ZNANOSTI
- Znanstvenik
- Iskalnik
- oddelki
- zavarovanje
- varnost
- Serija
- Storitev
- Storitve
- nastavite
- nastavitev
- nastavitve
- shouldnt
- pokazale
- Razstave
- Podoben
- podobnosti
- Enostavno
- poenostavljeno
- sam
- situacije
- Rešitev
- rešitve
- SOLVE
- Rešuje
- nekaj
- vir
- Vesolje
- specializirano
- specifična
- po delih
- sveženj
- Začetek
- začel
- state-of-the-art
- Koraki
- shranjevanje
- shranjeni
- Zgodba
- pretakanje
- subnet
- taka
- apartma
- podpora
- sistemi
- Bodite
- meni
- Naloge
- tehnike
- terminal
- O
- Območje
- sklep
- njihove
- s tem
- tisoče
- 3
- skozi
- čas
- Naslov
- naslove
- do
- vrh
- Vlak
- usposobljeni
- Transform
- trillions
- tv
- tipičen
- pod
- razumevanje
- Prenos
- URL
- uporaba
- uporabnik
- Uporabniški vmesnik
- Uporaben
- raznolikost
- Popravljeno
- prodajalci
- vertikale
- Video
- Poglej
- Virtual
- Vizija
- vizualizacija
- web
- Spletna aplikacija
- spletni brskalnik
- Spletna stran
- ki
- široka
- Širok spekter
- bo
- v
- beseda
- besede
- deluje
- deluje
- bi
- Vi
- Vaša rutina za
- zefirnet
- cone