Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1

Smakämnen IMDb och Box Office Mojo Movies/TV/OTT licenserbart datapaket 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.

I den här tredelade serien visar vi hur man transformerar och förbereder IMDb-data för att driva sökning utanför katalogen efter dina media- och underhållningsanvändningsfall. I det här inlägget diskuterar vi hur man förbereder IMDb-data och laddar in data Amazon Neptunus för att fråga. I del 2diskuterar vi hur man använder Amazon Neptune ML att träna inbäddningar av graph neural network (GNN) från IMDb-grafen. I del 3 går vi igenom en demoapplikation utanför katalogsökning som drivs av GNN-inbäddningar.

Lösningsöversikt

I den här serien använder vi IMDb och Box Office Mojo Movies/TV/OTT licensierade datapaket för att visa hur du kan bygga dina egna applikationer med hjälp av grafer.

Det här licenserbara datapaketet består av JSON-filer med IMDb-metadata för mer än 9 miljoner titlar (inklusive filmer, TV- och OTT-program och videospel) och krediter för mer än 11 ​​miljoner skådespelare, crew och underhållningsproffs. IMDbs metadatapaket innehåller också över 1 miljard användarbetyg, såväl som plotter, genrer, kategoriserade nyckelord, affischer, krediter och mer.

IMDb levererar data genom AWS Data Exchange, vilket gör det otroligt enkelt för dig att komma åt data för att driva dina underhållningsupplevelser och sömlöst integrera med andra AWS-tjänster. IMDb licensierar data till ett brett spektrum av medie- och underhållningskunder, inklusive betal-TV, direkt till konsument och streamingoperatörer, för att förbättra innehållsupptäckten och öka kundernas engagemang och retention. Licensieringskunder använder också IMDb-data för att förbättra titelsökningar i katalogen och utanför katalogen och driva relevanta rekommendationer.

Vi använder följande tjänster som en del av denna lösning:

Följande diagram visar arbetsflödet för del 1 av bloggserien i tre delar.

I det här inlägget går vi igenom följande steg på hög nivå:

  1. Tillhandahåll Neptune resurser med AWS molnformation.
  2. Få åtkomst till IMDb-data från AWS Data Exchange.
  3. Klona GitHub repo.
  4. Bearbeta data i Neptune Gremlin-format.
  5. Ladda data till ett Neptune-kluster.
  6. Fråga efter data med Gremlin Query Language.

Förutsättningar

IMDb-data som används i det här inlägget kräver en IMDb-innehållslicens och betald prenumeration på IMDb och Box Office Mojo Movies/TV/OTT-licenspaketet i AWS Data Exchange. För att fråga om en licens och få tillgång till exempeldata, besök developer.imdb.com.

Dessutom, för att följa med i det här inlägget, bör du ha en AWS-konto och förtrogenhet med Neptunus, frågespråket Gremlin och SageMaker.

Tillhandahåll Neptune-resurser med AWS CloudFormation

Nu när du har sett strukturen på lösningen kan du distribuera den i ditt konto för att köra ett exempel på arbetsflödet.

Du kan starta stacken i AWS-regionen us-east-1 på AWS CloudFormation-konsolen genom att välja Starta stack:

Startknapp

För att starta stacken i en annan region, se Använda Neptune ML AWS CloudFormation-mallen för att snabbt komma igång i ett nytt DB-kluster.

Följande skärmdump visar stackparametrarna som ska tillhandahållas.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Att skapa stack tar cirka 20 minuter. Du kan övervaka framstegen på AWS CloudFormation-konsolen.

När stacken är klar är du nu redo att bearbeta IMDb-data. På Utgångarna fliken för stacken, notera värdena för NeptuneExportApiUri och NeptuneLoadFromS3IAMRoleArn. Fortsätt sedan till följande steg för att få tillgång till IMDb-datauppsättningen.

Få åtkomst till IMDb-data

IMDb publicerar sin datauppsättning en gång om dagen på AWS Data Exchange. För att använda IMDb-data prenumererar du först på data i AWS Data Exchange, sedan kan du exportera data till Amazon enkel lagringstjänst (Amazon S3). Slutför följande steg:

  1. På AWS Data Exchange-konsolen väljer du Bläddra i katalogen i navigeringsfönstret.
  2. Ange i sökfältet IMDb.
  3. Prenumerera på antingen IMDb och Box Office Mojo Movie/TV/OTT-data (EXEMPEL) or IMDb och Box Office Mojo Movie/TV/OTT-data.
  4. Slutför stegen i följande verkstad för att exportera IMDb-data från AWS Data Exchange till Amazon S3.

