Você está na página 1de 4

O Pitaqueiro das 12h

Viso geral
Sistemas de recomendao so softwares capazes de lhe ajudar a achar itens (produtos, servios, lugares, ...) que lhe interessam baseados nos seus hbitos e gostos. O elemento chave da lgica destes sistemas , naturalmente, o algoritmo de recomendao. Idealmente, o algoritmo deve produzir recomendaes precisas para os usurios sem inund-los com 1000 sugestes todos os dias. Uma caracterstica muito interessante desses algoritmos de recomendao que eles so independentes do problema no qual eles so usados. Podemos usar um mesmo algoritmo para realizar recomendaes de livros, msicas, jogos, restaurantes, etc. Isso possvel porque eles se baseiam apenas em opinies dos usurios para realizar o clculo das similaridades/dissimilaridades entre essas opinies e com isso realizar as recomendaes. Neste projeto, voc implementar um sistema de recomendao de lugares para almoar em Campina Grande (CG) capaz de usar mltiplos algoritmos para recomendar almoos para os usurios. Com essa funcionalidade, o sistema ser tanto til para usurios, que descobriro novos lugares para almoar, quanto para os alunos de computao, que podero explorar como diferentes algoritmos se comportam ao gerar recomendaes. Esse sistema tem semelhana com o Desafio 4, mas mais completo e sofisticado. Voc vai dar um nome ao seu sistema, mas aqui chamaremos ele de Pd12 (sigla para Pitaqueiro das 12h ) para facilitar a explicao. O Pd12 tem uma interface para que o usurio informe suas preferncias e receba recomendaes e uma interface para que o usurio compare algoritmos usando os dados j existentes no sistema. Ele tambm ter mais algoritmos e tipos de usurio que o sistema desenvolvido no Desafio 4, alm de funcionalidades. Alm disso, h uma parte pr-definida (bloco bsico) no projeto e uma outra parte que depende de sua criatividade (bloco avanado). Implementar corretamente a parte prdefinida vale 80% da nota. A parte que depende de sua criatividade vale os outros 20% (este documento descreve algumas sugestes de funcionalidades para a parte que depende de sua criatividade).

Parte pr-definida do projeto (bloco bsico)


A parte pr-definida explicada em casos de uso. Cada caso de uso define o que o sistema deve ser capaz de fazer em uma situao. Caso de uso 1: Carregar e exibir perfis

O sistema carrega de dois arquivos com formato semelhante aos usados no Desafio 4 uma lista de estabelecimentos que oferecem almoo em CG e uma lista de opinies de usurios sobre esses estabelecimentos. Cada estabelecimento tm, alm do nome, um endereo e o tipo de almoo servido: self service, prato feito, a la carte. O perfil de um usurio composto por suas opinies sobre os estabelecimentos. Uma opinio de um usurio um nmero de -5 a 5. Valores negativos representam que o usurio no gosta do estabelecimento (-5 significa que o usurio o detesta). Um valor positivo indica que o usurio gosta do estabelecimento (5 significa que o usurio adora ele). Zero significa que o usurio no possui opinio sobre aquele estabelecimento. Esse caso de uso satisfeito quando o usurio informa os arquivos que o sistema precisa e este fornece em sua interface uma lista que mostre todas as opinies dos usurios sobre os estabelecimentos cadastrados no sistema. Caso de uso 2: Lista de estabelecimentos com popularidade O usurio requisita do sistema uma lista ordenada dos estabelecimentos por popularidade. A popularidade de um estabelecimento a soma das opinies de todos os usurios no sistema sobre aquele estabelecimento. Esse caso de uso satisfeito quando o sistema, ao receber a requisio do usurio, produz a lista ordenada em sua interface. Caso de uso 3: Gerar Recomendao para usurio cadastrado O usurio do sistema deve ser capaz de selecionar um usurio que j possui as suas opinies cadastradas, escolher um algoritmo de recomendao entre os conhecidos no sistema, informar uma quantidade de itens a ser recomendados e receber recomendaes para o usurio selecionado. Os algoritmos de recomendao cuja implementao obrigatria so: 1. Popularidade global O sistema computa a popularidade de um lugar para almoar (restaurante, cantina, boteco) como a soma da opinio de todos os usurios sobre esse lugar. Os R lugares mais populares so recomendados para qualquer usurio independente das opinies que ele j tenha. 2. Personalizado, baseado no usurio mais semelhante A semelhana dos gostos de dois usurios pode ser calculada usando um conceito que voc aprendeu em clculo vetorial: produto escalar de dois vetores (pra voc lembrar, o produto escalar de [a, b, c] e [c,d,e] a.c + b.d + c.e). Se voc considerar as opinies do usurio A sobre trs lugares como um vetor [1, 1, -3] e a opinio de B e C sobre os trs mesmos lugares sendo [1, 2, 5] e [2, 1, -5], voc ver que as opinies de A e C so mais parecidas que as de A e B, e que o produto escalar dos vetores dos gostos de A e C um nmero maior que os de A e B. O algoritmo de recomendaes personalizadas procura, para um dado usurio U, quem o outro usurio U que tem o gosto mais semelhante a U, e recomenda a U os itens que U mais gostou que U ainda no conhece (no recomende itens que U no

gostou ou no leu!). Se o algoritmo precisar recomendar mais itens, ele considera tambm o segundo usurio mais semelhante a U, o terceiro, e assim por diante, at que a quantidade de R recomendaes seja atendida. Caso de uso 4: Recomendaes para usurio no cadastrado O usurio do sistema deve ser capaz de criar um novo usurio, informar seu nome e suas preferncias, e, selecionando um algoritmo de recomendao e uma quantidade de itens a ser recomendados, gerar recomendaes para esse novo usurio criado. Ele deve ser capaz tambm de alterar as opinies no perfil criado e gerar novas recomendaes quantas vezes quiser. No possvel gerar um perfil com um nome que j exista no sistema. Caso de uso 5: Inserir usurio O usurio do sistema deve ser capaz de salvar o perfil criado no Caso de uso 4. O perfil deve ser salvo no arquivo de dados atualmente usado pelo sistema. Caso de uso 6: Comparar algoritmos de recomendao nos dados

