Esta série de três partes demonstra como usar redes neurais gráficas (GNNs) e Amazon Netuno para gerar recomendações de filmes usando o IMDb e Box Office Mojo Filmes/TV/OTT pacote de dados licenciáveis, que fornece uma ampla variedade de metadados de entretenimento, incluindo mais de 1 bilhão de classificações de usuários; créditos para mais de 11 milhões de membros do elenco e da equipe; 9 milhões de títulos de filmes, TV e entretenimento; e dados de relatórios de bilheteria global de mais de 60 países. Muitos clientes de mídia e entretenimento da AWS licenciam dados IMDb por meio de Troca de dados da AWS para melhorar a descoberta de conteúdo e aumentar o envolvimento e a retenção do cliente.
O diagrama a seguir ilustra a arquitetura completa implementada como parte desta série.
In Parte 1, discutimos as aplicações de GNNs e como transformar e preparar nossos dados IMDb em um gráfico de conhecimento (KG). Baixamos os dados do AWS Data Exchange e os processamos em Cola AWS para gerar arquivos KG. Os arquivos KG foram armazenados em Serviço de armazenamento simples da Amazon (Amazon S3) e depois carregado em Amazon Netuno.
In Parte 2, demonstramos como usar Amazon Netuno ML (em Amazon Sage Maker) para treinar o KG e criar incorporações de KG.
Nesta postagem, orientamos você sobre como aplicar nossos embeddings KG treinados no Amazon S3 para casos de uso de pesquisa fora do catálogo usando Serviço Amazon OpenSearch e AWS Lambda. Você também implanta um aplicativo Web local para uma experiência de pesquisa interativa. Todos os recursos usados neste post podem ser criados usando um único Kit de desenvolvimento em nuvem da AWS (AWS CDK), conforme descrito posteriormente na postagem.
BACKGROUND
Você já pesquisou inadvertidamente um título de conteúdo que não estava disponível em uma plataforma de streaming de vídeo? Se sim, você descobrirá que, em vez de enfrentar uma página de resultados de pesquisa em branco, encontrará uma lista de filmes do mesmo gênero, com elenco ou membros da equipe. Essa é uma experiência de pesquisa fora do catálogo!
Pesquisa fora do catálogo (OOC) é quando você insere uma consulta de pesquisa que não tem correspondência direta em um catálogo. Esse evento ocorre com frequência em plataformas de streaming de vídeo que compram constantemente uma variedade de conteúdo de vários fornecedores e empresas de produção por um tempo limitado. A ausência de relevância ou mapeamento do catálogo de uma empresa de streaming para grandes bases de conhecimento de filmes e programas pode resultar em uma experiência de pesquisa inferior para clientes que consultam conteúdo OOC, diminuindo assim o tempo de interação com a plataforma. Esse mapeamento pode ser feito mapeando manualmente consultas OOC frequentes para catalogar o conteúdo ou pode ser automatizado usando aprendizado de máquina (ML).
Neste post, ilustramos como lidar com OOC utilizando o poder do conjunto de dados IMDb (a principal fonte de metadados de entretenimento global) e gráficos de conhecimento.
Serviço OpenSearch é um serviço totalmente gerenciado que facilita a execução de análises de log interativas, monitoramento de aplicativos em tempo real, pesquisa de sites e muito mais. O OpenSearch é um conjunto de pesquisa e análise distribuída de código aberto derivado do Elasticsearch. O OpenSearch Service oferece as versões mais recentes do OpenSearch, suporte para 19 versões do Elasticsearch (versões 1.5 a 7.10), bem como recursos de visualização desenvolvidos por OpenSearch Dashboards e Kibana (versões 1.5 a 7.10). Atualmente, o OpenSearch Service tem dezenas de milhares de clientes ativos com centenas de milhares de clusters sob gerenciamento, processando trilhões de solicitações por mês. O serviço OpenSearch oferece pesquisa kNN, que pode aprimorar a pesquisa em casos de uso, como recomendações de produtos, detecção de fraudes e imagem, vídeo e alguns cenários semânticos específicos, como similaridade de documento e consulta. Para obter mais informações sobre as funcionalidades de pesquisa baseadas em linguagem natural do serviço OpenSearch, consulte Criação de um aplicativo de pesquisa baseado em NLU com o Amazon SageMaker e o recurso KNN do Amazon OpenSearch Service.
Visão geral da solução
Nesta postagem, apresentamos uma solução para lidar com situações OOC por meio da pesquisa de incorporação baseada em gráfico de conhecimento usando os recursos de pesquisa de k-vizinho mais próximo (kNN) do OpenSearch Service. Os principais serviços da AWS usados para implementar esta solução são OpenSearch Service, SageMaker, Lambda e Amazon S3.
Dê uma olhada na Parte 1 e Parte 2 desta série para saber mais sobre a criação de gráficos de conhecimento e incorporação de GNN usando o Amazon Neptune ML.
Nossa solução OOC pressupõe que você tenha um KG combinado obtido pela fusão de uma empresa de streaming KG e IMDb KG. Isso pode ser feito por meio de técnicas simples de processamento de texto que combinam os títulos com o tipo de título (filme, série, documentário), elenco e equipe. Além disso, esse grafo de conhecimento conjunto deve ser treinado para gerar incorporações de grafos de conhecimento por meio dos pipelines mencionados em Parte 1 e Parte 2. O diagrama a seguir ilustra uma visão simplificada do KG combinado.
Para demonstrar a funcionalidade de pesquisa OOC com um exemplo simples, dividimos o gráfico de conhecimento da IMDb em catálogo do cliente e catálogo fora do cliente. Marcamos os títulos que contêm “Toy Story” como um recurso de catálogo fora do cliente e o restante do gráfico de conhecimento da IMDb como catálogo do cliente. Em um cenário em que o catálogo do cliente não é aprimorado ou mesclado com bancos de dados externos, uma pesquisa por “toy story” retornaria qualquer título que tivesse as palavras “toy” ou “story” em seus metadados, com a pesquisa de texto OpenSearch. Se o catálogo do cliente fosse mapeado para o IMDb, seria mais fácil perceber que a consulta “toy story” não existe no catálogo e que as principais correspondências no IMDb são “Toy Story”, “Toy Story 2”, “Toy Story Story 3”, “Toy Story 4” e “Charlie: Toy Story” em ordem decrescente de relevância com correspondência de texto. Para obter resultados dentro do catálogo para cada uma dessas correspondências, podemos gerar cinco filmes mais próximos na similaridade de incorporação kNN com base no catálogo do cliente (do KG conjunto) por meio do serviço OpenSearch.
Uma experiência OOC típica segue o fluxo ilustrado na figura a seguir.
O vídeo a seguir mostra os cinco principais resultados OOC (número de acessos) para a consulta “toy story” e correspondências relevantes no catálogo de clientes (número de recomendações).
Aqui, a consulta corresponde ao gráfico de conhecimento usando a pesquisa de texto no OpenSearch Service. Em seguida, mapeamos as incorporações da correspondência de texto para os títulos do catálogo do cliente usando o índice kNN do OpenSearch Service. Como a consulta do usuário não pode ser mapeada diretamente para as entidades do gráfico de conhecimento, usamos uma abordagem de duas etapas para primeiro encontrar semelhanças de consulta com base no título e, em seguida, itens semelhantes ao título usando incorporações do gráfico de conhecimento. Nas seções a seguir, percorremos o processo de configuração de um cluster de serviço OpenSearch, criando e carregando índices de gráfico de conhecimento e implantando a solução como um aplicativo da web.
Pré-requisitos
Para implementar esta solução, você deve ter um Conta da AWS, familiaridade com OpenSearch Service, SageMaker, Lambda e Formação da Nuvem AWS, e concluiu as etapas em Parte 1 e Parte 2 desta série.
Lançar recursos da solução
O diagrama de arquitetura a seguir mostra o fluxo de trabalho fora do catálogo.
Você usará o AWS Cloud Development Kit (CDK) para provisionar os recursos necessários para os aplicativos de pesquisa OOC. O código para iniciar esses recursos executa as seguintes operações:
- Cria uma VPC para os recursos.
- Cria um domínio do serviço OpenSearch para o aplicativo de pesquisa.
- Cria uma função Lambda para processar e carregar metadados e incorporações de filmes para índices do OpenSearch Service (
**-ReadFromOpenSearchLambda-**
). - Cria uma função do Lambda que usa como entrada a consulta do usuário de um aplicativo da web e retorna títulos relevantes do OpenSearch (
**-LoadDataIntoOpenSearchLambda-**
). - Cria um API Gateway que adiciona uma camada adicional de segurança entre a interface do usuário do aplicativo web e o Lambda.
Para começar, conclua as seguintes etapas:
- Execute o código e os notebooks de Parte 1 e Parte 2.
- Navegue até a
part3-out-of-catalog
pasta no repositório de código.
- Inicie o AWS CDK a partir do terminal com o comando
bash launch_stack.sh
. - Forneça os dois caminhos de arquivo S3 criados na Parte 2 como entrada:
- O caminho S3 para o arquivo CSV de incorporações de filme.
- O caminho S3 para o arquivo de nó do filme.
- Aguarde até que o script forneça todos os recursos necessários e termine a execução.
- Copie o URL do API Gateway que o script do AWS CDK imprime e salve-o. (Usamos isso para o aplicativo Streamlit mais tarde).
Criar um domínio de serviço OpenSearch
Para fins de ilustração, você cria um domínio de pesquisa em uma zona de disponibilidade em uma instância r6g.large.search em uma VPC e sub-rede seguras. Observe que a prática recomendada seria configurar três zonas de disponibilidade com uma instância principal e duas instâncias de réplica.
Crie um índice do Serviço OpenSearch e carregue dados
Você usa funções do Lambda (criadas usando o comando de pilha de inicialização do AWS CDK) para criar os índices do OpenSearch Service. Para iniciar a criação do índice, conclua as seguintes etapas:
- No console do Lambda, abra o
LoadDataIntoOpenSearchLambda
Função Lambda. - No Test guia, escolha Test para criar e ingerir dados no índice do serviço OpenSearch.
O código a seguir para esta função do Lambda pode ser encontrado em part3-out-of-catalog/cdk/ooc/lambdas/LoadDataIntoOpenSearchLambda/lambda_handler.py
:
A função executa as seguintes tarefas:
- Carrega o arquivo de nó do filme IMDB KG que contém os metadados do filme e suas incorporações associadas dos caminhos do arquivo S3 que foram passados para o arquivo de criação da pilha
launch_stack.sh
. - Mescla os dois arquivos de entrada para criar um único dataframe para criação de índice.
- Inicializa o cliente OpenSearch Service usando a biblioteca Boto3 Python.
- Cria dois índices para texto (
ooc_text
) e pesquisa de incorporação kNN (ooc_knn
) e carrega dados em massa do dataframe combinado por meio doingest_data_into_ops
função.
Esse processo de ingestão de dados leva de 5 a 10 minutos e pode ser monitorado por meio do Amazon CloudWatch loga no do Paciente guia da função Lambda.
Você cria dois índices para ativar a pesquisa baseada em texto e a pesquisa baseada em incorporação de kNN. A pesquisa de texto mapeia a consulta de formato livre que o usuário insere para os títulos do filme. A pesquisa de incorporação kNN localiza os k filmes mais próximos da melhor correspondência de texto do espaço latente KG para retornar como saídas.
Implante a solução como um aplicativo Web local
Agora que você tem uma pesquisa de texto funcional e um índice kNN no serviço OpenSearch, está pronto para criar um aplicativo da Web com tecnologia de ML.
Usamos o streamlit
Pacote Python para criar uma ilustração de front-end para este aplicativo. o IMDb-Knowledge-Graph-Blog/part3-out-of-catalog/run_imdb_demo.py
arquivo Python em nosso GitHub repo tem o código necessário para iniciar um aplicativo da Web local para explorar esse recurso.
Para executar o código, conclua as seguintes etapas:
- Instale o
streamlit
eaws_requests_auth
Pacote Python em seu ambiente Python virtual local por meio dos seguintes comandos em seu terminal:
- Substitua o espaço reservado para a URL do API Gateway no código a seguir por aquele criado pelo AWS CDK:
api = '<ENTER URL OF THE API GATEWAY HERE>/opensearch-lambda?q={query_text}&numMovies={num_movies}&numRecs={num_recs}'
- Inicie o aplicativo da web com o comando
streamlit run run_imdb_demo.py
do seu terminal.
Este script inicia um aplicativo da web Streamlit que pode ser acessado em seu navegador da web. A URL do aplicativo da Web pode ser recuperada da saída do script, conforme mostrado na captura de tela a seguir.
O aplicativo aceita novas strings de pesquisa, número de ocorrências e número de recomendações. O número de ocorrências corresponde a quantos títulos OOC correspondentes devemos recuperar do catálogo externo (IMDb). O número de recomendações corresponde a quantos vizinhos mais próximos devemos recuperar do catálogo de clientes com base na pesquisa de incorporação kNN. Veja o seguinte código:
Esta entrada (consulta, número de acessos e recomendações) é passada para o **-ReadFromOpenSearchLambda-**
Função Lambda criada pelo AWS CDK por meio da solicitação do API Gateway. Isso é feito na seguinte função:
Os resultados de saída da função Lambda do OpenSearch Service são passados para o API Gateway e exibidos no aplicativo Streamlit.
limpar
Você pode excluir todos os recursos criados pelo AWS CDK por meio do comando npx cdk destroy –app “python3 appy.py” --all
na mesma instância (dentro do cdk
pasta) que foi usada para iniciar a pilha (veja a captura de tela a seguir).
Conclusão
Nesta postagem, mostramos como criar uma solução para pesquisa OOC usando texto e pesquisa baseada em kNN usando SageMaker e OpenSearch Service. Você usou incorporações de modelo de gráfico de conhecimento personalizado para encontrar vizinhos mais próximos em seu catálogo para os títulos IMDb. Agora você pode, por exemplo, buscar por “Os Anéis do Poder”, série de fantasia desenvolvida pela Amazon Prime Video, em outras plataformas de streaming e raciocinar como elas poderiam ter otimizado o resultado da busca.
Para obter mais informações sobre o exemplo de código nesta postagem, consulte o GitHub repo. Para saber mais sobre como colaborar com o Amazon ML Solutions Lab para criar aplicativos de ML de última geração semelhantes, consulte Laboratório de soluções de aprendizado de máquina da Amazon. Para obter mais informações sobre o licenciamento de conjuntos de dados IMDb, visite desenvolvedor.imdb.com.
Sobre os autores
Divya Bhargavi é cientista de dados e líder vertical de mídia e entretenimento no Amazon ML Solutions Lab, onde resolve problemas de negócios de alto valor para clientes da AWS usando Machine Learning. Ela trabalha com compreensão de imagem/vídeo, sistemas de recomendação de gráfico de conhecimento, casos de uso de publicidade preditiva.
Gaurav Rele é cientista de dados no Amazon ML Solution Lab, onde trabalha com clientes da AWS em diferentes setores para acelerar o uso de aprendizado de máquina e serviços de nuvem da AWS para resolver seus desafios de negócios.
Mateus Rodes é um cientista de dados que trabalha no laboratório de soluções do Amazon ML. Ele é especialista na construção de pipelines de Machine Learning que envolvem conceitos como Processamento de Linguagem Natural e Visão Computacional.
Karan Sindwani é cientista de dados no Amazon ML Solutions Lab, onde cria e implanta modelos de aprendizado profundo. Ele é especialista na área de visão computacional. Nas horas vagas, gosta de fazer caminhadas.
Soji Adeshina é um cientista aplicado na AWS, onde desenvolve modelos baseados em redes neurais de grafos para aprendizado de máquina em tarefas de grafos com aplicativos para fraude e abuso, grafos de conhecimento, sistemas de recomendação e ciências biológicas. Nas horas vagas gosta de ler e cozinhar.
Vidya Sagar Ravipati é gerente do Amazon ML Solutions Lab, onde aproveita sua vasta experiência em sistemas distribuídos de grande escala e sua paixão por aprendizado de máquina para ajudar os clientes da AWS em diferentes verticais do setor a acelerar a adoção de IA e nuvem.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- Platoblockchain. Inteligência Metaverso Web3. Conhecimento Ampliado. Acesse aqui.
- Fonte: 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
- Sobre
- abuso
- acelerar
- Aceita
- acessadas
- em
- ativo
- Adicional
- Adicionalmente
- Adiciona
- Adoção
- Publicidade
- AI
- Todos os Produtos
- Amazon
- Laboratório de soluções de ML da Amazon
- Amazon Netuno
- Amazon Netuno ML
- Serviço Amazon OpenSearch
- Amazon Sage Maker
- analítica
- e
- api
- app
- Aplicação
- aplicações
- aplicado
- Aplicar
- abordagem
- arquitetura
- ÁREA
- associado
- Automatizado
- disponibilidade
- disponível
- AWS
- Troca de dados da AWS
- baseado
- Porque
- MELHOR
- entre
- bilhão
- Caixa
- bilheteria
- navegador
- construir
- Prédio
- Constrói
- negócio
- capacidades
- casos
- catálogo
- desafios
- Escolha
- cliente
- Na nuvem
- adoção de nuvem
- serviços na nuvem
- Agrupar
- código
- colaborando
- combinado
- Empresas
- Empresa
- Empresa
- completar
- Efetuado
- computador
- Visão de Computador
- conceitos
- cônsul
- constantemente
- contém
- conteúdo
- corresponde
- poderia
- países
- crio
- criado
- Criar
- criação
- Créditos
- Atual
- Atualmente
- personalizadas
- cliente
- O envolvimento do cliente é aprimorado em uma relação direta e personalizada.
- Clientes
- dados,
- Data Exchange
- cientista de dados
- bases de dados
- conjuntos de dados
- profundo
- deep learning
- demonstrar
- demonstraram
- implantar
- Implantação
- implanta
- Derivado
- descrito
- destruir
- Detecção
- desenvolvido
- Desenvolvimento
- desenvolve
- diferente
- diretamente
- diretamente
- descoberta
- discutido
- distribuído
- Sistemas distribuídos
- documento
- documentário
- Não faz
- domínio
- cada
- mais fácil
- permitir
- COMPROMETIMENTO
- aprimorada
- Entrar
- Entra
- Entretenimento
- entidades
- Meio Ambiente
- Evento
- SEMPRE
- exemplo
- exchange
- vasta experiência
- explorar
- externo
- extra
- enfrentando
- Familiaridade
- FANTASIA
- Figura
- Envie o
- Arquivos
- Encontre
- encontra
- Primeiro nome
- fluxo
- seguinte
- segue
- encontrado
- fraude
- detecção de fraude
- freqüente
- freqüentemente
- da
- totalmente
- função
- funcionalidades
- funcionalidade
- funções
- porta de entrada
- gerar
- ter
- Global
- gráfico
- gráficos
- manipular
- cabeçalhos
- ajudar
- Acertar
- acessos
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTML
- HTTPS
- Centenas
- imagem
- executar
- implementado
- melhorar
- in
- Incluindo
- Crescimento
- índice
- índices
- Índices
- indústria
- INFORMAÇÕES
- entrada
- instalar
- instância
- em vez disso
- interação
- interativo
- Interface
- envolver
- IT
- Unid
- Chave
- Conhecimento
- Gráfico conhecimento
- laboratório
- língua
- grande
- em grande escala
- mais recente
- lançamento
- lança
- camada
- conduzir
- APRENDER
- aprendizagem
- aproveita as
- Biblioteca
- Licença
- Licenciamento
- vida
- Ciências da Vida
- Limitado
- Lista
- carregar
- local
- máquina
- aprendizado de máquina
- FAZ
- gerenciados
- de grupos
- Gerente
- manualmente
- muitos
- mapa,
- mapeamento
- mapas
- marca
- Match
- correspondente
- Mídia
- Membros
- mencionado
- fusão
- metadados
- milhão
- Minutos
- ML
- modelo
- modelos
- monitorados
- monitoração
- Mês
- mais
- filme
- Filmes
- múltiplo
- natural
- Processamento de linguagem natural
- vizinhos
- Netuno
- baseado em rede
- redes
- redes neurais
- Novo
- nó
- número
- obtido
- Oferece
- Office
- ONE
- aberto
- open source
- Operações
- otimizado
- ordem
- OS
- Outros
- pacote
- parte
- passou
- paixão
- caminho
- Realizar
- executa
- espaço reservado
- plataforma
- Plataformas
- platão
- Inteligência de Dados Platão
- PlatãoData
- por favor
- Publique
- poder
- alimentado
- prática
- premier
- Preparar
- presente
- primário
- Prime
- impressões
- problemas
- processo
- Processado
- em processamento
- Produto
- Produção
- fornece
- provisão
- compra
- fins
- Python
- alcance
- avaliações
- Leitura
- pronto
- em tempo real
- razão
- Recomendação
- recomendações
- relevância
- relevante
- responder
- Relatórios
- repositório
- solicitar
- pedidos
- requeridos
- recurso
- Recursos
- resposta
- DESCANSO
- resultar
- Resultados
- retenção
- retorno
- Retorna
- Execute
- corrida
- sábio
- mesmo
- Salvar
- cenários
- CIÊNCIAS
- Cientista
- Pesquisar
- seções
- seguro
- segurança
- Série
- serviço
- Serviços
- conjunto
- contexto
- Configurações
- rede de apoio social
- mostrando
- Shows
- semelhante
- semelhanças
- simples
- simplificada
- solteiro
- situações
- solução
- Soluções
- RESOLVER
- Resolve
- alguns
- fonte
- Espaço
- especializada
- específico
- divisão
- pilha
- começo
- começado
- estado-da-arte
- Passos
- armazenamento
- armazenadas
- História
- de streaming
- sub-rede
- tal
- suíte
- ajuda
- sistemas
- Tire
- toma
- tarefas
- técnicas
- terminal
- A
- A área
- a articulação
- deles
- assim
- milhares
- três
- Através da
- tempo
- Título
- títulos
- para
- topo
- Trem
- treinado
- Transformar
- trilhões
- tv
- típico
- para
- compreensão
- Upload
- URL
- usar
- Utilizador
- Interface de Usuário
- Utilizando
- variedade
- Grande
- fornecedores
- Verticais
- Vídeo
- Ver
- Virtual
- visão
- visualização
- web
- Aplicativo da Web
- navegador web
- Site
- qual
- Largo
- Ampla variedade
- precisarão
- dentro
- Word
- palavras
- trabalhar
- trabalho
- seria
- Vocês
- investimentos
- zefirnet
- zonas