Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Vermogensaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek - Deel 1

De IMDb en Box Office Mojo Movies/TV/OTT licentieerbaar datapakket biedt een breed scala aan entertainmentmetadata, waaronder meer dan 1 miljard gebruikersbeoordelingen; credits voor meer dan 11 miljoen cast- en crewleden; 9 miljoen film-, tv- en amusementstitels; en wereldwijde box office-rapportagegegevens uit meer dan 60 landen. Veel AWS media- en entertainmentklanten geven licenties voor IMDb-gegevens via AWS-gegevensuitwisseling om de ontdekking van inhoud te verbeteren en de betrokkenheid en retentie van klanten te vergroten.

In deze driedelige serie laten we zien hoe u IMDb-gegevens kunt transformeren en voorbereiden om zoeken buiten de catalogus mogelijk te maken voor uw gebruiksscenario's voor media en entertainment. In dit bericht bespreken we hoe IMDb-gegevens kunnen worden voorbereid en hoe de gegevens kunnen worden geladen Amazone Neptunus voor het opvragen. In Deel 2, bespreken we hoe te gebruiken Amazon Neptunus ML om inbeddingen van het neurale netwerk (GNN) van de IMDb-grafiek te trainen. In deel 3 doorlopen we een zoekactie buiten de catalogus van een demotoepassing die mogelijk wordt gemaakt door de GNN-inbeddingen.

Overzicht oplossingen

In deze serie gebruiken we de IMDb en Box Office Mojo Movies/TV/OTT gelicentieerd datapakket om te laten zien hoe u uw eigen applicaties kunt bouwen met behulp van grafieken.

Dit datapakket met licentie bestaat uit JSON-bestanden met IMDb-metadata voor meer dan 9 miljoen titels (waaronder films, tv- en OTT-shows en videogames) en credits voor meer dan 11 miljoen cast-, crew- en entertainmentprofessionals. Het metadatapakket van IMDb bevat ook meer dan 1 miljard gebruikersbeoordelingen, evenals plots, genres, gecategoriseerde trefwoorden, posters, credits en meer.

IMDb levert gegevens via AWS Data Exchange, waardoor het voor u ongelooflijk eenvoudig is om toegang te krijgen tot gegevens om uw entertainmentervaringen te versterken en naadloos te integreren met andere AWS-services. IMDb geeft gegevens in licentie aan een breed scala aan media- en entertainmentklanten, waaronder betaaltelevisie, direct-to-consumer en streaming-operators, om het ontdekken van inhoud te verbeteren en de betrokkenheid en retentie van klanten te vergroten. Licentieklanten gebruiken IMDb-gegevens ook om titelzoekopdrachten in en buiten de catalogus te verbeteren en relevante aanbevelingen te doen.

We gebruiken de volgende diensten als onderdeel van deze oplossing:

Het volgende diagram toont de workflow voor deel 1 van de driedelige blogreeks.

In dit bericht doorlopen we de volgende stappen op hoog niveau:

  1. Voorzien van Neptune-bronnen met AWS CloudFormatie.
  2. Toegang tot de IMDb-gegevens van AWS Data Exchange.
  3. Kloon het GitHub repo.
  4. Verwerk de gegevens in Neptune Gremlin-formaat.
  5. Laad de gegevens in een Neptune-cluster.
  6. Vraag de gegevens op met Gremlin Query Language.

Voorwaarden

De IMDb-gegevens die in dit bericht worden gebruikt, vereisen een IMDb-inhoudslicentie en een betaald abonnement op het IMDb- en Box Office Mojo Movies/TV/OTT-licentiepakket in AWS Data Exchange. Voor informatie over een licentie en toegang tot voorbeeldgegevens gaat u naar ontwikkelaar.imdb.com.

Bovendien, om mee te gaan met dit bericht, zou je een AWS-account en bekendheid met Neptune, de Gremlin-zoektaal en SageMaker.

Voorzie Neptune-resources met AWS CloudFormation

Nu u de structuur van de oplossing hebt gezien, kunt u deze in uw account implementeren om een ​​voorbeeldworkflow uit te voeren.

U kunt de stapel starten in AWS-regio us-east-1 op de AWS CloudFormation-console door te kiezen Start Stack:

Startknop

Raadpleeg voor het starten van de stapel in een andere regio De Neptune ML AWS CloudFormation-template gebruiken om snel aan de slag te gaan in een nieuw DB-cluster.

De volgende schermafbeelding toont de te leveren stackparameters.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het maken van een stapel duurt ongeveer 20 minuten. U kunt de voortgang volgen op de AWS CloudFormation-console.

Wanneer de stapel compleet is, bent u nu klaar om de IMDb-gegevens te verwerken. Op de Uitgangen tab voor de stapel, noteer de waarden voor NeptuneExportApiUri en NeptuneLoadFromS3IAMRoleArn. Ga vervolgens verder met de volgende stappen om toegang te krijgen tot de IMDb-dataset.

Toegang tot de IMDb-gegevens