O sistema pergunta ao usurio a quantidade de itens a ser usada em cada recomendao e usa a lgica descrita no Desafio 4 para comparar todos os algoritmos de recomendao implementados nos sistema. Caso de uso 7: Filtros para recomendaes O usurio do sistema deve ser capaz de, ao selecionar um usurio para o qual o sistema deve recomendar estabelecimentos, definir um ou mais filtros para as recomendaes. O sistema deve oferecer uma lista de filtros possveis com ao menos dois filtros: por palavras-chave e por tipo de estabelecimento. Um filtro remove estabelecimentos da lista de recomendaes obtidas para o usurio com base na regra especificada pelo usurio do sistema. O filtro por palavras-chave remove todos os estabelecimentos cujo nome contenha (sem se importar com maisculas e minsculas) uma palavra informada pelo usurio. Por exemplo, o usurio pode estar interessado em recomendaes de estabelecimentos cujos nomes no contenham a palavra bar. O filtro por tipo de estabelecimento seleciona apenas estabelecimentos de um tipo (por exemplo, self-service). Caso de uso 8: Ordenao para recomendaes O usurio do sistema deve poder tambm, ao selecionar um usurio para o qual o sistema deve recomendar estabelecimentos, definir critrios de ordenao para as recomendaes que sero apresentadas, alm de indicar a quantidade de recomendaes que devem ser fornecidas. O sistema deve oferecer pelo menos dois tipos de ordenao: ordenao alfabtica baseada nos nomes dos estabelecimentos e ordenao por tipo de refeio oferecida.

Parte avanada do projeto (bloco avanado)


Voc livre para inventar as funcionalidades que voc julga que valero os dois pontos da parte criativa do projeto. Aqui h uma lista de exemplos e ideias: Simples: Novos filtros ou novos ordenadores para recomendaes que sejam teis; Listar lugares desrecomendveis para um usurio (isso , onde o sistema acha que o usurio no deve ir de forma alguma) baseado nas opinies ruins que foram dadas; Ao selecionar um usurio, mostrar a lista dos usurios mais semelhantes a ele no sistema e os estabelecimentos melhor recomendados por eles; Apresentar estatsticas sobre os estabelecimentos (quantidade de opinies, % de boas recomendaes, % de recomendaes ruins, ...); Criar novos tipos de usurios/estabelecimentos. Legais: Novos algoritmos de recomendao que funcionam melhores que os descritos neste documento; Permitir que um usurio indique que um item que lhe foi recomendado deve ser removido da lista de recomendaes. Neste caso, outro item deve ser obtido para manter a lista com o mesmo tamanho; Interface grfica sofisticada, com mecanismos alm dos bsicos; Busca incremental (cujos resultados vo sendo atualizados na medida em que digitamos o termo da busca) por estabelecimento e usurio na interface grfica.

Distribuio dos casos de uso para cada iterao


Entrega v1 (30/05/2011): Casos de uso 1, 2, 3, 4 e 5 (bloco bsico) Entrega v2 (13/06/2011): Casos de uso 6, 7 e 8 (bloco bsico); funcionalidades do bloco avanado

Você também pode gostar