Logotipo de Zephyrnet

Recomendación de poder y búsqueda usando un gráfico de conocimiento de IMDb – Parte 1

Fecha:

La IMDb y Box Office Mojo Películas/TV/OTT el paquete de datos con licencia proporciona una amplia gama de metadatos de entretenimiento, incluidas más de mil millones de calificaciones de usuarios; créditos para más de 1 millones de miembros del elenco y del equipo; 11 millones de títulos de películas, televisión y entretenimiento; y datos de informes de taquilla global de más de 9 países. Muchos clientes de medios y entretenimiento de AWS obtienen licencias de datos de IMDb a través de Intercambio de datos de AWS para mejorar el descubrimiento de contenido y aumentar el compromiso y la retención del cliente.

En esta serie de tres partes, demostramos cómo transformar y preparar datos de IMDb para potenciar la búsqueda fuera de catálogo para sus casos de uso de medios y entretenimiento. En esta publicación, discutimos cómo preparar datos de IMDb y cargar los datos en Amazonas Neptuno para consultar En Parte 2, discutimos cómo usar Aprendizaje automático de Amazon Neptune para entrenar incrustaciones de redes neuronales gráficas (GNN) a partir del gráfico de IMDb. En la Parte 3, recorremos una búsqueda fuera de catálogo de una aplicación de demostración que funciona con las incrustaciones de GNN.

Resumen de la solución

En esta serie, utilizamos el IMDb y Box Office Mojo Películas/TV/OTT paquete de datos con licencia para mostrar cómo puede crear sus propias aplicaciones utilizando gráficos.

Este paquete de datos con licencia consta de archivos JSON con metadatos de IMDb para más de 9 millones de títulos (que incluyen películas, programas de TV y OTT y videojuegos) y créditos para más de 11 millones de actores, equipo y profesionales del entretenimiento. El paquete de metadatos de IMDb también incluye más de mil millones de calificaciones de usuarios, así como tramas, géneros, palabras clave categorizadas, carteles, créditos y más, .

IMDb entrega datos a través de AWS Data Exchange, lo que hace que sea increíblemente sencillo para usted acceder a los datos para potenciar sus experiencias de entretenimiento e integrarse sin inconvenientes con otros servicios de AWS. IMDb otorga licencias de datos a una amplia gama de clientes de medios y entretenimiento, incluidos los operadores de televisión paga, directo al consumidor y de transmisión, para mejorar el descubrimiento de contenido y aumentar la participación y retención de clientes. Los clientes de licencias también utilizan los datos de IMDb para mejorar la búsqueda de títulos dentro y fuera del catálogo y generar recomendaciones relevantes.

Utilizamos los siguientes servicios como parte de esta solución:

El siguiente diagrama muestra el flujo de trabajo para la parte 1 de la serie de blogs de 3 partes.

En esta publicación, recorremos los siguientes pasos de alto nivel:

  1. Aprovisione los recursos de Neptune con Formación en la nube de AWS.
  2. Acceda a los datos de IMDb desde AWS Data Exchange.
  3. Clona el Repositorio GitHub.
  4. Procese los datos en formato Neptune Gremlin.
  5. Cargue los datos en un clúster de Neptune.
  6. Consulta los datos usando Gremlin Query Language.

Requisitos previos

Los datos de IMDb utilizados en esta publicación requieren una licencia de contenido de IMDb y una suscripción paga al paquete de licencias de IMDb y Box Office Mojo Movies/TV/OTT en AWS Data Exchange. Para solicitar información sobre una licencia y acceder a datos de muestra, visite desarrollador.imdb.com.

Además, para seguir con esta publicación, debe tener un Cuenta de AWS y familiaridad con Neptune, el lenguaje de consulta de Gremlin y SageMaker.

Aprovisione recursos de Neptune con AWS CloudFormation

Ahora que ha visto la estructura de la solución, puede implementarla en su cuenta para ejecutar un flujo de trabajo de ejemplo.

Puede lanzar la pila en la región de AWS us-east-1 en la consola de AWS CloudFormation eligiendo Pila de lanzamiento:

Botón de lanzamiento

Para lanzar la pila en una región diferente, consulte Uso de la plantilla Neptune ML AWS CloudFormation para comenzar rápidamente en un nuevo clúster de base de datos.

La siguiente captura de pantalla muestra los parámetros de pila que se deben proporcionar.

La creación de la pila tarda aproximadamente 20 minutos. Puede monitorear el progreso en la consola de AWS CloudFormation.

Cuando la pila esté completa, estará listo para procesar los datos de IMDb. Sobre el Salidas ficha para la pila, tenga en cuenta los valores para NeptuneExportApiUri y NeptuneLoadFromS3IAMRoleArn. Luego continúe con los siguientes pasos para obtener acceso al conjunto de datos de IMDb.