IMDb publiceert zijn dataset eenmaal per dag op AWS Data Exchange. Om de IMDb-gegevens te gebruiken, abonneert u zich eerst op de gegevens in AWS Data Exchange, waarna u de gegevens kunt exporteren naar Amazon eenvoudige opslagservice (Amazone S3). Voer de volgende stappen uit:

  1. Kies op de AWS Data Exchange-console: Door catalogus bladeren in het navigatievenster.
  2. Voer in het zoekveld in IMDb.
  3. Abonneer u op een van beide IMDb en Box Office Mojo Movie/TV/OTT-gegevens (SAMPLE) or IMDb en Box Office Mojo Movie/TV/OTT-gegevens.
  4. Voer de onderstaande stappen uit werkplaats om de IMDb-gegevens van AWS Data Exchange naar Amazon S3 te exporteren.

Kloon de GitHub-repository

Voer de volgende stappen uit:

  1. Open de SageMaker-instantie die u hebt gemaakt op basis van de CloudFormation-sjabloon.
  2. Kloon de GitHub-opslagplaats.

Verwerk IMDb-gegevens in Neptune Gremlin-indeling

Om de gegevens toe te voegen aan Amazon Neptune, verwerken we de gegevens in het Neptune gremlin-formaat. Vanuit de GitHub-repository rennen we process_imdb_data.py om de bestanden te verwerken. Het script maakt de CSV's om de gegevens in Neptune te laden. Upload de gegevens naar een S3-bucket en noteer de S3-URI-locatie.

Merk op dat we voor dit bericht de dataset filteren om alleen films op te nemen. Je hebt ofwel een AWS lijm baan of Amazon EMR om de volledige gegevens te verwerken.

Voer de volgende stappen uit om de IMDb-gegevens te verwerken met AWS Glue:

  1. Kies op de AWS Glue-console in het navigatievenster: Vacatures.
  2. Op de Vacatures pagina, kies Spark-scripteditor.
  3. Onder Opties, kiezen Upload en bewerk bestaand script en upload het 1_process_imdb_data.py bestand.
  4. Kies Maken.
  5. Kies op de editorpagina Job Details.
  6. Op de Job Details pagina, voeg de volgende opties toe:
    1. Voor Naam, ga naar binnen imdb-graph-processor.
    2. Voor Omschrijving, ga naar binnen processing IMDb dataset and convert to Neptune Gremlin Format.
    3. Voor IAM-rol, gebruik een bestaande AWS Glue-rol of maak een IAM-rol aan voor AWS Glue. Zorg ervoor dat u uw Amazon S3-locatie toestemming geeft voor het pad voor onbewerkte gegevens en uitvoergegevens.
    4. Voor Type werknemer, kiezen G 2X.
    5. Voor Gevraagd aantal werknemers, voer 20 in.
  7. Uitvouwen Geavanceerde eigenschappen.
  8. Onder Taakparameters, kiezen Nieuwe parameter toevoegen en voer het volgende sleutelwaardepaar in:
    1. Voer in voor de sleutel --output_bucket_path.
    2. Voer voor de waarde het S3-pad in waar u de bestanden wilt opslaan. Dit pad wordt ook gebruikt om de gegevens in de Neptune-cluster te laden.
  9. Kies om nog een parameter toe te voegen Nieuwe parameter toevoegen en voer het volgende sleutelwaardepaar in:
    1. Voer in voor de sleutel --raw_data_path.
    2. Voer voor de waarde het S3-pad in waar de onbewerkte gegevens zijn opgeslagen.
  10. Kies Bespaar en kies dan lopen.

Deze klus duurt ongeveer 2.5 uur.

De volgende tabel bevat details over de knooppunten voor het grafiekgegevensmodel.

Omschrijving label
Belangrijkste castleden Persoon
Film in lang formaat Film
Genre van films Genre
Trefwoordbeschrijvingen van films Keyword
Locaties van films opnemen plaats
Beoordelingen voor films waardering
Awards-evenement waar de film een ​​prijs ontving awards

Evenzo toont de volgende tabel enkele van de randen die in de grafiek zijn opgenomen. Er zullen in totaal 24 randtypes zijn.

Omschrijving label Van Naar
Films waarin een actrice heeft gespeeld gecast door actrice Film Persoon
Films waarin een acteur heeft gespeeld gecast-door-acteur Film Persoon
Sleutelwoorden in een film op karakter beschreven-per-karakter-trefwoord Film trefwoord
Genre van een film is-genre Film Genre
Plaats waar de film is opgenomen Gefilmd op Film plaats
Componist van een film Bemand door componist Film Persoon
nominatie toe te kennen Genomineerd voor Film Awards
Prijswinnaar Heeft gewonnen Film Awards

Laad de gegevens in een Neptune-cluster

Navigeer in de opslagplaats naar de graph_creation map en voer de 2_load.ipynb. Om de gegevens naar Neptune te laden, gebruikt u de opdracht %load in de notebook en geeft u uw AWS Identiteits- en toegangsbeheer (IAM) rol ARN en Amazon S3 locatie van uw verwerkte gegevens.

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

De volgende schermafbeelding toont de uitvoer van de opdracht.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Houd er rekening mee dat het laden van gegevens ongeveer 1.5 uur in beslag neemt. Gebruik de volgende opdracht om de status van de lading te controleren:

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

