Minhas metas para este projeto
- Entenda os principais componentes do framework django
- Descreva os princípios básicos de um sistema de recomendação
- Crie um aplicativo simples de recomendação de filmes, aplicando o algoritmo Jaccard com base no mecanismo de filtragem de conteúdo
Repositório do Github https://github.com/jamattey/Django-Movie-Recommendation
Pilha de Tecnologia
- Back-end do Django
- HTML Front-end
- CSS de inicialização
- Banco de dados SQLite
Sobre o Django Framework
O Django divide sua lógica de aplicação nos três seguintes componentes do tipo Model-View-Controller:
Django Model gerencia modelagem de dados e mapeamento de banco de dados, bem como lógica de negócios para processar dados
Django View descreve quais dados são apresentados, mas não como eles são apresentados. Normalmente, o Django View delega e renderiza uma página HTML, que descreve como os dados são apresentados
Django Template gera páginas HTML dinâmicas para apresentar dados
Quando um cliente envia uma solicitação, o servidor Django roteia a solicitação para a visualização apropriada com base na configuração de URL do Django e atua como um Controlador tradicional
Modelos Django
Django usa Django Models para representar tabelas de banco de dados e mapeá-las para objetos, como o processo é chamado de ORM. O Django Models tenta facilitar a vida do desenvolvedor abstraindo bancos de dados e mapeando objetos e métodos em tabelas e consultas SQL automaticamente.
Você só precisa definir classes como Modelos Django, e posteriormente serão mapeados para tabelas de banco de dados de acordo. Então você pode simplesmente usar a API Django Models para executar CRUD nas tabelas do banco de dados sem escrever uma única linha de SQL
Visualizações do Django
No Django, uma View é essencialmente uma função Python. Essa função recebe uma solicitação da Web e aplica a lógica necessária para gerar uma resposta da Web, como o conteúdo HTML de uma página da Web, um redirecionamento, um erro 404, um documento XML, uma imagem ou qualquer outra resposta da Web. Frequentemente, View interage com Django Models para obter os dados necessários na forma de QuerySet ou objetos para gerar uma resposta da Web.
Processo de desenvolvimento de aplicativos Django
Primeiro, criei um projeto Django que é um contêiner para aplicativos e configurações do Django. Aqui, posso decidir criar e adicionar um ou mais aplicativos Django ao projeto.
No Core Development, criei modelos Django para modelar os dados e criei visualizações para determinar quais dados precisam ser apresentados à interface do usuário. Também mapeio as URLs de solicitação para nossas visualizações para que o Django possa encaminhar solicitações para visualizações correspondentes por meio de URLs. Então podemos começar a projetar e construir a interface do usuário.
Estes filmes são preenchidos em um CSV. O site não hospeda filmes reais, mas é um mecanismo de recomendação usando código regular e um banco de dados.
Este mecanismo de recomendação não usa Machine Learning....... ainda 😂😂
Para fazer a recomendação realmente funcionar, eu precisava primeiro marcar os filmes que um usuário assistiu usando o site Django Admin. Então escrevi um algoritmo de recomendação baseado em filmes assistidos.
Marcando filmes assistidos no Django Admin
- Execute o servidor Django
- visite o URL do administrador app_url/admin
- Em seguida, você clica na entrada do filme, marca-o como assistido e pressiona Salvar.
Execute o CMD make_recommendations para gerar recomendações
Para qualquer sistema de recomendação, a ideia principal é sempre criar um bom algoritmo/modelo para prever se um usuário específico vai gostar ou não de seu item não visto, conforme mostrado na captura de tela a seguir:
Existem provavelmente centenas de bons algoritmos de recomendação e podem ser divididos em duas categorias:
Filtragem de conteúdo baseada:
Os algoritmos de recomendação baseados em filtragem de conteúdo pressupõem que você pode gostar de um novo filme se já assistiu a filmes muito semelhantes antes. Ou com base no seu perfil de usuário (como idade, sexo, interesses), ele tentará encontrar novos filmes que correspondam ao seu perfil.
Filtragem colaborativa baseada:
Os algoritmos de filtragem colaborativa assumem que você pode gostar de um novo filme se outros usuários semelhantes a você (perfil semelhante ou assistiram a filmes semelhantes) assistiram a este filme.
Neste projeto, usaremos um algoritmo baseado em filtragem de conteúdo e tentaremos recomendar filmes não assistidos/novos para você se forem semelhantes aos filmes assistidos.
Como calculamos essa semelhança de filme
Aqui usaremos a similaridade de Jaccard, que é provavelmente o método mais simples, mas muito eficaz, para calcular a similaridade entre dois conjuntos.
A similaridade de Jaccard é definida como o tamanho da interseção de dois conjuntos dividido pelo tamanho da união desses dois conjuntos.