Klona GitHub-förvaret

Följ följande steg:

  1. Öppna SageMaker-instansen som du skapade från CloudFormation-mallen.
  2. Klona GitHub-lagret.

Bearbeta IMDb-data i Neptune Gremlin-format

För att lägga till data i Amazon Neptune bearbetar vi data i Neptune gremlin-format. Från GitHub-förvaret kör vi process_imdb_data.py för att bearbeta filerna. Skriptet skapar CSV:erna för att ladda data till Neptunus. Ladda upp data till en S3-bucket och notera S3 URI-platsen.

Observera att för det här inlägget filtrerar vi datasetet så att det bara inkluderar filmer. Du behöver antingen en AWS-lim jobb eller Amazon EMR att behandla alla uppgifter.

För att bearbeta IMDb-data med AWS Glue, slutför följande steg:

  1. På AWS Glue-konsolen, i navigeringsfönstret, välj Lediga jobb.
  2. Lediga jobb sida, välj Spark script editor.
  3. Enligt Tillbehörväljer Ladda upp och redigera befintligt skript och ladda upp 1_process_imdb_data.py fil.
  4. Välja Skapa.
  5. Välj på redaktörssidan jobb~~POS=TRUNC Detaljer.
  6. jobb~~POS=TRUNC Detaljer sida, lägg till följande alternativ:
    1. För Namn , stiga på imdb-graph-processor.
    2. För Beskrivning, stiga på processing IMDb dataset and convert to Neptune Gremlin Format.
    3. För IAM-roll, använd en befintlig AWS Glue-roll eller skapa en IAM-roll för AWS Glue. Se till att du ger tillstånd till din Amazon S3-plats för rådata och utdatasökväg.
    4. För Arbetstagartypväljer G 2X.
    5. För Begärt antal arbetare, ange 20.
  7. Bygga ut Avancerade egenskaper.
  8. Enligt Jobbparametrarväljer Lägg till ny parameter och ange följande nyckelvärdespar:
    1. För nyckeln, skriv in --output_bucket_path.
    2. För värdet anger du S3-sökvägen där du vill spara filerna. Den här sökvägen används också för att ladda in data i Neptune-klustret.
  9. För att lägga till en annan parameter, välj Lägg till ny parameter och ange följande nyckelvärdespar:
    1. För nyckeln, skriv in --raw_data_path.
    2. För värdet anger du S3-sökvägen där rådata lagras.
  10. Välja Save och välj sedan Körning.

Det här jobbet tar cirka 2.5 timmar att slutföra.

Följande tabell ger information om noderna för grafdatamodellen.

Beskrivning etikett
Huvudsakliga medlemmar Person
Långformat film Film
Genre av filmer Genre
Nyckelordsbeskrivningar av filmer Nyckelord
Inspelningsplatser för filmer Plats
Betyg för filmer betyg
Prisevenemang där filmen fick ett pris Utmärkelser

På liknande sätt visar följande tabell några av kanterna som ingår i grafen. Det kommer att finnas totalt 24 kanttyper.

Beskrivning etikett Från Till
Filmer som en skådespelerska har medverkat i castad av skådespelerskan Film Person
Filmer som en skådespelare har medverkat i castad av skådespelare Film Person
Nyckelord i en film efter karaktär beskrivs-för-tecken-sökord Film sökord
Genre av en film är-genre Film Genre
Plats där filmen spelades in Filmad-kl Film Plats
Kompositör av en film Besättning av kompositör Film Person
prisnominering Nominerad_för Film Utmärkelser
prisvinnare Har vunnit Film Utmärkelser

Ladda data till ett Neptune-kluster

I repet, navigera till graph_creation mapp och kör 2_load.ipynb. För att ladda data till Neptune, använd kommandot %load i notebook-datorn och ange din AWS identitets- och åtkomsthantering (IAM) roll ARN och Amazon S3 plats för dina bearbetade data.

