19
1 DESENVOLVIMENTO DE UM SISTEMA DE RECOMENDAÇÃO DE EVENTOS COM USO DE GEOLOCALIZAÇÃO 1 Ricardo Pareja de Jesus <[email protected]> Mauricio Escobar <[email protected]> – Orientador Universidade Luterana do Brasil (Ulbra) – Curso de Análise e Desenvolvimento de Sistemas – Campus Canoas Av. Farroupilha, 8.001 – Bairro São José – CEP 92425-900 – Canoas - RS 22 de junho de 2011 RESUMO O objetivo deste projeto consiste em apresentar um sistema desenvolvido para recomendação de eventos, com base no perfil e geolocalização do usuário. Para isso, foi feito o estudo dos conceitos de sistemas de recomendação, geolocalização e web 2.0, através de pesquisas realizadas em publicações na Internet e na literatura. Palavras-chave: Sistemas de recomendação; Geolocalização; Web 2.0. ABSTRACT Title: “DEVELOPMENT OF RECOMMENDATION SYSTEM USING GEOLOCATION” The objective of this project is to present a system developed for events recommendation, based on user’s geolocation and profile. To do so, a study was made concerning recommendation systems, geolocation and web 2.0, searching for content on internet publications and books. Key-words: Recommendation systems; Geolocation; Web 2.0. 1 INTRODUÇÃO A internet é atualmente o meio de comunicação mais utilizado para a busca de informações, devido principalmente à quantidade de conteúdos que disponibiliza. O excesso de informações, muitas vezes, é bom, pois assim o usuário tem diversas opções de referências para um mesmo assunto. Por outro lado, a grande quantidade de fontes ou a falta de uma fonte oficial e confiável pode confundir o usuário, ao receber informações incorretas ou desatualizadas. Ainda no que se refere ao excesso de dados na web, a existência de um sistema que gerencie um conjunto de informações, e que tenha como objetivo apresentá-las ao usuário de forma organizada pode facilitar o acesso do mesmo ao conteúdo de seu interesse. A motivação deste trabalho surgiu a partir da verificação de inúmeras informações existentes na web, relacionadas a eventos de diversas áreas. Observou-se que assim como todos os tipos de conteúdo existentes na internet, as informações referentes a eventos existem em diversos sites de diferentes níveis de credibilidade. Este trabalho apresenta o sistema desenvolvido que consiste em recomendar eventos, centralizando- os em um só site, permitindo ao usuário maior facilidade para encontrar informações adequadas às suas necessidades. Para melhorar os resultados exibidos ao usuário o sistema leva em consideração informações do: perfil do usuário, como por exemplo, categorias de eventos que ele gosta, e sua localização geográfica. O restante do trabalho está estruturado como a seguir: a seção 2 apresenta o referencial teórico – Web 2.0, Sistemas de Recomendação, Arquitetura MVC – e algumas tecnologias utilizadas – API de ________________________ 1Artigo final da disciplina de Projeto em Desenvolvimento de Software submetido ao curso de Análise e Desenvolvimento de Sistemas da Universidade Luterana do Brasil, Campus Canoas.

DESENVOLVIMENTO DE UM SISTEMA DE RECOMENDAÇÃO DE … · exemplo de participação da inteligência coletiva é a folksonomia, “um sistema de organização de informação baseado

  • Upload
    vuduong

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

1

DESENVOLVIMENTO DE UM SISTEMA DE RECOMENDAÇÃO DE EVENTOS COM USO DE

GEOLOCALIZAÇÃO1 Ricardo Pareja de Jesus <[email protected]>

Mauricio Escobar <[email protected]> – Orientador

Universidade Luterana do Brasil (Ulbra) – Curso de Análise e Desenvolvimento de Sistemas – Campus Canoas

Av. Farroupilha, 8.001 – Bairro São José – CEP 92425-900 – Canoas - RS

22 de junho de 2011

RESUMO

O objetivo deste projeto consiste em apresentar um sistema desenvolvido para recomendação de eventos, com base no perfil e geolocalização do usuário. Para isso, foi feito o estudo dos conceitos de sistemas de recomendação, geolocalização e web 2.0, através de pesquisas realizadas em publicações na Internet e na literatura.

Palavras-chave: Sistemas de recomendação; Geolocalização; Web 2.0.

ABSTRACT

Title: “DEVELOPMENT OF RECOMMENDATION SYSTEM USING GEOLOCATION” The objective of this project is to present a system developed for events recommendation, based on user’s geolocation

and profile. To do so, a study was made concerning recommendation systems, geolocation and web 2.0, searching for content on internet publications and books.

Key-words: Recommendation systems; Geolocation; Web 2.0.

1 INTRODUÇÃO A internet é atualmente o meio de comunicação mais utilizado para a busca de informações, devido

principalmente à quantidade de conteúdos que disponibiliza. O excesso de informações, muitas vezes, é bom, pois assim o usuário tem diversas opções de referências para um mesmo assunto. Por outro lado, a grande quantidade de fontes ou a falta de uma fonte oficial e confiável pode confundir o usuário, ao receber informações incorretas ou desatualizadas.

Ainda no que se refere ao excesso de dados na web, a existência de um sistema que gerencie um conjunto de informações, e que tenha como objetivo apresentá-las ao usuário de forma organizada pode facilitar o acesso do mesmo ao conteúdo de seu interesse.

A motivação deste trabalho surgiu a partir da verificação de inúmeras informações existentes na web, relacionadas a eventos de diversas áreas. Observou-se que assim como todos os tipos de conteúdo existentes na internet, as informações referentes a eventos existem em diversos sites de diferentes níveis de credibilidade.

Este trabalho apresenta o sistema desenvolvido que consiste em recomendar eventos, centralizando-os em um só site, permitindo ao usuário maior facilidade para encontrar informações adequadas às suas necessidades. Para melhorar os resultados exibidos ao usuário o sistema leva em consideração informações do: perfil do usuário, como por exemplo, categorias de eventos que ele gosta, e sua localização geográfica.

O restante do trabalho está estruturado como a seguir: a seção 2 apresenta o referencial teórico – Web 2.0, Sistemas de Recomendação, Arquitetura MVC – e algumas tecnologias utilizadas – API de

________________________ 1Artigo final da disciplina de Projeto em Desenvolvimento de Software submetido ao curso de Análise e Desenvolvimento de Sistemas da Universidade Luterana do Brasil, Campus Canoas.

