Code Monkey home page Code Monkey logo

movie-recommendation's Introduction

Movie Recommendation

Um sistema inteligente de recomendação de filmes.

Uso

Os principais programas que compõem esta aplicação são:

  • csv_to_json.py: gera o arquivo .json com os dados a serem utilizados.
  • full_generation.py: realiza todo o processo de clusterização e geração de imagens (matrizes de distância e dendrogramas).
  • user_permission.py: Obtém a permissão de acesso do usuário.
  • user_data.py: Realiza a coleta dos filmes ranqueados pelo usuário.
  • recommend.py: Gera uma lista de recomendações de filmes para o usuário.

Os demais programas são funções e testes. Para funcionamento correto do programa, é necessário que o arquivo tmdb_5000_movies.csv esteja presente na pasta dataset. Além disso, é necessário um token de API para utilização dos dados do TMDB, você pode obter um token gratuito seguindo o processo descrito nesta página: https://developers.themoviedb.org/3/getting-started/introduction

Dados

Frequência de palavras:

Word Count Word Count
the 12695 in 4058
a 9340 his 3883
to 7849 is 3318
and 7267 with 2349
of 6847 her 1968

Frequência de palavras (Sem stop words):

Word Count Word Count
life 804 two 538
new 714 man 506
one 685 family 496
young 629 find 473
world 568 story 450

CLOUD

Clusters

Jaccard Distance

Método Matriz de Distância Dendrograma
Single
Complete
Average
Ward

Masi Distance

Método Matriz de Distância Dendrograma
Single
Complete
Average
Ward

movie-recommendation's People

Contributors

g-rm avatar kiq005 avatar

Watchers

 avatar  avatar

Forkers

yosr-moh eliasbui

movie-recommendation's Issues

Análise de APIs públicas

Precisamos obter uma lista de filmes que o usuário assistiu com indicação de se o usuário gostou do filme. Uma vez que não desejamos que o usuário preencha uma lista quando for utilizar o programa, pretendemos obter estas informações a partir de um provedor externo, a princípio optamos pelo TMDb, mas uma análise de sua API é necessária.

Obtenção de dados do cliente com a API

A partir da escolha da API, devemos construir uma listagem de filmes que o usuário assistiu e que estão presentes em nossa base de dados, mantendo a informação de se o usuário gostou ou não do filme.

Tratamento dos dados do Dataset

Utilizaremos o Dataset considerando título do filme, sumário e gêneros. O título do filme será utilizado para referência posterior no momento de recomendação de filmes e análise dos resultados. O gênero do filme será considerado para verificação da precisão dos resultados, esperamos que filmes do mesmo cluster possuam gêneros semelhantes. Por fim, o sumário será utilizado para a construção da matriz de distância, para tal, removeremos stop words e tomaremos os bigramas.

Clusterização baseada na matriz de distância

A abordagem de construção dos clusters foi baseada em: https://gmarti.gitlab.io/ml/2017/09/07/how-to-sort-distance-matrix.html
Os métodos disponíveis a principio são são: ward, single, average, complete; Porém o método single não consegue ser executado, uma vez que atinge o limite de recursão. Para solucionar, a construção de uma abordagem iterativa seria o mais recomendado, porém também pode-se aumentar o limite de recursão do python (sys.setrecursionlimit(10000)), considerando que o tamanho do dataset não irá aumentar.

Análise dos resultados

Com base na matriz construída, devemos avaliar métricas da clusterização, podendo se valer das categorias dos filmes e outras informações disponíveis para verificar precisão, acurácia e demais valores que venham a caber em uma análise dos resultados. Ainda, cabe aqui a análise de tais métricas de modo a comparar as diferentes metodologias e algoritmos citados nas etapas anteriores.

Construção da Matriz de distância

A matriz de distância está sendo construída utilizando a distância de Jaccard, porém outros métodos podem ser utilizados, e podem ser comparados para verificar eficiência (métodos já prontos no algoritmo: binary jaccard, masi, edit). Além disso, não se espera que os filmes possuam grande semelhança, na verdade, espera-se que poucos pares de palavras sejam coincidentes nos sumários, de forma que o escalonamento dos valores pode ajudar na clusterização. Para tal, pode-se utilizar uma função de escalonamento que mantenha os valores entre 0 e 1 (-x²+2x; 1/(1+e^(-10x+5)); e^(-3(x-1)²) ). Os dados da matriz estão sendo salvos em um arquivo .txt para referência e um .npy para uso nas etapas posteriores.

Recomendação de filmes

Com base nos clusters e nos filmes assistidos pelo usuário, devemos recomendar novos filmes para ele. Para tal, consideraremos os clusters de forma isolada, e então aplicaremos um método similar ao k-neighboors, se aproximando de filmes que o usuário gostou e distanciando de filmes que não gostou, e então recomendado um filme que ele ainda não assistiu com base na proximidade ao resultado obtido.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.