Wanneer het laden is voltooid, wordt de status weergegeven LOAD_COMPLETED, zoals weergegeven in de volgende schermafbeelding.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Alle gegevens worden nu in grafieken geladen en u kunt beginnen met het opvragen van de grafiek.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Fig: voorbeeld van een kennisgrafiekweergave van films in de IMDb-dataset. Films "Saving Private Ryan" en "Bridge of Spies" hebben gemeenschappelijke connecties zoals acteur en regisseur, evenals indirecte connecties via films zoals "The Catcher was a Spy" in het grafische netwerk.

Vraag de gegevens op met behulp van Gremlin

Om toegang te krijgen tot de grafiek in Neptune gebruiken we de Gremlin-querytaal. Voor meer informatie, zie Een Neptunusgrafiek bevragen.

De grafiek bestaat uit een uitgebreide set informatie die direct kan worden opgevraagd met behulp van Gremlin. In deze sectie laten we een paar voorbeelden zien van vragen die u kunt beantwoorden met de grafiekgegevens. Navigeer in de opslagplaats naar de graph_creation map en voer de 3_queries.ipynb notitieboekje. In het volgende gedeelte worden alle query's van het notitieblok besproken.

Wereldwijd bruto van films die zijn opgenomen in Nieuw-Zeeland, met een beoordeling van minimaal 7.5

De volgende zoekopdracht retourneert het wereldwijde bruto aantal films dat is opgenomen in Nieuw-Zeeland, met een minimumscore van 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'])

De volgende schermafbeelding toont de queryresultaten.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Top 50 films die behoren tot actie- en dramagenres en met Oscarwinnende acteurs

In het volgende voorbeeld willen we de top 50 films vinden in twee verschillende genres (actie en drama) met Oscar-winnende acteurs. We kunnen dit doen door drie verschillende queries te gebruiken en de informatie samen te voegen met behulp van Panda's:

%%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'])

De volgende schermafbeelding toont onze resultaten.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Topfilms met gemeenschappelijke zoekwoorden 'tattoo' en 'huurmoordenaar'

De volgende zoekopdracht retourneert films met de trefwoorden 'tattoo' en 'huurmoordenaar':

%%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'])

De volgende schermafbeelding toont onze resultaten.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Films met gemeenschappelijke acteurs

In de volgende zoekopdracht vinden we films met Leonardo DiCaprio en 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'))

We krijgen de volgende resultaten.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Conclusie

In dit bericht hebben we je de kracht van de IMDb- en Box Office Mojo Movies/TV/OTT-gegevensset laten zien en hoe je deze in verschillende gebruikssituaties kunt gebruiken door de gegevens om te zetten in een grafiek met behulp van Gremlin-query's. In Deel 2 van deze serie laten we u zien hoe u op basis van deze gegevens grafische neurale netwerkmodellen kunt maken die kunnen worden gebruikt voor stroomafwaartse taken.

Voor meer informatie over Neptunus en Gremlin, zie Amazon Neptune-bronnen voor extra blogposts en video's.


Over de auteurs

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Gaurav Rele is een datawetenschapper bij het Amazon ML Solution Lab, waar hij samenwerkt met AWS-klanten in verschillende branches om hun gebruik van machine learning en AWS Cloud-services te versnellen om hun zakelijke uitdagingen op te lossen.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Matthijs Rhodos is een datawetenschapper die ik werk in het Amazon ML Solutions Lab. Hij is gespecialiseerd in het bouwen van Machine Learning-pijplijnen met concepten als Natural Language Processing en Computer Vision.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Divya Bhargavi is Data Scientist en Media and Entertainment Vertical Lead bij het Amazon ML Solutions Lab, waar ze hoogwaardige zakelijke problemen voor AWS-klanten oplost met behulp van Machine Learning. Ze werkt aan het begrijpen van afbeeldingen/video's, aanbevelingssystemen voor kennisgrafieken en gebruiksscenario's voor voorspellende advertenties.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Karan Sindwani is een Data Scientist bij Amazon ML Solutions Lab, waar hij deep learning-modellen bouwt en implementeert. Hij is gespecialiseerd op het gebied van computervisie. In zijn vrije tijd houdt hij van wandelen.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Soji Adeshin is een toegepaste wetenschapper bij AWS, waar hij op grafische neurale netwerken gebaseerde modellen ontwikkelt voor machine learning op grafische taken met toepassingen voor fraude en misbruik, kennisgrafieken, aanbevelingssystemen en levenswetenschappen. In zijn vrije tijd houdt hij van lezen en koken.

Krachtaanbeveling en zoeken met behulp van een IMDb-kennisgrafiek – Deel 1 PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Vidya Sagar Ravipati is een manager bij het Amazon ML Solutions Lab, waar hij zijn enorme ervaring in grootschalige gedistribueerde systemen en zijn passie voor machine learning gebruikt om AWS-klanten in verschillende branches te helpen hun AI- en cloud-adoptie te versnellen.

Tijdstempel:

Meer van AWS-machine learning