2

Geolocalização do HTML5, Google Mas API. A seção 3 apresenta alguns trabalhos relacionados. A modelagem e desenvolvimento do sistema são apresentados na seção 4. Por fim, a conclusão é apresentada na seção 5.

2 REFERENCIAL TEÓRICO E TECNOLOGIAS Esta seção apresenta os temas e tecnologias envolvidos no desenvolvimento deste trabalho. São eles: Web 2.0, Sistemas de recomendação, filtragem baseada em conteúdo, filtragem colaborativa, filtragem híbrida, arquitetura MVC, API de Geolocalização do HTML5 e a Google Maps API.

2.1 Web 2.0 O termo Web 2.0 surgiu em uma conferência de brainstorming entre as empresas O’Reilly Media e

MediaLive International, onde Dale Doughherty, vice-presidente da O’Reilly Media, percebeu que empresas que haviam sobrevivido à crise possuíam muitas características em comum (O’REILLY, 2005). Esse conjunto de características forma o conceito de Web 2.0.

Após o surgimento do termo e sua popularização, Tim O’Reilly, fundador da O’Reilly Media, publicou um artigo explicando do que se trata a Web 2.0, mostrando seus princípios e exemplos O’REILLY, 2005). Abaixo é mostrado o resumo de alguns dos conceitos definidos, que estão relacionados ao trabalho aqui desenvolvido.

• Web como plataforma: Segundo Zouain (2006, p.12), o valor dos aplicativos 2.0 está no serviço oferecido, e não no software em si. Na web cobra-se pelo serviço e não pelo software.

• Inteligência coletiva: Estimular a participação de usuários para a construção do conteúdo. Um exemplo de participação da inteligência coletiva é a folksonomia, “um sistema de organização de informação baseado em etiquetas (tags) definidas pelos usuários” (ZOUAIN, 2006, p.12).

• O fim do ciclo de lançamentos de software: Sendo o software apresentado como um serviço e não como produto, ele pode estar em constante evolução. Os aplicativos Web 2.0 são imediatamente disponibilizados aos usuários, que contribuem testando e sugerindo melhorias através do uso contínuo.

• Experiência rica do usuário: Aplicativos Web 2.0 oferecem ao usuário um nível de experiência e interatividade semelhante aos softwares de PC. Um dos responsáveis pela melhora dessa experiência é o conjunto de tecnologias chamado AJAX (Asynchronous JavaScript e XML), que combina tecnologias existentes da padronização visual, visualização dinâmica e interativa e manipulação de dados (ZOUAIN, 2006, p.18).

Por fim podemos entender o conceito de Web 2.0 através da seguinte definição:

