Descrição do Problema: Sistema de Recomendação Colaborativo
Introdução
O objetivo final é construir um Sistema de Recomendação Colaborativo, mas para chegar lá, você deve vencer 3 etapas de complexidade crescente.
Você deverá implementar todas as etapas nos 3 paradigmas: Lógico (Prolog), Funcional (Lisp) e Orientado a Objetos (Java).
Fase 1: Aquecimento e Consultas
O objetivo desta fase é se familiarizar com a sintaxe e as estruturas de dados básicas de cada linguagem.
Estrutura de Dados
Considere uma base de dados simples contendo: * Filmes: ID, Título, Gênero, Ano. * Avaliações: Usuário, ID_Filme, Nota (1-5).
Funções/Predicados a Implementar
filmes_por_genero(Genero): Retorna todos os filmes de um dado gênero.filmes_de_ano_superior(Ano): Retorna filmes lançados após o ano dado.notas_do_usuario(Usuario): Retorna todas as avaliações feitas por um usuário.
Fase 2: Lógica Intermediária e Regras de Negócio
Aqui começamos a processar listas e aplicar lógica agregada.
Funções/Predicados a Implementar
media_avaliacoes(Usuario): Calcula a média das notas dadas por um usuário.usuario_hater(Usuario): Retorna Verdadeiro se o usuário tem mais notas 1 do que notas 5.filmes_nao_avaliados(Usuario): Retorna a lista de todos os filmes que o usuário ainda não avaliou.diretores_comuns(Usuario1, Usuario2): Retorna a lista de diretores que ambos os usuários avaliaram (independente da nota).
Fase 3: O Sistema Colaborativo
O desafio final. Aqui implementamos a “Inteligência” do sistema, usando interseção de conjuntos e regras globais de exclusão.
Lógica do Algoritmo
- Similaridade: Dois usuários são “Vizinhos” se avaliaram os mesmos filmes (interseção \(\ge 1\)) e ambos deram nota alta (\(\ge 4\)).
- Candidatos: Filmes que os Vizinhos deram nota \(\ge 4\) e que o Usuário Alvo não avaliou.
- Regra de Ódio (Exclusão): Se o Usuário Alvo deu nota 1 para qualquer filme de um diretor, remova todos os filmes desse diretor dos candidatos.
- Filtro Matrícula: Aplique a regra específica do seu número de matrícula (Idade/Tempo/Ano).
Função Principal
recomendar(Usuario): Retorna a lista processada e filtrada de recomendações.
Variação por Matrícula (Anti-Plágio)
Aplicável na Fase 3.
- Grupo 0-3: Filtro por Classificação Indicativa.
- Grupo 4-6: Filtro por Duração/Tempo Disponível.
- Grupo 7-9: Filtro por Ano de Preferência.