Accede a los datos de IMDb

IMDb publica su conjunto de datos una vez al día en AWS Data Exchange. Para usar los datos de IMDb, primero se suscribe a los datos en AWS Data Exchange, luego puede exportar los datos a Servicio de almacenamiento simple de Amazon (Amazon S3). Complete los siguientes pasos:

  1. En la consola de AWS Data Exchange, elija Examinar catálogo en el panel de navegación.
  2. En el campo de búsqueda, ingrese IMDb.
  3. Suscríbete a cualquiera Datos de películas/TV/OTT de IMDb y Box Office Mojo (MUESTRA) or Datos de películas/TV/OTT de IMDb y Box Office Mojo.
  4. Complete los pasos a continuación taller para exportar los datos de IMDb de AWS Data Exchange a Amazon S3.

Clonar el repositorio de GitHub

Complete los siguientes pasos:

  1. Abra la instancia de SageMaker que creó a partir de la plantilla de CloudFormation.
  2. Clonar el repositorio de GitHub.

Procesar datos de IMDb en formato Neptune Gremlin

Para agregar los datos a Amazon Neptune, procesamos los datos en formato Neptune gremlin. Desde el repositorio de GitHub, ejecutamos process_imdb_data.py para procesar los archivos. El script crea los CSV para cargar los datos en Neptune. Cargue los datos en un depósito de S3 y anote la ubicación del URI de S3.

Tenga en cuenta que para esta publicación, filtramos el conjunto de datos para incluir solo películas. Necesitas un Pegamento AWS trabajo o EMR de Amazon para procesar los datos completos.

Para procesar los datos de IMDb con AWS Glue, complete los siguientes pasos:

  1. En la consola de AWS Glue, en el panel de navegación, elija Empleo.
  2. En Empleo página, elige Editor de secuencias de comandos de chispa.
  3. under Opciones, escoger Cargar y editar script existente y subir el 1_process_imdb_data.py archivo.
  4. Elige Crear.
  5. En la página del editor, seleccione Detalles del trabajo.
  6. En Detalles del trabajo página, agregue las siguientes opciones:
    1. Nombre, introduzca imdb-graph-processor.
    2. Descripción, introduzca processing IMDb dataset and convert to Neptune Gremlin Format.
    3. Rol de IAM, use un rol de AWS Glue existente o crear un rol de IAM para AWS Glue. Asegúrese de otorgar permiso a su ubicación de Amazon S3 para la ruta de datos sin procesar y datos de salida.
    4. Tipo de trabajador, escoger 2X.
    5. Número solicitado de trabajadores, ingrese 20.
  7. Expandir Propiedades avanzadas.
  8. under Parámetros de trabajo, escoger Añadir nuevo parámetro e ingrese el siguiente par de valores clave:
    1. Para la clave, ingrese --output_bucket_path.
    2. Para el valor, ingrese la ruta S3 donde desea guardar los archivos. Esta ruta también se usa para cargar los datos en el clúster de Neptune.
  9. Para agregar otro parámetro, elija Añadir nuevo parámetro e ingrese el siguiente par de valores clave:
    1. Para la clave, ingrese --raw_data_path.
    2. Para el valor, ingrese la ruta S3 donde se almacenan los datos sin procesar.
  10. Elige Guardar y luego elige Ejecutar.

Este trabajo tarda aproximadamente 2.5 horas en completarse.

La siguiente tabla proporciona detalles sobre los nodos para el modelo de datos del gráfico.

Descripción Label
Miembros principales del elenco Persona
película de formato largo Película
genero de peliculas Género
Descripciones de palabras clave de películas Palabra clave
Lugares de rodaje de películas Colocar
Calificaciones de películas .
Evento de entrega de premios donde la película recibió un premio premios

De igual forma, la siguiente tabla muestra algunas de las aristas incluidas en el gráfico. Habrá en total 24 tipos de borde.

Descripción Label Desde A
Películas en las que ha actuado una actriz elegido por la actriz Película Persona
Películas en las que ha actuado un actor elegido por el actor Película Persona
Palabras clave en una película por personaje descrito por palabra clave de carácter Película keyword
género de una película es-género Película Género
Lugar donde se rodó la película Filmado en Película Colocar
Compositor de una película Tripulado por el compositor Película Persona
nominación de premio Nominado a Película Premios y galardones
Ganador del premio Ha ganado Película Premios y galardones

Cargue los datos en un clúster de Neptune

En el repositorio, navegue hasta el graph_creation carpeta y ejecute el 2_load.ipynb. Para cargar los datos en Neptune, use el comando %load en el cuaderno y proporcione su Gestión de identidades y accesos de AWS (IAM) ARN del rol y ubicación de Amazon S3 de sus datos procesados.