Web 2.0 é a mudança para uma Internet como plataforma, e uma tentativa de entendimento das regras para obter sucesso nesta nova plataforma. Entre outras, a regra mais importante é desenvolver aplicativos que aproveitem os efeitos de rede para se tornarem melhores quanto mais são usados pelas pessoas, aproveitando a inteligência coletiva. (O'REILLY, 2006 apud GONÇALVES, 2010, p.2).

2.2 Sistemas de recomendação A grande quantidade de conteúdo existente na web fez surgir a necessidade da criação de

ferramentas de auxílio ao usuário na busca pela informação desejada. Para suprir essa necessidade, inicialmente, foram utilizados sistemas de Recuperação de Informações, como por exemplo, a ferramenta de buscas do Google. Apesar de muito úteis, as ferramentas de busca retornam uma quantidade de informação proporcional à existente na internet, o que muitas vezes obriga o usuário a realizar uma busca manual por resultados realmente relevantes dentre os obtidos.

Para tentar minimizar ainda mais os problemas de sobrecarga de informação surgiram os sistemas de Recomendação (PRIMO e LOH, 2006). Segundo Burke (2002 apud OLIVEIRA, 200-?) um sistema de Recomendação é qualquer sistema que produza recomendações individualizadas, ou que guie o usuário de forma a apresentar conteúdo de seu interesse dentre uma variedade de opções.

Com o crescimento da Internet e principalmente com o aumento do número de lojas de comércio virtual, há uma demanda cada vez maior por sistemas de Recomendação, já que oferecer serviços e itens

3

personalizados aos clientes pode aumentar a lucratividade das empresas. “Em uma loja virtual, as recomendações podem ser sugestões de produtos, informações personalizadas, opiniões de comunidades e avaliações de outros usuários. Essa abordagem possibilita que a loja seja personalizada para cada consumidor” (SCHAFER et al, 2001 apud MACHADO, 2006, p.14).

A Figura 1 ilustra os principais componentes da recomendação no comércio eletrônico (MACHADO, 2006).

Figura 1 – Sistemas de Recomendação no comércio eletrônico (MACHADO, 2006, p.15)

De acordo com Burke (2001 apud OLIVEIRA, 200-?) os sistemas de recomendação são formados por dados prévios ou armazenados, dados de entrada ou do usuário e do algoritmo de recomendação. Esta estrutura pode ser vista na Figura 2.

Figura 2 – Processo de recomendação (OLIVEIRA, 200-?)

4

Os dados prévios ou armazenados correspondem ao conjunto de itens que será recomendado, ou seja, os produtos, páginas ou conteúdos que estão armazenados no sistema e que serão indicados ao usuário.

Os dados de entrada referem-se às informações que o usuário fornecerá ao sistema para que seja possível a construção do seu perfil. Estas informações podem ser coletadas de forma explícita ou implícita. A primeira forma geralmente é feita através do preenchimento de um formulário ou questionário que mostre possíveis interesses do usuário, mas também pode ser feita através da análise de um conteúdo. A segunda é realizada através da análise do comportamento do usuário, como por exemplo, verificando quais páginas ele navegou, quais produtos visualizou ou comprou etc. (OLIVEIRA, 200-?). A definição de quais informações serão necessárias para realizar a coleta é um fator essencial para gerar recomendações que sejam realmente relevantes para o usuário.

Outro ponto relevante referente à captura dos dados de entrada é a identificação de usuários. Sem essa identificação o sistema de recomendação passa a “não existir”, já que não se sabe através de que perfil deve ser feita a filtragem ou indicação do conteúdo existente. Vale lembrar que pode existir uma exceção, caso o software utilize dados temporários de um usuário, como por exemplo sua geolocalização. Nesse caso o sistema não está realmente identificando um usuário ou fazendo uso de um perfil para realizar a recomendação, mas sim analisando dados que o “visitante” da aplicação possui e que pode ser utilizado para cumprir mesmo que parcialmente sua funcionalidade.

De acordo com Cazella, Nunes e Reategui (200-?), as duas maneiras mais comuns de realizar a identificação de usuários em um sistema web são:

• Identificação no Servidor: disponibiliza ao usuário uma área de cadastro com informações pessoais. Estas informações ficam armazenadas em um banco de dados no servidor. Ao acessar o sistema o usuário fará sua autenticação informando os dados cadastrados como login e senha. Este mecanismo permite com que a aplicação identifique qual o usuário conectado.

• Identificação no cliente: utiliza normalmente cookies, mecanismo pelo qual um website pode armazenar informações no browser cliente. Com isso é possível identificar que determinado computador está se conectando mais uma vez a ele. Este método assume que a máquina conectada é utilizada sempre pela mesma pessoa. Logo, ao identificar a máquina, o website está na realidade identificando seu usuário. Trata-se de um mecanismo mais simples do que a identificação através do servidor, porém menos confiável, principalmente se o computador identificado for utilizado por mais de uma pessoa, ou se os dados de cookies forem apagados pelo usuário.

Os dados de saída de um sistema de recomendação podem ser uma predição ou uma recomendação. A predição consiste em apresentar um item associado a uma escala que prediz sua relevância para o usuário. Um exemplo de Predição ocorre ao apresentar um filme classificado com uma estrela, significando “não recomendado ao usuário”, enquanto outro possui cinco estrelas representando “altamente recomendado”. A recomendação é representada por uma lista de N itens mais relevantes para o usuário. A lista costuma apresentar itens não comprados, vistos ou avaliados pelo usuário (OLIVEIRA, 2011).

Ao construir um sistema de recomendação é necessário definir como será feito o processo de recomendação. Para a construção deste processo é necessária à adoção de uma técnica de Filtragem de Informação. De acordo com Belvin (1992 apud MACHADO, 2006), filtragem de informação consiste em uma série de processos que envolvem a entrega da informação para quem as necessita. Utilizando a filtragem de informaçãom, o sistema mantém um perfil dos interesses do usuário e busca continuamente informações que podem ser recomendadas.

Segundo Balabanovic (1997 apud MACK, 2010) os sistemas de recomendação são geralmente classificados em três categorias de acordo com a técnica de filtragem de informação que utilizam:

• Recomendação baseada em conteúdo ou filtragem baseada em conteúdo;

• Recomendação colaborativa ou filtragem colaborativa;

• Abordagem híbrida ou filtragem híbrida.

Alguns autores como Burke (2002) consideram a existência de mais alguns tipos de filtragem de informação, como: filtragem demográfica; baseada em conhecimento; baseada em utilidade (CAZELLA, NUNES e REATEGUI, 200-?).

5

2.2.1 Filtragem baseada em conteúdo

Esta técnica utiliza preferências (passadas e atuais) de um cliente específico para recomendar novos produtos a ele. “News-Dude (BILLSUS; PAZZANI, 1999), por exemplo, observa quais são as histórias que o usuário já leu (e também as que ele ainda não leu) e aprende para apresentar novas histórias que ele possa estar interessado” (LORENZI, 2010). “A descrição de interesses do usuário é obtida através de informações fornecidas por ele próprio ou através de ações, como seleção e aquisição de itens” (CAZELLA, NUNES e REATEGUI, 200-?).

Dependendo do tipo de conteúdo a ser recomendado pode haver maior dificuldade para estabelecer a similaridade. Tratando-se de uma roupa e um brinquedo, por exemplo, seria necessária a identificação dos atributos (peso, preço, marca, etc.) nos itens a serem comparados, já que não se trata exatamente do mesmo tipo de produto. Caso a comparação seja entre artigos ou documentos textuais, a comparação pode ser facilitada, pois estes itens podem ser considerados similares de acordo com o compartilhamento de termos em comum (CAZELLA, NUNES e REATEGUI, 200-?).

Segundo Adomavicius e Tuzhilin (2005), Balabanovic e Shoham (1997) e Burke (2002) apud OLIVEIRA, 200-?) os sistemas baseados nesta técnica possuem as seguintes limitações:

• Análise de conteúdo limitada: as características do conteúdo devem ser estruturadas de forma que possam ser analisadas automaticamente pelo computador. A extração de características de dados multimídia como vídeo e som, por exemplo, é de difícil aplicação e atribuí-las manualmente torna-se inviável;

• Superespecialização: como esta técnica baseia-se na similaridade de novos itens com aqueles anteriormente avaliados, muitas vezes a recomendação acaba ficando limitada a fazer recomendações de conteúdo muito semelhante ao que o usuário já conhece. “Exemplificando: uma pessoa que nunca experimentou comida árabe jamais receberia uma recomendação para ir ao melhor restaurante de comida árabe da cidade” (OLIVEIRA, 200-?);

• O problema do novo usuário: tendo avaliado um número pequeno de itens no sistema a recomendação fica pouco precisa, já que esta técnica utiliza o histórico do usuário;

• Elasticidade versus plasticidade: este problema surge quando o perfil de um usuário já está consolidado, por possuir um longo histórico de avaliações. Caso um usuário que gosta de churrasco torne-se vegetariano, ele continuará recebendo recomendações relacionadas a churrasco, até que tenha feito novas avaliações suficientes para alterar o seu perfil;

Por outro lado a utilização desta técnica apresenta as seguintes vantagens (MACHADO, 2006):

• Independência do número de usuários: a análise de similaridade é feita apenas entre os itens e um único usuário, logo a qualidade da recomendação não dependerá da quantidade de usuários no sistema;

• Gostos únicos: já que leva em consideração apenas a necessidade individual, esta técnica consegue realizar recomendações para usuários de gostos específicos;

• Itens novos e não populares: apesar de possuírem pouca ou nenhuma avaliação, estes itens podem ser igualmente recomendados, já que dependem exclusivamente da comparação com o perfil de um único usuário.

2.2.2 Filtragem colaborativa

