kiq005 / movie-recommendation Goto Github PK
View Code? Open in Web Editor NEWA text analysis based technique for movie recommendation
License: GNU General Public License v3.0
A text analysis based technique for movie recommendation
License: GNU General Public License v3.0
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.
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.
A princípio estamos utilizando os dados do TMDb, com o dataset disponibilizado no Kaggle (https://www.kaggle.com/tmdb/tmdb-movie-metadata#tmdb_5000_movies.csv). O dataset possui 5000 filmes, porém nem todos possuem informação completa, mas podemos utilizar a própria API do TMDb para construir outro dataset ou expandir este.
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.
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.
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.
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.