role = '<NeptuneLoadFromS3IAMRoleArn>'
%load -l {role} -s <s3_location> --store-to load_id

La siguiente captura de pantalla muestra la salida del comando.

Tenga en cuenta que la carga de datos tarda aproximadamente 1.5 horas en completarse. Para verificar el estado de la carga, use el siguiente comando:

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

Cuando se completa la carga, se muestra el estado LOAD_COMPLETED, como se muestra en la siguiente captura de pantalla.

Todos los datos ahora están cargados en gráficos y puede comenzar a consultar el gráfico.

Fig: Ejemplo de representación gráfica de conocimientos de películas en el conjunto de datos de IMDb. Las películas "Salvando al soldado Ryan" y "El puente de los espías" tienen conexiones comunes como actor y director, así como conexiones indirectas a través de películas como "El guardián era un espía" en la red gráfica.

Consultar los datos usando Gremlin

Para acceder al gráfico en Neptune, usamos el lenguaje de consulta Gremlin. Para obtener más información, consulte Consultar un gráfico de Neptuno.

El gráfico consta de un rico conjunto de información que se puede consultar directamente con Gremlin. En esta sección, mostramos algunos ejemplos de preguntas que puede responder con los datos del gráfico. En el repositorio, navegue hasta el graph_creation carpeta y ejecute el 3_queries.ipynb computadora portátil. La siguiente sección repasa todas las consultas del cuaderno.

Recaudación mundial de películas rodadas en Nueva Zelanda, con una calificación mínima de 7.5

La siguiente consulta devuelve la recaudación mundial de películas filmadas en Nueva Zelanda, con una calificación mínima de 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'])

La siguiente captura de pantalla muestra los resultados de la consulta.

Las 50 mejores películas que pertenecen a los géneros de acción y drama y tienen actores ganadores del Oscar

En el siguiente ejemplo, queremos encontrar las 50 mejores películas en dos géneros diferentes (acción y drama) con actores ganadores del Oscar. Podemos hacer esto usando tres consultas diferentes y fusionando la información usando 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'])

La siguiente captura de pantalla muestra nuestros resultados.

Principales películas que tienen palabras clave comunes "tatuaje" y "asesino"

La siguiente consulta devuelve películas con las palabras clave "tatuaje" y "asesino":

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

La siguiente captura de pantalla muestra nuestros resultados.

Películas que tienen actores comunes

En la siguiente consulta, encontramos películas que tienen a Leonardo DiCaprio y 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'))

Obtenemos los siguientes resultados.

Conclusión

En esta publicación, le mostramos el poder del conjunto de datos de IMDb y Box Office Mojo Movies/TV/OTT y cómo puede usarlo en varios casos de uso al convertir los datos en un gráfico usando consultas Gremlin. En Parte 2 de esta serie, le mostramos cómo crear modelos de redes neuronales gráficas en estos datos que se pueden usar para tareas posteriores.

Para obtener más información acerca de Neptune y Gremlin, consulte Recursos de Amazon Neptune para publicaciones de blog y videos adicionales.


Acerca de los autores

Gaurav Relé es un científico de datos en el laboratorio de soluciones de Amazon ML, donde trabaja con clientes de AWS en diferentes verticales para acelerar el uso del aprendizaje automático y los servicios en la nube de AWS para resolver sus desafíos comerciales.

mateo rodas es un científico de datos que trabaja en Amazon ML Solutions Lab. Se especializa en la construcción de canalizaciones de aprendizaje automático que involucran conceptos como el procesamiento del lenguaje natural y la visión por computadora.

divya bhargavi es científica de datos y líder vertical de medios y entretenimiento en Amazon ML Solutions Lab, donde resuelve problemas comerciales de alto valor para los clientes de AWS mediante el aprendizaje automático. Trabaja en comprensión de imágenes/videos, sistemas de recomendación de gráficos de conocimiento, casos de uso de publicidad predictiva.

Karan Sindwani es científico de datos en Amazon ML Solutions Lab, donde crea e implementa modelos de aprendizaje profundo. Se especializa en el área de visión artificial. En su tiempo libre, disfruta del senderismo.

Soji Adeshina es científico aplicado en AWS, donde desarrolla modelos basados ​​en redes neuronales gráficas para aprendizaje automático en tareas de gráficos con aplicaciones para fraude y abuso, gráficos de conocimiento, sistemas de recomendación y ciencias de la vida. En su tiempo libre le gusta leer y cocinar.

Vidya Sagar Ravipati es Gerente en Amazon ML Solutions Lab, donde aprovecha su vasta experiencia en sistemas distribuidos a gran escala y su pasión por el aprendizaje automático para ayudar a los clientes de AWS en diferentes verticales de la industria a acelerar su adopción de la nube y la inteligencia artificial.

punto_img

Información más reciente

punto_img