O termo filtragem colaborativa foi usado pela primeira vez por David Goldberg em um artigo intitulado Using collaborative filtering to weave an information tapestry. Goldberg desenvolveu um sistema chamado Tapestry (tapeçaria) que permitia que os usuários fizessem anotações em documentos, marcando-os como interessante ou desinteressante. A partir da análise dessas informações, o sistema conseguia filtrar estes documentos para seus usuários (SEGARAN, 2008).

A filtragem colaborativa diferentemente da filtragem baseada em conteúdo, não exige a compreensão dos itens a serem recomendados. Nesta técnica a similaridade entre usuários é utilizada para gerar uma recomendação (CAZELLA, NUNES e REATEGUI, 200-?). Por exemplo, o usuário X define suas preferências e, a partir deste momento, o sistema buscará usuários com perfil semelhante. Considerando que essa busca tenha como resultado o usuário Y, o sistema recomendará para o usuário X os mesmos itens

6

recomendados para Y (LORENZI, 2010).

De acordo com Cazella, Nunes e Reategui (200-?) esta técnica segue basicamente três passos:

• Calcular o peso de cada usuário em relação à similaridade ao usuário alvo (métrica de similaridade)

• Selecionar um subconjunto de usuários com maiores similaridades para considerar na predição

• Normalizar as avaliações e computar as predições, ponderando as avaliações dos vizinhos com seus pesos.

Segundo Kajimoto (2008 apud Rodrigues, 2010) a filtragem colaborativa pode oferecer um grau de surpresa maior ao usuário do que a filtragem baseada em conteúdo. A surpresa pode ocorrer na recomendação de itens não imaginados pelo usuário, mas que se encaixam no seu perfil. Este tipo de recomendação pode ser visto, por exemplo, em um sistema que indique o download de músicas. O sistema pode perceber que a música Moneytalks do grupo AC/DC está muito bem avaliada por usuários que se interessam pelo gênero rock, mas não está presente no perfil do usuário X. Mesmo não tendo demonstrado interesse especificamente pelo grupo AC/DC, o usuário X receberá a recomendação da música, já que seu perfil é semelhante aos do grupo interessado por rock (RODRIGUES, 2010).

Alguns problemas apresentados pela recomendação colaborativa são (CAZELLA, NUNES e REATEGUI, 200-?):

• Problema do primeiro avaliador: itens que não foram avaliados não estão relacionados a nenhum perfil, logo não serão recomendados até que recebam uma avaliação.

• Problema de pontuações esparsas: quando existem poucos usuários no sistema torna-se mais difícil encontrar similaridades entre perfis.

• Similaridade: alguns usuários podem apresentar um gosto muito diferente da maioria dos membros do sistema, com isso o sistema terá dificuldades em encontrar itens que devam ser recomendados.

2.2.3 Filtragem híbrida

Esta técnica é a combinação de dois ou mais tipos de filtragem. A filtragem híbrida tem o objetivo de utilizar os pontos fortes de outras técnicas para minimizar as limitações apresentadas pelo uso de apenas uma abordagem (ADOMAVICIUS; TUZHILIN, 2005; BALABANOVIÜ; SHOHAM, 1997; BURKE, 2002 apud OLIVEIRA, 200-?). Alguns autores consideram esta técnica como sendo a combinação exclusiva da filtragem baseada em conteúdo com a colaborativa, conforme a Figura 3.

Figura 3 – Filtragem híbrida (CAZELLA, NUNES e REATEGUI, 200-?)

7

2.3 API de Geolocalização do HTML5 A utilização dos dados referentes à localização de um usuário possibilitou a criação de novos

modelos de negócios e serviços, capazes de oferecer conteúdos personalizados ou direcionados a pessoas que se encontram em determinado lugar.

O termo Geolocalização se refere à identificação do local geográfico de um usuário ou dispositivo de computação por meio de vários mecanismos de coleta de dados. Normalmente, a maioria dos serviços de geolocalização usa endereços de roteamento de rede ou dispositivos GPS internos para determinar esse local (THE GOOGLE MAPS JAVASCRIPT API V3 – BASICS, 2010).

Atualmente na web existem muitos serviços que fazem uso da geocalização em seu sistema, um exemplo é o Foursquare. Este serviço possibilita ao usuário compartilhar sua localização com uma rede de amigos, com o objetivo de consultar informações ou receber informações sobre o local em que se encontra (BELALIAN, Daniel, 2010).

Existem diversas maneiras de obter os dados de localização de um dispositivo ou usuário. Pode-se citar como as principais opções com essa finalidade (Métodos de Geolocalização, 200-?):

• Geolocalização IP: Método utilizado pela maioria dos navegadores web. Através de consultas whois e serviços de localização de IP consegue detectar o posicionamento do usuário;

• Triangulação GPRS: Dispositivos conectados a uma rede de celulares podem determinar sua posição pela triangulação das antenas GPRS (General packet radio service) próximas;

• GPS (Sistema de Posicionamento Global): Utiliza informações obtidas de satélites para obter seu posicionamento geográfico. É o método mais preciso podendo chegar a uma margem de erro de apenas 5 metros;

O World Wide Web Consortium (W3C), consórcio internacional responsável pela criação e regulamentação de padrões web, apresentou, em dezembro de 2008, a primeira especificação da API de Geolocalização presente no HTML5 (Hypertext Markup Language, versão cinco). Esta funcionalidade fornece informações sobre a localização geográfica aproximada do dispositivo que está acessando um website. O processo de obtenção destes dados pela API consiste na união de sinais de GPS, endereços IP e endereços MAC de equipamentos com WiFi ou Bluetooth (Geolocalização com W3C e GeoIP, 2011).

Como a API é exclusiva do HTML5, seu uso não está disponível em todos os navegadores web, já que nem todos interpretam o HTML5. Os principais browsers que já suportam o uso da API são (Geolocation API Support):

• Google Chrome 5.0 ou superior; • Firefox 3.5 ou superior; • Safari 5.0 ou superior; • Opera 10.6 ou superior; • Internet Explorer 9.0 ou superior.

Para preservar a privacidade do usuário em relação a sua localização, a API, ao ser utilizada

automaticamente, pede a autorização do mesmo conforme Figura 4.

Figura 4: Solicitação da API

8

2.4 Google Maps API O Google Maps é uma aplicação web que oferece uma interface intuitiva para visualização de mapas

