Como criar um sistema de recomendação usando Java

Como criar um sistema de recomendação usando Java

Um sistema de recomendação é um software que é capaz de utilizar uma base de dados, compreender a preferência dos usuários (por meio de algoritmos de Machine Learning) e fazer sugestões do que aquela pessoa poderia gostar. Por exemplo: imagine que você goste da banda “coldplay”, isso indica que você gosta de músicas melancólicas do gênero pop/rock, etc. Assim, será que existem outras bandas similares que você poderia gostar? Esse é o desafio.

Foto: Netflix
Site da LastFM
Site da Amazon

Observando as figuras acima, você consegue dizer o que elas possuem em comum?

A resposta é simples: Inteligência Artificial

Se você já utilizou o serviço da Netflix, você deve ter percebido que quanto mais você usa o serviço, mais conteúdos parecidos aparecem nas “sugestões”. Isso não é uma coincidência. Isso ocorre por causa de sistemas de recomendação capazes de analisar o comportamento de milhões de usuários do Netflix e predizer qual a chance de você gostar de um filme no catálogo.  

    Assim como a Netflix, a Amazon e a LastFM possuem sistemas de recomendação muito legais que analisam seu comportamento na rede, buscas e outros dados para tentar sugerir algo relevante. Na LastFM ao encontrarmos um artista que gostamos, podemos clicar em “artistas similares”. A LastFM mostra uma grande quantidade de sugestões interessantes para quem gosta de um estilo de música.  Já na Amazon, quando você compra ou apenas observa um produto na loja, você pode ver tópicos como. “Compre também” “Quem comprou isso, também gostou disso”.  

Isso tudo é a mágica da Inteligência Artificial dando um olá para você.    

Construindo o seu próprio sistema recomendador: o projeto Suggest Me  

Falando de Netflix, Amazon e gigantes da tecnologia isso parece muito inacessível, entretanto, as coisas não são bem assim. Esse projeto, busca construir um sistema didático que capaz de criar um ambiente para realizar a sugestão de Livros (a principio) criamos o SuggestMe.   

Para construí-lo pensei que o usuário poderia ser capaz de gerenciar livros (adicionar, editar, excluir) e classificar os livros de acordo com uma escala de 0 a 5 estrelas. Cada usuário tem acesso a um catálogo compartilhado, onde se uma pessoa adiciona um livro a base de dados, todos usuários podem classificá-lo. Baseado nas classificações do usuário podemos utilizar a opção de “Suggest Me” e o sistema irá sugerir livros baseados na opinião dos demais usuários do sistema.   

Um detalhe importantíssimo desse sistema é como eu consegui buscar uma base de dados de livros para sugerir. Esse é um problema grande.

Imagine que para sugerir um livro você precisa saber os dados desse livro, você precisa conhecer o gênero, quantidade de páginas entre outras características. Essas informações não são muito difíceis de encontrar, no entanto, você quase sempre vai achar em arquivos CSV estáticos. Isso torna seu sistema de recomendação altamente rígido.

Para o Suggest me eu utilizei o DbPedia (Ferramenta disponibilizada pela wikipédia) para minerar informações de livros. Para isso foi preciso compreender um pouco como funcionam as Querys SPARQL. Essas querys são parecidas com SQL, porém tem uma sintaxe bastante particular. Para realizar as buscas utilizei o apache Jena para trabalhar com base de dados RDF.

Além disso, utilizei o Apache Mahout como uma forma de obter sugestões de livros. Esse framework faz a predição e recomendação dos livros.  

Esse projeto de sistema de recomendação eu deixei disponível no Github pra você usar, modificar e estudar! Lembre-se que se você usar esse projeto, faz um link pra gente! vamos ficar muito felizes de ver que foi útil pra você.

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e forma com que ela pode transformar vidas!

Deixe uma resposta