role = ''
%load -l {role} -s  --store-to load_id

Följande skärmdump visar resultatet av kommandot.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Observera att dataladdningen tar cirka 1.5 timmar att slutföra. För att kontrollera statusen för lasten, använd följande kommando:

%load_status {load_id['payload']['loadId']} --errors --details

När laddningen är klar visas statusen LOAD_COMPLETED, som visas i följande skärmdump.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

All data laddas nu in i grafer och du kan börja fråga efter grafen.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Fig: Exempel på kunskapsdiagramrepresentation av filmer i IMDb-dataset. Filmerna "Saving Private Ryan" och "Bridge of Spies" har vanliga kopplingar som skådespelare och regissör såväl som indirekta kopplingar genom filmer som "The Catcher was a Spy" i grafnätverket.

Fråga data med Gremlin

För att komma åt grafen i Neptunus använder vi frågespråket Gremlin. För mer information, se Fråga efter en Neptunus-graf.

Grafen består av en rik uppsättning information som kan frågas direkt med hjälp av Gremlin. I det här avsnittet visar vi några exempel på frågor som du kan besvara med grafdata. I repet, navigera till graph_creation mapp och kör 3_queries.ipynb anteckningsbok. Följande avsnitt går igenom alla frågor från anteckningsboken.

Globalt antal filmer som har spelats in i Nya Zeeland, med minst 7.5 i betyg

Följande fråga returnerar det globala bruttovärdet för filmer filmade i Nya Zeeland, med ett lägsta betyg på 7.5:

%%gremlin --store-to result

g.V().has('place', 'name', containing('New Zealand')).in().has('movie', 'rating', gt(7.5)).dedup().valueMap(['name', 'gross_worldwide', 'rating', 'studio','id'])

Följande skärmdump visar sökresultaten.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Topp 50 filmer som tillhör action- och dramagenrer och har Oscarsbelönta skådespelare

I följande exempel vill vi hitta de 50 bästa filmerna i två olika genrer (action och drama) med Oscarsvinnande skådespelare. Vi kan göra detta genom att använda tre olika frågor och slå samman informationen med Pandas:

%%gremlin --store result_action
g.V().has('genre', 'name', 'Action').in().has('movie', 'rating', gt(8.5)).limit(50).valueMap(['name', 'year', 'poster'])

%%gremlin --store result_drama
g.V().has('genre', 'name', 'Drama').in().has('movie', 'rating', gt(8.5)).limit(50).valueMap(['name', 'year', 'poster'])

%%gremlin --store result_actors --silent
g.V().has('person', 'oscar_winner', true).in().has('movie', 'rating', gt(8.5)).limit(50).valueMap(['name', 'year', 'poster'])

Följande skärmdump visar våra resultat.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Toppfilmer som har vanliga nyckelord "tatuering" och "mördare"

Följande fråga returnerar filmer med nyckelorden "tatuering" och "mördare":

%%gremlin --store result

g.V().has('keyword','name','assassin').in("described-by-plot-related-keyword").where(out("described-by-plot-related-keyword").has('keyword','name','tattoo')).dedup().limit(10).valueMap(['name', 'poster','year'])

Följande skärmdump visar våra resultat.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Filmer som har gemensamma skådespelare

I följande fråga hittar vi filmer som har Leonardo DiCaprio och Tom Hanks:

%%gremlin --store result

g.V().has('person', 'name', containing('Leonardo DiCaprio')).in().hasLabel('movie').out().has('person','name', 'Tom Hanks').path().by(valueMap('name', 'poster'))

Vi får följande resultat.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Slutsats

I det här inlägget visade vi dig kraften i IMDb och Box Office Mojo Movies/TV/OTT-datauppsättningen och hur du kan använda den i olika användningsfall genom att konvertera data till en graf med hjälp av Gremlin-frågor. I del 2 i den här serien visar vi dig hur du skapar grafiska neurala nätverksmodeller på denna data som kan användas för nedströmsuppgifter.

För mer information om Neptunus och Gremlin, se Amazon Neptune Resources för ytterligare blogginlägg och videor.


Om författarna

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Effektrekommendation och sökning med hjälp av en IMDb-kunskapsgraf – Del 1 PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Tidsstämpel:

Mer från AWS maskininlärning