e imagens capturadas por satélites (PIMPLER, 2006a apud GONÇALVES, 2010). Através deste serviço é possível visualizar dados sobre locais e empresas, incluindo sua localização, informações de contato, fotos e rotas. Além disso, o usuário pode consultar endereços e ainda calcular as rotas entre eles, sabendo a distância e o tempo de percurso do trajeto dependendo do tipo de transporte.

Para incorporar este serviço em outros sites, a Google disponibiliza a API do Google Maps, que permite tanto o uso simples da visualização dos mapas, quanto possibilita aos desenvolvedores criar aplicações mais complexas envolvendo estes mapas. Esta API está disponível nas seguintes versões:

• API Javascript do Google Maps (versão 3 é a mais recente)

• API Flash/ActionScript do Google Maps

• API do Google Static Maps

• API do Google Mapplets

• Google Maps API Premier

Cada uma dessas versões diferencia-se pela linguagem de programação utilizada, configurações possíveis e finalidade de utilização.

2.5 Arquitetura Model-View-Controller (MVC) O Model-View-Controller (MVC) é um padrão de arquitetura de software que tem como objetivo

melhorar a produtividade de projetos através da divisão da divisão de tarefas dentro de um sistema, facilitando a organização do mesmo (MARINS, 2008; BASTOS, 2011).

Neste padrão o sistema desenvolvido possui três camadas (BAPTISTELLA, 2009):

• Modelo: É a camada que contem a lógica da aplicação e representa a estrutura de dados do sistema. Neste modelo será manipulada toda a informação vinda do banco de dados.

• Visão: É responsável pela apresentação de todas as informações ou interface ao usuário final do sistema.

• Controlador: Camada que faz a comunicação entre a visão e o modelo. Esta camada é responsável por controlar o fluxo de informação do sistema, definindo quais regras devam ser acionadas e quais informações devam ser geradas.

Com a utilização deste padrão, qualquer tipo de alteração em uma das camadas não interfere nas demais, facilitando a alteração e manutenção dos sistemas. Segundo Bastos (2011) algumas vantagens da utilização deste modelo de arquitetura são:

• Facilidade no reaproveitamento de código;

• Facilidade na manutenção e adição de recursos;

• Maior integração da equipe e/ou divisão de tarefas

3 TRABALHOS RELACIONADOS Foi realizada uma pesquisa por sites que assim como o sistema desenvolvido, possuem como

objetivo prover a recomendação ou reunir um conjunto de eventos para que possam ser melhor divulgados ao publico.

3.1 Eventful O site http://eventful.com provê aos usuários a visualização e recomendação de eventos em qualquer

lugar do mundo. O site apresenta inicialmente os eventos mais populares de acordo com a localização detectada, mostrando uma lista de categorias que podem ser selecionadas pelo usuário. Permite também a realização do cadastro de usuário, onde este pode informar seus interesses e receber recomendações de acordo com o perfil. Neste cadastro é possível definir a cidade preferida do usuário, para que quando este realize a autenticação no sistema sejam mostrados os eventos deste local.

9

Os eventos divulgados neste serviço podem ser cadastrados por qualquer usuário, bastando apenas que se cadastre no sistema. Esta abordagem pode aumentar a divulgação dos eventos, já que é o próprio publico que esta realizando a divulgação. Porém isso pode diminuir a credibilidade do conteúdo apresentado, já que não existe uma verificação com os responsáveis pelo evento se a informação cadastrada está correta.

Outras opções de destaque apresentadas são a ferramenta de busca, onde é possível determinar em qual cidade realizar a pesquisa de eventos, e a demanda por eventos. Nesta funcionalidade os usuários podem solicitar a realização de um evento no local desejado.

3.2 Upcoming O segundo site analisado foi o http://upcoming.yahoo.com/. Da mesma forma que o eventful.com, este serviço detecta a localização do usuário e mostra os eventos que ocorrerão neste local. Cabe ressaltar que a análise deste site foi feita a partir de uma máquina localizada em Porto Alegre, porém o serviço indicou que o acesso estaria sendo feito na cidade de Montevidéu no Uruguai.

Inicialmente os interesses do usuário são definidos na edição do perfil, onde é possível adicionar artistas favoritos. Para isto é utilizada a integração com outros sites como Pandora, last.fm e iTunes.

Assim como no site analisado anteriormente, os eventos existentes do sistema podem ser cadastrados por qualquer usuário que tenha realizado seu cadastro.

3.3 Noite hoje O site http://www.noitehoje.com.br/ é um aplicativo para Web, iPhone e Android. Este serviço não

realiza recomendações, apenas mostra a lista de eventos que serão realizados em Porto Alegre. A aplicação possui uma interface simples que facilita a visualização do conteúdo. Possui uma ferramenta de busca e permite a visualização dos locais dos eventos através da Google Maps API. O usuário também possui a opção de ver detalhes dos eventos e de compartilhá-los com outras pessoas através do uso de redes sociais como Twitter e Facebook.

3.4 Guia da semana O portal Guia da Semana, http://www.guiadasemana.com.br, reúne informações sobre lazer, cultura

e entretenimento das principais cidades brasileiras. O site apresenta inicialmente os eventos de destaque e conteúdo relacionado à área de entretenimento como notícias, dicas e promoções.

Apesar de não possuir nenhum método de recomendação de conteúdo, disponibiliza uma ferramenta de busca que mostra a lista de eventos da categoria selecionada, e possibilita a procura de eventos em um local ou região.

4 MODELAGEM E DESENVOLVIMENTO DO SISTEMA A solução proposta neste trabalho é o desenvolvimento de uma aplicação web, que permita aos

usuários encontrar e receber recomendação de eventos de diversas categorias que sejam de seu interesse. A aplicação visa recomendar eventos de acordo com a combinação do perfil e geolocalização dos usuários.

O sistema foi desenvolvido com linguagem de programação PHP (PHP: Hypertext Preprocessor) e com o uso do banco de dados MySQL. Por ser um protótipo, a aplicação não está disponível na web, por isso para seu funcionamento é necessária a instalação de um servidor web em uma máquina local. Durante o desenvolvimento deste projeto foi utilizado o servidor web Apache.

4.1 Banco de dados A Figura 5 apresenta a modelagem de dados do sistema de recomendação desenvolvido.

10

Figura 5 – Modelo de dados

A seguir são apresentadas as funções de cada tabela existente no banco de dados do sistema.

• adm: responsável por armazenar os dados referentes aos usuários do tipo ‘Adminstrador’;

• categoria: contém os atributos das categorias de eventos existentes no sistema;

• evento: armazena os dados referente aos eventos, como nome, data e detalhes;

• evento_categoria: utilizada para relacionar um evento a uma determinada categoria;

• local: armazena todas as informações sobre os locais de realização dos eventos;

• produtora: contém os dados referentes aos usuários do tipo “Produtora”;

• usuário: possui os dados dos usuários do tipo ‘Cliente’, como nome, email, e as palavras-chaves de seu interesse definidas no perfil;

• usuário_categoria: utilizada para armazenar a atribuição de interesse de um usuário por uma categoria;

• usuário_eventos: esta tabela armazena o relacionamento do usuário com os eventos que o mesmo optou pelo comparecimento.

4.2 Desenvolvimento do sistema A aplicação apresentada tem o objetivo de realizar recomendações através da técnica de

11

recomendação baseada em conteúdo. Porém, por tratar-se de um protótipo, o método de filtragem aplicado utiliza apenas a relação entre os itens e o perfil/geolocalização do usuário, sem considerar uma relação item-item ou mesmo um histórico do usuário.

Para a criação do sistema foi utilizado um modelo próprio de MVC. No modelo desenvolvido a camada Model é apresentada através das classes do tipo Bean, as quais representam as entidades existentes no sistema. A camada Controller é aplicada através das classes do tipo DAO (Data Acces Object), que irão realizar todas as interações referentes aos objetos ou modelos (Bean) com o banco de dados, como editar, apagar e recuperar informações das entidades. A View, como foi explicado no referencial teórico, trata-se de telas ou interface do sistema.

Nesta aplicação existem três tipos de papéis de usuários: Administradores, Produtoras - responsáveis pelo gerenciamento e cadastro de eventos respectivamente e Usuário/Cliente - representando os interessados em receber recomendações.

4.1 Seção de gerenciamento do sistema Através da seção de gerenciamento, acessada pela URL localhost/eventos/adm, é possível fazer a

administração de usuários, eventos e categorias de eventos existentes no sistema. Na pagina inicial é realizada a identificação do usuário, podendo ser esse um Administrador ou Produtora.

4.1.1 Administração do sistema Com o objetivo de gerenciar o sistema foi criado o perfil de usuário Administrador. Usuários com

esse papel são responsáveis por realizar o cadastro das categorias de eventos, e das produtoras existentes no sistema. Através da área de administração do sistema, Figura 1, os administradores têm acesso a todos os dados referentes a categorias, produtoras, eventos, locais e usuários.

No sistema existem quatro tipos de categorias de eventos sendo elas: Show, Festa, Teatro e Outros. Todas as demais categorias são subcategorias de alguma dessas quatro, podendo ter seus nomes alterados pelos administradores caso haja necessidade. Inicialmente foi cadastrado um conjunto de subcategorias comuns a eventos, porém espera-se que surjam outras em função da demanda de eventos a serem divulgados. A tela de cadastro de categorias pode ser observada na Figura 6.

Figura 6 – Tela de cadastro de categoria

Com o objetivo de mostrar o funcionamento do sistema, foram cadastradas algumas produtoras de eventos conhecidas do público em geral. Para o uso comercial da aplicação a intenção é que as produtoras que desejam divulgar seus eventos entrem em contato com o responsável pelo sistema e solicitem o seu cadastro.

4.1.2 Cadastro de eventos

O perfil Produtora refere-se aos responsáveis pela produção dos eventos, e são os usuários com este perfil que cadastrarão os eventos existentes no sistema, informando os dados necessários.

Usuários deste tipo também possuem acesso à área administrativa do site, porém neste caso os dados apresentados são relacionados somente ao seu perfil, ou seja, seus dados cadastrais e eventos.

Ao realizar um cadastro de um evento é necessária a informação dos seguintes dados:

• Nome do evento

12

• Data

• Local de realização do evento.

• Detalhes a respeito do evento, como dados sobre o artista, horário e preços de ingressos.

• Categorias a que o evento pertence.

A tela de cadastro de eventos é apresentada na Figura 7.

Figura 7 – Tela de cadastro de eventos

Para a escolha do local onde será realizado um evento, é disponibilizada uma lista com locais que já possuem algum evento relacionado. Caso o local desejado ainda não esteja cadastrado no sistema, a própria produtora poderá procurar e cadastrá-lo, através da tela de cadastro de local, vista na Figura 8.

Figura 8 – Tela de cadastro de local

13

Nesta tela o usuário deve informar o endereço do local que busca cadastrar e verificar os resultados que serão fornecidos pela Maps Api. Após selecionar o resultado desejado e definir um nome, o local fica disponível no sistema. Durante o cadastro são armazenadas a latitude e longitude do endereço, que são um dos principais dados utilizados durante o processo de recomendação dos eventos.

A procura por um endereço, realizada neste formulário, utiliza o processo de geocodificação. Este processo consiste em converter endereços como “1600 Amphitheatre Parkway, Mountain View, CA”, em coordenadas geográficas como latitude e longitude (GOOGLE GEOCODING, 2010). A API do Google Maps possui um geocodificador cliente, responsável por realizar o processo de busca de endereços nesta tela.

4.2 Perfil ‘usuário’ O perfil Usuário corresponde aos interessados em receber a recomendação dos eventos. Apesar de

que o principal objetivo seja recomendar conteúdos através da combinação do perfil com a geolocalização, os usuários não autenticados no sistema também poderão receber estas recomendações, logicamente, neste caso, utilizando-se somente da localização do mesmo. Estes clientes poderão definir seus interesses através da edição de seus perfis no sistema, onde é possível visualizar todas as categorias de eventos disponíveis.

4.3 Processo de recomendação Ao acessar o sistema o usuário têm sua localização detectada através do uso da API de Geolocalização do HTML5, ou da API GeoIp Javascript provido pela empresa MaxMind (maxmind.com), caso o navegador utilizado não suporte HTML5. Este serviço da MaxMind também utiliza o método de Geolocalização IP e está disponível para uso gratuitamente em http://www.maxmind.com/app/javascript_city.

Ao realizar seu cadastro no sistema o usuário deve preencher um formulário com informações pessoais como nome, e-mail e categorias de eventos de seu interesse, conforme a Figura 9. Neste cadastro existe também a possibilidade de informar tags ao sistema. As tags ou palavras-chave são utilizadas para determinar interesses específicos do usuário, seja por um artista, gênero, ou assunto relacionado aos eventos.

Figura 9 – Tela de cadastro do usuário.

14

O processo de recomendação ocorre através do método “getAllByUsuario” da classe “EventoDao”, executado após o usuário realizar a autenticação no sistema. Este método recebe como parâmetros a latitude e longitude que o usuário encontra-se e o idusuario, que representa o número de identificação salvo no banco. Após buscar no banco de dados as tags e categorias referentes ao usuário, o método executa uma instrução SQL que busca todos os eventos que pertencem ao conjunto de categorias obtidas, e que estão a uma distância menor que 30 km da atual geolocalização do usuário. Esta medida de 30 km foi considerada razoável para atender a usuários que tem interesse em encontrar eventos em sua região.

Para determinar a distância em que se encontra o local de realização dos eventos, é usada uma instrução SQL com base na fórmula de Haversine, utilizada para calcular distâncias circulares entre dois pares de coordenadas em uma esfera (FOX, 2009). A distância é calculada com o uso da latitude e longitude detectadas pelo sistema e é apresentada em quilômetros.

A segunda parte do processo é feita através da definição da similaridade dos eventos em relação ao perfil do usuário. Para verificar esta similaridade, é utilizada uma função nativa do MySQL, chamada “MATCH()”. Esta função realiza uma busca por uma 'String', dada como argumento de “AGAINST()”, nos campos definidos em “MATCH()”. Neste caso a ‘String’ a ser procurada será o conjunto de tags definidas pelo usuário, e os campos que terão seus conteúdos utilizados para busca serão ‘nome’ e ‘detalhes’ de um evento.

Para cada linha da tabela esta função retorna um valor de similaridade entre o conjunto de tags pesquisado e o conteúdo dos campos definidos. Quanto maior for o valor obtido, maior é a semelhança, ou seja, mais relevante será o evento para o usuário. O valor de similaridade obtido foi definido como ‘score’, e os resultados serão ordenados de forma decrescente de acordo com este campo.

Cabe ressaltar que a função “MATCH()” considera a utilização de palavras com tamanho mínimo de quatro caracteres. Esta característica pode ser vista como uma limitação, já que com isso o sistema impede o usuário de informar palavras-chaves com um número menor de caracteres.

O processo de recomendação pode ocorrer também para usuários não autenticados no sistema. Para estes visitantes a recomendação é feita levando em consideração apenas a geolocalização dos mesmos. Neste caso a ordenação dos resultados é feita em ordem decrescente de acordo com a distância dos locais, ou seja, os eventos realizados mais perto da localização do usuário serão apresentados no topo da lista. O método utilizado nesse procedimento é o “getAllByRad” da classe “EventoDao”.

4.5 Visualização dos eventos A visualização dos eventos recomendados é feita na tela inicial do sistema, que mostra também um mapa, onde podem ser vistos os locais de realização destes eventos, conforme Figura 10. Cada local é representado por um ícone, que ao ser clicado mostra o componente ‘info window’ da API Maps. Este componente consiste em uma janela de informações referentes ao marcador, neste caso nome e endereço do local e a opção de ‘ver eventos’. Ao clicar nesta opção, os eventos que são realizados neste local ficam em destaque na lista.

Figura 10 – mapa de visualização dos locais

15

A Figura 11 mostra a lista de eventos recomendados, onde é possível observar nome, foto, data, nome do local, e nome da produtora de cada evento, além das opções 'no mapa' e 'detalhes'. A primeira opção ao ser clicada faz com que seja mostrado o local do respectivo evento centralizado no mapa. A segunda faz com que seja aberto um Box, mostrando todo o conteúdo referente ao evento selecionado, como descrição e preços de ingresso, conforme a Figura 12. Ainda na visualização de detalhes existe a opção 'eu vou', que clicada salva a referência do evento na tabela “usuario_eventos”, responsável por armazenar os eventos que o usuário irá comparecer. Esta opção foi criada com o propósito de criar um histórico do usuário no sistema, para que futuramente estes dados possam ser também utilizados no processo de recomendação, utilizando a coleta implícita de informações.

Figura 11 – Lista de eventos

16

Figura 12 – Detalhes de um evento

A fim de apresentar formas de organização que auxiliem a busca da informação pelo usuário, a ordenação da lista pode ser alterada de acordo com a ordem alfabética, data de realização ou nível de recomendação dos eventos.

4.6 Pesquisa de eventos Ainda na tela inicial o usuário tem a opção de pesquisar por eventos informando palavras-chave na

caixa de busca. Esta ferramenta permite que o usuário escolha em realizar a pesquisa por eventos que estejam dentro do limite de 30 km em relação a sua geolocalização, ou por todos os eventos cadastrados no sistema.

Assim como na tela inicial, os resultados da busca são exibidos em uma lista, ordenada pela similaridade entre um evento e o termo pesquisado, e os locais de realização dos mesmos são exibidos em um mapa.

4.7 Meus eventos A tela ‘meus eventos’, vista na Figura 13, possibilita a visualização da lista de eventos, os quais o usuário decidiu comparecer. Esta seção serve como uma agenda ou calendário, para que o usuário possa, a qualquer momento, acessar informações referentes aos eventos que irá comparecer.

17

Figura 13 – Lista de eventos do usuário

5 CONCLUSÃO Ao concluir este estudo que teve como objetivo desenvolver um sistema de recomendação baseado

no perfil/geolocalização do usuário, é possível afirmar que utilizando tecnologias e embasamento teórico adequados, é viável a construção de uma aplicação que resolve os problemas inicialmente detectados.

Por se tratar de um protótipo, o sistema foi desenvolvido com funcionalidades básicas para atender aos objetivos propostos. A partir do que foi realizado, considera-se possível o desenvolvimento de melhorias e novas funcionalidades como:

• Melhora do processo de recomendação: o processo de recomendação desenvolvido pode ser melhorado com a aplicação mais completa da técnica de filtragem baseada em conteúdo. O uso da relação item-item e a aplicação de algoritmos de análise de similaridade podem apresentar resultados mais relevantes ao usuário. Outra alteração útil para tornar o sistema melhor seria a utilização da técnica de filtragem híbrida. Através dessa técnica, o processo de recomendação passaria a considerar também a comparação de perfis de usuários, o que poderia apresentar resultados ainda melhores do que os apresentados com o uso da filtragem baseada em conteúdo.

• Melhora da interface: a reestruturação do layout gráfico do sistema poderia melhorar a visualização das informações apresentadas.

• Possibilitar a visualização de eventos em locais determinados pelo usuário: no sistema desenvolvido o usuário pode visualizar apenas eventos da sua região, ou através da ferramenta de busca, todos os eventos do sistema de acordo com o termo pesquisado. A possibilidade de pesquisa de eventos em outra região, definida pelo usuário, poderia ser útil, já que o mesmo poderá ter interesse em uma localidade diferente daquela onde se encontra.

• Armazenamento das buscas realizadas: os termos pesquisados na ferramenta de busca poderiam ser salvos no banco, com o intuito da criação de um histórico de pesquisas do usuário. Este histórico seria utilizado também no processo de recomendação.

• Criação de versão para dispositivos móveis: o desenvolvimento de uma versão mobile poderia aumentar o número de usuários do sistema, por consequência, aumentando a divulgação dos eventos.

18

REFERÊNCIAS

BAPTISTELLA, Adriano José. Abordando a arquitetura MVC, e Design Patterns: Observer, Composite, Strategy, 2009. Disponível em:

<http://www.linhadecodigo.com.br/artigo/2367/Abordando-a-arquitetura-MVC-e-Design-Patterns-Observer-Composite-Strategy.aspx>. Acesso em: 30 maio 2011.

BASTOS, Daniel Flores. O que é Model View-Controller (MVC)? 2011. Disponível em: <http://www.oficinadanet.com.br/artigo/desenvolvimento/o_que_e_model-view-controller_mvc> Acesso em: 30 maio 2011.

BELALIAN, Daniel. O que é Foursquare? 2010. Disponível em: <http://www.foursquarebrasil.com.br/foursquare/o-que-e-foursquare> Acesso em: 10 maio 2011.

CAZELLA, Sílvio César; NUNES, Maria Augusta S. N.; REATEGUI, Eliseo Berni. A Ciência da Opinião: Estado da arte em Sistemas de Recomendação, 200-?. Disponível em: < http://www.dcomp.ufs.br/~gutanunes/hp/publications/JAI4.pdf>. Acesso em: 16 maio 2011. FOX, Pamela. Creating a Store Locator with PHP, MySQL & Google Maps. 2008. Disponível em: <http://code.google.com/intl/pt-BR/apis/maps/articles/phpsqlsearch.html>. Acesso em: 22 abril 2011. GONÇALVES, Felipe Cardoso, 2010. Desenvolvimento de um guia de bairro online. Canoas, 2010. Disponível em: < http://www.ulbra.inf.br/joomla/images/documentos/TCCs/2010_2/tcc2-si-felipe_goncalves.pdf>. Acesso em: 20 maio 2011. GOOGLE GEOCODING API. O que é geocodificação, 2010. Disponível em: <http://code.google.com/intl/pt-BR/apis/maps/documentation/geocoding/>. Acesso em: 17 maio 2011. GOOGLE MAPS JAVASCRIPT API V3 – BASICS, Geolocalização, 2010. Disponível em: <http://code.google.com/intl/pt-BR/apis/maps/documentation/javascript/basics.html>. Acesso em: LORENZI, Fabiana. Uma abordagem multiagente de recomendação baseda em suposições e confiança para cenários dinâmicos. Porto Alegre, 2010. Disponível em: <http://www.lume.ufrgs.br/bitstream/handle/10183/26969/000762251.pdf?sequence=1>. Acesso em: 1 jun. 2011. MACHADO, Marcos de Oliveira. RecImóveis: Um Sistema de Recomendação para auxiliar consumidores na decisão de compra de imóveis. São Leopoldo, 2006. Disponível em: <http://www.unisinos.org.br/inf/files/melhores_tccs/2006_2/tcc_marcosdeoliveiramachado.pdf>. Acesso em: 20 maio 2011. MACK, Roger Schneider. Sistema de recomendação baseado na localização e perfil utilizando a plataforma android. Porto Alegre, 2010. Disponível em: < http://www.lume.ufrgs.br/bitstream/handle/10183/28328/000767836.pdf?sequence=1>. Acesso em: 25 maio 2011. MARINS, Alantiel Freire. MVC para agilizar projetos Web. 2008. Disponível em: < http://imasters.com.br/artigo/10012/desenvolvimento/mvc-para-agilizar-projetos-web>. Acesso em: 10 jun. 2011. OLIVEIRA, Leonardo Gomes de. Proposta de uma estrutura metodológica para implementação de sistemas de recomendação. 200-? . Disponível em: < http://www.intelog.net/ArtigosNoticias/Arquivos/artigo_leonardo_oliveira.pdf>. Acesso em: 30 maio 2011. O’REILLY, Tim. O que é Web 2.0: Padrões de design e modelos para a nova geração de software.

19

2005. Disponível em: <http://www.flaudizio.com.br/files/o-que-e-web-20.pdf>. Acesso em 30 maio. 2011. PRIMO, Tiago; LOH, Stanley. Técnicas de Recomendação para usuários de Bibliotecas Digitais. Anais 3. Simpósio Brasileiro de Sistemas de Informação [e] 1. Fórum Empresarial Brasileiro de Sistemas de Informação / Simpósio Brasileiro de Sistemas de Informação - Curitiba : UnicenP, 2006. RODRIGUES, Talita. Protótipo de um sistema de recomendação de presentes baseado no perfil do usuário. Chapecó, 2010. Disponível em: < http://www5.unochapeco.edu.br/pergamum/biblioteca/php/imagens/000061/000061CF.pdf>. Acesso em: 2 jun. 2011.

SEGARAN, Toby. Programando a inteligência coletiva. Rio de Janeiro: Alta Books, 2008. 282 p.

ZOUAIN, Roberta Rabelo. As armas da raposa: Como os novos produtores de conteúdo estão mudando a comunicação – e o que a publicidade tem a ver com isso. São Paulo, 2006. Disponível em: <http://pack2go.files.wordpress.com/2007/03/tcc_roberta_screen.pdf>. Acesso em: 25 maio 2011.