Você está na página 1de 154

Diego de Morais Sana

Uma Aplicao WEB para Consumo, Filtragem e Recomendao de Blogs e Notcias

Vitria ES, Brasil 08 de novembro de 2012

Diego de Morais Sana

Uma Aplicao WEB para Consumo, Filtragem e Recomendao de Blogs e Notcias

Monografia de Projeto Final apresentado ao Departamento de Informtica do Centro Tecnolgico da Universidade Federal do Esprito Santo como requisito parcial obteno do ttulo de bacharel em Cincia da Computao.

Orientadora Mariella Berger

DEPARTAMENTO DE INFORMTICA CENTRO TECNOLGICO UNIVERSIDADE FEDERAL DO ESPRITO SANTO

Vitria ES, Brasil 08 de novembro de 2012

Resumo

Com o crescimento acelerado e consequente popularizao do acesso web em todo o mundo nos ltimos anos, juntamente com o desenvolvimento de novas ferramentas como os blogs, o custo para publicao de contedo escrito caiu para prximo de zero e alterou-se profundamente a forma de consumo deste por parte das pessoas. A criao e disseminao de tamanha quantidade de informao vm causando um crescente nmero de menes ao termo Information overload, um fenmeno atribudo falha dos mecanismos de filtragem existentes antes da popularizao da web de se adaptar a este novo paradigma. Vrias ferramentas com diferentes abordagens para soluo deste problema j foram desenvolvidas em todo o mundo, e algumas delas so utilizadas diariamente por milhes de pessoas para consumir notcias online e contedo de blogs. A maioria destas ferramentas, porm, no so adaptadas para o consumo de contedo publicado em lngua portuguesa, e usualmente tem caractersticas fundamentais de uso distintas umas das outras. O objetivo deste trabalho desenvolver uma aplicao web, baseada nas principais funcionalidades de outras ferramentas populares j disponveis, para filtragem, recomendao e leitura de contedo publicado em blogs e sites de notcias, que seja compatvel com contedo escrito em lngua portuguesa.

Dedicatria

Dedico este trabalho minha esposa Elisangela, companheira de toda uma vida, pelo amor, carinho e exemplo de perseverncia; minha me pelas corajosas e constantes decises que despertaram e apoiaram meu interesse pela vocao que escolhi; E ao meu pai, pelo apoio, pelas cobranas e o exemplo como eterno estudante.

Agradecimentos

Agradeo primeiramente a Deus, que tem sido bastante generoso nas oportunidades de realizar meus objetivos que me foram concedidas ao longo de minha vida.

s minhas irms e familiares, pelo apoio aos estudos e por estarem presentes e ajudarem nos momentos necessrios.

Aos colegas de quem adquiri conhecimentos e que participaram dos vrios trabalhos durante a graduao que me permitiram chegar presente concluso, em especial aos amigos Bruno Segrini, pelo constante incentivo, e Felipe Frechiani e Raphael Santos pelas contribuies a este projeto.

Aos professores que se empenharam para transmitir os conhecimentos e subsdios necessrios ao bom aprendizado, e aos que instigaram nossa curiosidade e criatividade.

Agradeo ainda minha orientadora Mariella, pelo tempo dedicado e contribuio indispensvel para que este trabalho fosse finalmente concretizado.

Sumrio

Lista de Figuras ......................................................................................................... 7 Lista de Tabelas ........................................................................................................ 8 1 Introduo ........................................................................................................... 9 1.1 Motivao ..................................................................................................... 10

1.2 Objetivo deste trabalho ................................................................................ 11 1.2.1 Objetivos especficos ............................................................................. 11 1.3 1.4 Metodologia .................................................................................................. 12 Estrutura da Monografia ............................................................................... 13

2 Publicao, consumo, filtragem e recomendao de blogs e notcias na web ........................................................................................................................... 14 2.1 Agregadores de notcias .............................................................................. 17 2.1.1 Portais ................................................................................................... 18 2.1.2 Google News ......................................................................................... 19 2.1.3 Digg ....................................................................................................... 21 2.2 Ferramentas para leitura de notcias via feeds ............................................ 23 2.2.1 O Google Reader................................................................................... 24 2.3 Redes sociais como ferramentas para filtragem e recomendao ............... 27 2.3.1 Twitter .................................................................................................... 27 2.3.2 Facebook ............................................................................................... 30 2.4 Ferramentas para consumo de notcias em dispositivos mveis ................. 32

2.5 Filtragem e recomendao em ferramentas para consumo de msica ........ 35 2.5.1 Pandora: genoma musical ..................................................................... 36 2.5.2 Last.fm: scrobbling................................................................................. 37 3 Filtrie: Uma abordagem para o consumo, filtragem e recomendao de blogs e notcias na web .......................................................................................... 39 3.1 Conceito e caractersticas de Filtrie ............................................................. 39

3.2 Anlise do Sistema....................................................................................... 44 3.2.1 Elicitao de Requisitos ......................................................................... 44 3.2.2 Diagramas de casos de Uso .................................................................. 46 3.2.3 Descrio dos casos de uso .................................................................. 50 3.2.4 Diagrama de Classes ............................................................................ 71 3.3 Projeto do Sistema ....................................................................................... 77 3.3.1 Diagrama de classes atualizado ............................................................ 77

3.3.2 3.4 4

Diagramas de sequncia ....................................................................... 80

Projeto de Interface ...................................................................................... 86

Implementao .................................................................................................. 93 4.1 4.2 4.3 Aplicaes desenvolvidas ............................................................................ 93 Plataforma e conjunto de softwares ............................................................. 95 Arquitetura de servidores ........................................................................... 101

4.4 Protocolos de comunicao e API para clientes ........................................ 107 4.4.1 Especificao do protocolo .................................................................. 108 4.4.2 Especificao da API ........................................................................... 109 4.4.3 Exemplo de uso ................................................................................... 113 4.5 Principais algoritmos desenvolvidos........................................................... 114 4.5.1 Determinao de blogs e sites de notcias .......................................... 114 4.5.2 Extrao de textos dos posts ............................................................... 118 4.5.3 Extrao e ranqueamento de palavras-chave ..................................... 123 4.5.4 Arquitetura do sistema de filtragem ..................................................... 131 4.5.5 Indexao de contedo ....................................................................... 137 4.5.6 Recomendaes .................................................................................. 142 5 Concluso e trabalhos futuros ...................................................................... 145 5.1 5.2 5.3 Consideraes finais .................................................................................. 145 Contribuies do trabalho .......................................................................... 146 Perspectivas Futuras.................................................................................. 147

Referncias ............................................................................................................ 149

Lista de Figuras
Figura 1 - Caso de Uso Perfil Usurio ....................................................................... 47 Figura 2 - Caso de Uso Filtragem e Leitura............................................................... 48 Figura 3 - Caso de Uso Scrobbler ............................................................................. 49 Figura 4 - Caso de Uso Indexador ............................................................................ 50 Figura 5 - Diagrama de Classes ................................................................................ 72 Figura 6 - Diagrama de Classes atualizado na fase de projeto ................................. 78 Figura 7 - Diagrama de Sequncia para Acessar Stream Twitter ............................. 81 Figura 8 - Diagrama de Sequncia para Realizar Scrobbling.................................... 84 Figura 9 - Tela com perfil de usurio ......................................................................... 88 Figura 10 - Tela do stream filtrado por tpicos .......................................................... 89 Figura 11 - Tela do stream de filtragem do Twitter .................................................... 90 Figura 12 Tela de interface para leitura de uma notcia ......................................... 91 Figura 13 - Tela de interface de leitura expandida com recomendaes .................. 92 Figura 14 - Arquitetura Escalvel de Servidores ..................................................... 102 Figura 15 - Exemplo de uso da API ......................................................................... 113 Figura 21 - Arquitetura de um sistema de busca ..................................................... 132 Figura 22 - Indice estrutural de palavras-chave em sorted sets .............................. 134

Lista de Tabelas
Tabela 1 - Algoritmo para identificar blogs e sites de notcias................................. 117 Tabela 2 - Algoritmo para extrao de notcias ....................................................... 122 Tabela 3 - Algoritmo para extrao de notcias (continuao) ................................ 123 Tabela 4 - Algoritmo para extrao de palavras-chave ........................................... 130 Tabela 5 - Algoritmo para extrao de palavras-chave (continuao) .................... 131 Tabela 6 - Algoritmo do mdulo de consultas ......................................................... 136 Tabela 7 - Algoritmo para recomendao de posts relacionados............................ 144

Introduo

Com o crescimento acelerado e consequente popularizao do acesso World Wide Web em todo o mundo nos ltimos 10 anos, juntamente com o desenvolvimento de novas ferramentas, o custo para publicao de contedo caiu para prximo de zero e alterou-se profundamente a forma de consumo deste por parte das pessoas. Notadamente, a primeira grande rea de produo de contedo a ser impactada pela web foi a escrita. A partir do surgimento dos blogs, popularizados inicialmente por uma ferramenta chamada Blogger1, qualquer pessoa passou a ter a possibilidade de publicar textos de sua autoria e torn-los acessveis de qualquer lugar do mundo. Da em diante, com o auxilio deste tipo de ferramenta, a quantidade de contedo escrito disponvel na web cresceu de forma exponencial. Ao contedo publicado nos blogs somou-se ainda o produzido por grande parte da indstria editorial do planeta diante do baixo custo, jornais, revistas e peridicos passaram a disponibilizar na web o contedo de suas edies impressas e tambm a produzir contedo exclusivo para a nova mdia. Do lado dos leitores, essa revoluo provocada pela web foi positiva na medida em que tornou instantneo e (quase sempre) gratuito o acesso a quantidade inimaginvel de informao e diversidade de pontos de vista. Se antes ficava-se praticamente restrito ao jornal local, hoje um usurio tem acesso a milhares de jornais de todo mundo, e ainda aos blogs (de leigos, especialistas e at mesmo de jornalistas profissionais) que versam sob temas relativos a nichos antes pouco contemplados pela indstria editorial. Embora a princpio parea algo positivo, nota-se que estas mudanas introduziram nesta rea uma srie de novos problemas. Dada a quantidade quase infinita de contedo disponvel, como pode um usurio da web encontrar e consumir exatamente o que necessita sem perder tempo, ou ainda como pode saber se a fonte de tal contedo confivel? Alm disso, outras questes como a falta de legibilidade e usabilidade contribuem para que muitos usurios no se sintam plenamente confortveis em consumir contedo escrito apenas pela web.
1

http://www.blogger.com

10

No que diz respeito Cincia da Computao, esse problema despertou (ou reativou, em alguns casos) o interesse em pesquisas nas reas que tem aplicao em solues para o problema, tais como categorizao de textos, algoritmos de recomendao e aprendizado de mquina. Munidos desses conhecimentos, profissionais de nossa rea vm desenvolvendo ferramentas que visam facilitar a filtragem e consumo do contedo escrito na web, havendo um crescente interesse por solues propostas na rea da personalizao de contedo baseado em preferncias pessoais. Por outro lado, deve-se salientar que a grande maioria das solues mais populares e utilizadas na web so disponibilizadas e/ou compatveis apenas com o idioma ingls, havendo uma carncia de boas ferramentas para uso por parte dos leitores que compreendem apenas a lngua portuguesa.

1.1

Motivao

Em uma das apresentaes da srie Shift Happens, sobre o progresso da tecnologia da informao em nossa sociedade, o pesquisador Karl Fisch [FISCH 2008] estimou que a quantidade de informao nica a ser gerada naquele ano (4 exabytes - 4.0 x 10^19) excederia toda a produo de informao dos ltimos 5 mil anos. A criao e disseminao de tamanha quantidade de informao, catalizada pela internet, vem causando um crescente nmero de menes ao termo Information overload, o qual estudiosos e pessoas comuns atribuem ser um dos problemas dos tempos atuais. N. Zeldes [ZELDES 2010] afirma que hoje existe muito mais informao que esperasse de ns que seja lida do que tempo disponvel para fazermos isso, o que d origem a uma situao que interfere na produtividade, sanidade e qualidade de vida das pessoas. Para Clay Shirky [SHIRKY 2008], porm, a culpa no da internet e este no um problema novo. Para ele, este problema existe desde que Gutemberg inventou a imprensa, momento a partir do qual a quantidade de livros disponveis para leitura passou a ser maior que o tempo disponvel em toda a vida de um indivduo. Na era

11

do contedo impresso, porm, o custo e o risco foraram a criao de mecanismos (as editoras) para filtrar a quantidade de informao publicada. J a internet, segundo Shirky, introduziu uma economia ps-Gutemberg: agora possvel publicar qualquer coisa de graa, no havendo mais filtragem. Desta forma, o chamado excesso de informao no o problema a ser resolvido, mas sim a falha dos filtros, a qual ns devemos resolver com o desenvolvimento de novos e melhores paradigmas de filtragem adequados a esta nova realidade. Vrias ferramentas com diferentes abordagens j foram desenvolvidas em todo o mundo, e algumas delas so utilizadas diariamente por milhes de pessoas para consumir notcias online e contedo de blogs. Ainda assim, nota-se frequentemente, atravs de comentrios publicados em redes sociais e nos prprios blogs que as solues disponveis ainda no so completamente satisfatrias e que novas abordagens precisam ser propostas. No caso de usurios que fazem leitura exclusivamente de contedo publicado em lngua portuguesa a insatisfao pode ser ainda mais incipiente, uma vez que a maioria das ferramentas mais populares no so compatveis com nossa lngua.

1.2

Objetivo deste trabalho

O objetivo deste trabalho desenvolver uma aplicao web, baseada nas principais funcionalidades de outras ferramentas populares j disponveis, para filtragem, recomendao e leitura de contedo publicado em blogs e sites de notcias, que seja compatvel com contedo escrito em lngua portuguesa.

1.2.1 Objetivos especficos

Este trabalho tem como objetivos especficos: Estudar as mais conhecidas e utilizadas ferramentas para consumo e filtragem de contedo escrito em blogs e sites de notcias, disponibilizadas na

12

World Wide Web do final do sculo passado at os dias atuais. Efetuar a anlise e o projeto de uma ferramenta compatvel com a lngua portuguesa, que contenha melhorias incrementais e rena as principais caractersticas (de acordo com estudo previamente realizado) de outras ferramentas populares para consumo, filtragem ou recomendao de contedo em blogs e sites de notcias. Implementar e disponibilizar em um endereo na web um prottipo completamente funcional que contemple o maior nmero possvel de funcionalidades propostas na fase de anlise e projeto da ferramenta.

1.3

Metodologia

A seguinte metodologia foi seguida para realizao deste trabalho: a) Pesquisa: por meio de pesquisa bibliogrfica e pesquisa virtual ser realizado um estudo para identificar as ferramentas mais populares que tenham funcionalidades dentro do contexto proposto neste trabalho.

b) Anlise e proposta: iremos analisar as ferramentas apresentadas na fase de pesquisa para identificar quais as caractersticas nicas de cada uma delas, e a partir desta anlise propor as funcionalidades e melhorias incrementais que a ferramenta desenvolvida neste trabalho deve ter.

c) Projeto e implementao: Da proposta e sua anlise, ser elaborado um projeto de sistema de para um a ferramenta prottipo web proposta, seguida da

implementao

completamente

funcional.

d) Concluso: Finalizada a implementao do prottipo, dissertaremos sobre o quanto do proposto inicialmente foi efetivamente implementado, se os objetivos foram alcanados e as possveis melhorias que podem ser implementadas em trabalhos futuros.

13

1.4

Estrutura da Monografia

Esta monografia est estruturada da seguinte forma: No captulo 2 so apresentados conceitos relativos ao consumo e filtragem de contedo escrito e a maneira como estes evoluiram desde o surgimento da internet. So apresentadas e discutidas algumas das mais conhecidas ferramentas desenvolvidas para se realizar estas tarefas. No captulo 3 apresentamos a abordagem para consumo, filtragem e recomendao de contedo publicado em blogs e sites de notcias a ser em nossa aplicao web, a qual batizamos com o nome Filtrie. So descritas as caractersticas e o funcionamento da ferramenta. Tambm neste captulo sero includos os documentos da anlise e projeto do sistema. No captulo 4 tratamos da implementao da ferramenta, apresentando a arquitetura de servios e hardware necessria para execuo e disponibilizao de Filtrie na web, bem como descrevendo os protocolos de comunicao e principais algoritmos desenvolvidos. Por fim, no captulo 5, so apresentadas as concluses sobre o trabalho realizado e as possibilidades de desenvolvimento de trabalhos futuros.

14

Publicao, consumo, filtragem e recomendao de blogs e

notcias na web

Nos primeiros meses de 1995, com fim das restries legais para uso comercial da internet nos Estados Unidos (outrora restringida a pesquisadores e comunidades educacionais), mais de 450 revistas e jornais daquele pas j disponibilizavam verses online [JACKSON 1995]. Neste primeiro momento, estes sites de notcias tipicamente no passavam de repositrios de reportagens anteriormente publicadas em meio fsico [ALLAN 2006]. No demorou muito, porm, para que os jornalistas da poca percebem-se o potencial da internet para disseminao de notcias, principalmente as chamadas breaking news2: muitos consideram a data de 19 de abril, quando um atentado a bomba em Oklahoma matou 168 pessoas, como um tipping point3 na histria das notcias na web. Naquela data, dada a importncia histrica do evento (maior ataque em solo americano desde a 2 Guerra mundial), jornais e revistas se apressaram para publicar reportagens, mapas e infogrficos em suas verses online minutos aps o acontecimento [ALLAN 2006]. Deste momento em diante, a verso online passou a ter importncia cada vez maior dentro das organizaes de mdia escrita, com a criao de contedo exclusivo e/ou diferenciado para a web, surgimento de jornais exclusivamente online e migrao completa de antigas publicaes do meio impresso para o meio digital. Ao mesmo tempo, os leitores perceberam que a internet era uma mdia de duas vias, o que lhes possibilitava interagir de forma instantnea com os criadores de notcias online, atravs de ferramentas como fruns de discusso e salas de bate-papo. Alguns desses leitores foram alm e criaram sites onde listavam links para notcias ou artigos de jornais e revistas online, incluindo comentrios com seu ponto de vista sobre o assunto referendado. A este tipo de site Jorn Barger deu o nome de weblog
2

Termo derivado das transmisses de TV e rdio. Atribudo a eventos excepcionais (como um terremoto ou morte de um presidente) que justificam a interrupo da programao normal para serem noticiados imediatamente. 3 Termo da sociologia que faz aluso ao ponto em que um sistema ento estvel se torna desequilibrado como resultado de pequenas mudanas. Poderia ser traduzido como ponto de ruptura ou ponto de desequilbrio .

15

[BLOOD 2000], termo que posteriormente ficou mais conhecido na forma reduzida blog, sugerida por Peter Merholz [MCCULLAGH e BROACHE 2007]. No h uma nica definio precisa do que constitui um blog, mas h consenso sobre algumas caractersticas que uma pgina precisa seguir para ser definida desta forma, tais como: o site tem um nico editor, e o contedo nele publicado deve refletir as opinies e personalidade do editor; atualizaes frequentes, exibidas em ordem cronolgica inversa; contedo acessvel a todo o pblico, e de forma gratuita; [PAQUET 2002]. H ainda pequenas caractersticas de design e conduta, algumas delas sugeridas pelo prprio Barger [AMMANN 2009]. Durante 1997 e 1998 o nmero de blogs no passou de algumas dezenas, dada a ento necessidade de conhecimentos em programao ou web design para a criao de uma pgina na internet. O formato comeou a se popularizar rapidamente a partir de 1999, quando os sites Pitas4 e depois o Blogger lanaram ferramentas web que possibilitavam a fcil criao de blogs por parte de pessoas sem maiores conhecimentos tcnicos. Segundo estimativas, em meados de 2002 j existiam meio milho de blogs na web [PAQUET 2002]. Hoje, este nmero se aproxima de 200 milhes [NIELSEN 2012]. A polifrerao dos sites de notcia online e ascenso dos blogs deram origem a alguns novos problemas para os milhes de leitores que no se contentam em acompanhar apenas um nico jornal online ou blog local: 1. Qual o melhor dispositivo e ferramenta para leitura de contedo escrito na internet? 2. Como encontrar e escolher as melhores e mais confiveis fontes? 3. Como acompanhar e se manter atualizado em relao ao novo contedo publicado constantemente nas fontes de sua preferncia? 4. Como encontrar artigos ou notcias que sejam de seu interesse em fontes que um leitor no acompanha regularmente?

http://www.pitas.com.

16

Ao longo da ltima dcada, vrias aplicaes web direcionadas ao uso pessoal se propuseram a prover solues para um ou mais destes problemas, obtendo diferentes graus de aceitao. Nas prximas sees, abordaremos alguns destas ferramentas. Na seo 2.1 discutiremos os agregadores de notcias, que por meio de curadoria humana ou de algoritmos ajudam a resolver o segundo problema acima mencionado. Na seo 2.2 sero abordadas as ferramentas para leitura de notcias, notadamente os chamados Leitores de RSS, que ajudam a resolver os problemas nmero 3 e, em parte, nmero 1. Na seo 2.3 dissertaremos sobre o papel das redes sociais, em especial o Twitter, como ferramentas para filtragem e recomendao de artigos e notcias online, constituindo-se em outra forma de soluo dos problemas nmero 2 e 4. Na seo 2.4 iremos apresentar algumas das ferramentas surgidas recentemente que se fazem presentes em mltiplas plataformas (smartphones5, tablets, pcs) e aplicam tcnicas de redes sociais e algoritmos de aprendizado de mquina6 possibilitando solues para os quatro problemas. Por fim, na seo 2.5 traaremos um paralelo com outra forma de mdia a msica discutindo como as ferramentas direcionadas a esta mdia resolveram problemas semelhantes em seu domnio. Algumas solues encontradas pelas aplicaes para consumo de msicas so uma importante inspirao para a proposta que apresentaremos no captulo seguinte.

Aparelho de telefonia celular que, tais como os computadores, roda um sistema operacional capaz de aceitar a instalao e execuo de programas de terceiros. 6 Subcampo da inteligncia artificial dedicado ao desenvolvimento de algoritmos e tcnicas que permitam ao computador aprender, isto , que permitam ao computador aperfeioar seu desempenho em alguma tarefa.

17

2.1

Agregadores de notcias

A primeira alternativa que se tornou popular para lidar com aumento do nmero de fontes para consumo de notcias online foram os agregadores de notcias. Um agregador apresenta em sua pgina inicial uma coleo de manchetes extradas de matrias publicadas em diferentes sites. Desta forma, este tipo de ferramenta oferece ao usurio um modo conveniente de consolidar num nico local suas leituras [CHIOU e TUCKER 2010]. Uma caracterstica importante destes agregadores o fato de apresentarem, junto com a manchete da notcia, um pequeno resumo ou as primeiras linhas da mesma. Se desejar ler o contedo completo, o usurio dever clicar no link que leva fonte de origem. H ainda, normalmente, uma lista de manchetes com links para outras fontes que publicaram sobre o mesmo assunto (clusterizao), e com isso o usurio pode ter acesso a diferentes pontos de vista para uma mesma notcia. Um controverso estudo que levou em considerao o agregador de propriedade do Google indicou que 44% dos usurios deste tipo de ferramenta apenas escaneiam com os olhos as manchetes e o resumo, sem visitar o site de origem da notcia para ler a mesma por completo [SULLIVAN 2010]. Outro estudo mais recente, realizado aps a agncia Associated Press solicitar a retirada de seu contedo do agregador do Google, sugere que os agregadores complementam as fontes de notcias online, encorajando seus leitores a acessar a pgina de origem do contedo e desta forma aumentando o trfego dos sites de notcias [CHIOU e TUCKER 2010]. Independente do modo como so usados pelos leitores, pode-se afirmar que os agregadores de notcias cumprem bem o papel de expor o usurio a diversas e variadas fontes de notcias online. Alm disso, pelo fato de serem ferramentas de uso fcil (no preciso cadastro, no preciso ter qualquer tipo de conhecimento tecnolgico), eles se constituem em uma alternativa muito popular e acessvel a todos para o consumo de notcias online. Para os fins de pesquisa deste trabalho, a mais importante caracterstica dos agregadores a forma como eles selecionam as notcias que sero exibidas aos usurios. Por meio de observaes e estudos a respeito do funcionamento de vrias

18

ferramentas

desta

categoria,

verificamos

existncia

de

trs

mtodos

predominantes de seleo: os baseados em curadoria humana editoral, como os portais de notcias; baseados em algoritmos, como o Google News7; e os baseados em curadoria com auxlio dos usurios (crowdsourcing8), como o Digg9. Nas prximas sesses, abordaremos estes diferentes tipos de agregador.

2.1.1 Portais

Os portais, criados logo no incio da era comercial da web, podem ser de certa forma considerados como predecessores dos agregadores de notcias como conhecemos hoje. Embora se apresente apenas as manchetes (sem os resumos e sem opes de fontes alternativas) das notcias escolhidas para figurar em suas pginas iniciais, portais como AOL e Yahoo (e no Brasil o UOL) desde o comeo se caracterizam por agregar contedo de variados jornais e revistas online, com a limitao de que estes deviam ser associados ao portal (ou seja, o nmero de fontes geralmente no passava de algumas dezenas). Mencionamos brevemente os portais neste estudo pelo fato de que a agregao de notcias neles organizada da mesma forma em que se fazia anteriormente nas mdias offline: por meio de um editor, pessoa encarregada de verificar as diferentes notcias e artigos disponveis e que escolhe ento quais devem figurar na pgina inicial do portal, e em qual ordem de destaque, efetuando assim todo o trabalho de filtragem para seus leitores. Embora esta seja uma abordagem com escalabilidade limitada frente quantidade de contedo produzida hoje, entendemos que a curadoria humana deva fazer parte do processo de filtragem e recomendao numa ferramenta para consumo de notcias ideal.

7 8

http://news.google.com.br. Modelo de produo que utiliza a inteligncia e os conhecimentos coletivos e voluntrios espalhados pela internet para efetuar tarefas, resolver problemas, criar contedo e solues ou desenvolver novas tecnologias. 9 http://digg.com.

19

Um exemplo de bom agregador de notcias (com todas as caractersticas mencionadas na seo anterior) que faz uso de curadoria humana o Techmeme10. Este agregador, especializado em contedo apenas sobre tecnologia, foi considerado um dos 20 melhores sites do mundo em 2011 pela revista Time e frequentemente mencionado por influentes jornalistas, blogueiros e especialistas em tecnologia nos EUA como sua principal fonte de leitura diria [MCCRACKEN 2011]. De acordo com os relatos destes, o que torna o Techmeme um agregador especial justamente o fato de se utilizar do trabalho de editores para ajudar a determinar quais notcias so mais relevantes para serem exibidas. O trabalho de seleo no totalmente manual: a ferramenta constantemente efetua uma varredura em sites e blogs que fazem parte de uma lista em constante crescimento para compilar uma lista de links para as notcias mais populares sobre tecnologia a cada dia [STRANG 2007]. Algoritmos no especificados so aplicados sobre o contedo encontrado para determinar sua relevncia, e os editores ajudam a filtrar e refinar estas escolhas. Nossa experincia nos leva a acreditar que uma bem pensada combinao de algoritmos e edio humana oferece a melhor curadoria num espao to amplo como a tecnologia [TECHMEME 2012].

2.1.2 Google News

Lanado em verso beta em setembro de 2002, o Google News o exemplo clssico de agregador de notcias baseado em algoritmos. Embora no tenha sido a primeira ferramenta a utilizar esta abordagem, o site introduziu inovaes (como a clusterizao de notcias) que se tornaram caracterstica comum nos melhores agregadores. A tecnologia e a infraestrutura disponveis por conta do ento j popular sistema de busca desenvolvido pela mesma empresa permitiram ao Google News selecionar e exibir notcias em suas pginas de modo 100% automatizado, indo na contramo de outros servios semelhantes da poca, cujos representantes argumentavam que a interfernca de humanos era necessria para obter total preciso em relao relevncia de notcias [SPRING 2002].
10

http://www.techmeme.com.

20

Em suas primeiras verses, o agregador consistia de uma pgina inicial que exibia as notcias mais importantes do momento, atualizadas em tempo real, de acordo com as definies de seus algoritmos; e de um menu lateral para selecionar a exibio de notcias por categoria, subdivididas de forma semelhante a usada em jornais: Esporte, Cultura, Poltica, Economia, Internacional, etc. A nica interferncia editorial neste processo se d na escolha das fontes que o Google News monitora para compor o contedo exibido em suas pginas. O nmero de fontes ultrapassa 25 mil [COHEN 2009], somando todos os pases e lnguas no qual o agregador est disponvel, incluindo o Brasil. Sobre essas, vale ressaltar que so em sua maioria agncias de notcias, jornais e revistas online. Mesmo com toda a importncia e reconhecimento dos blogs, ainda hoje se percebe ao usar o servio que raro a apresentao de contedo de blogs nas pginas do agregador, tornando-o incompleto para os leitores que apreciam este formato de publicao. Nos ltimos anos, o Google comeou a incorporar opes de personalizao na ferramenta, dando aos leitores a opo de receber na pgina inicial as notcias de seu maior interesse. Pode-se escolher o grau de frequncia com que notcias de uma determinada fonte devem aparecer, qual categoria de notcias deve receber maior destaque e at mesmo criar novas categorias (cujo contedo ser relacionado a expresses e palavras chaves adicionadas pelo usurio). Personalizaes automatizadas tambm passaram a fazer parte da ferramenta nos ltimos anos. Atualmente, a pgina do Google News informa que usurios que mantm a opo Histrico web ativa (opt-out11) tero as sees do site automaticamente personalizadas para mostrar o contedo com maior possibilidade de interessar ao leitor. De acordo com [DAS, DATAR, GARG e RAJARAM 2007] as recomendaes no Google News so selecionadas por algoritmos de filtragem colaborativa12 aplicados em tempo real e que utilizam os cliques dos usurios em cada notcia como um voto para determinar o que interessa quele usurio. Estes mencionam em seu artigo que no futuro pretendiam explorar tambm algoritmos

11

Indica que uma opo marcada como ativa por padro, e que o usurio dever explicitamente optar por desativ-la caso no tenha interesse pela mesma. 12 O usurio receber recomendaes de itens que pessoas com gostos similares aos dele preferiram no passado.

21

para recomendaes baseadas em contedo13, de modo que atualmente estes j devem estar incorporados ao Google News, embora no tenhamos encontrado meno que confirme isto.

2.1.3 Digg

O termo web 2.0 tornou-se conhecido a partir de 2004 [GRAHAM 2005] para se referir ento nova tendncia na web de se criar ferramentas focadas na maior interao entre os usurios e dando a estes a possibilidade de tambm criar e distribuir contedo. Exemplos bem sucedidos dessas, que foram chamadas redes sociais, so o Youtube (vdeos), Fotolog e Flickr (fotos), MySpace, Orkut e Facebook (relacionamento com amigos). O Digg.com, criado no final de 2004 e definido como uma rede social de notcias outro representante da tendncia. A ferramenta, que pode ser tambm classificada como um agregador de notcias social popularizou a abordagem de utilizar os prprios usurios para efetuar a curadoria das notcias a serem exibidas em suas pginas, o que foi chamado de filtragem social. Embora o site tenha passado por vrias mudanas e adicionado funcionalidades ao longo dos anos, seu funcionamento bsico ainda o mesmo: usurios submetem novos artigos, de blogs ou sites de notcias, que so listadas numa pgina a parte de histrias mais recentes, em ordem cronolgica inversa. Outros usurios ento atribuem um voto positivo (digg) ou negativo (burry) ao contedo postado, e a partir destas avaliaes a ferramenta seleciona o que ser exibido na pgina inicial e tambm nas pginas de cada uma das subcategorias do site, sendo que a definio da categoria a qual uma notcia pertence tambm feita pelo usurio que submeteu a mesma. A determinao das notcias que aparecero no topo das pginas do Digg no se baseia simplesmente no maior nmero de votos. Embora o algoritmo nunca tenha sido divulgado para evitar fraudes, anlises indicam alguns dos fatores que so levados em considerao para o ranqueamento das mesmas [SALEEM 2007]:

13

O usurio receber recomendaes de itens similares a itens preferidos no passado.

22

A frequncia com que uma notcia votada: quanto mais votos em menor perodo de tempo, melhor; Qual o percentual que estes votos representam em relao ao total de votos realizados no mesmo perodo; Qual a categoria da notcia; A diversidade dos usurios que votaram: se muitos usurios de uma mesma rede social dentro do Digg votaram numa notcia, seus votos tem peso menor. Isso evita que usurios de um nico grupo se unam para votar em massa em certas notcias e monopolizem a seleo do contedo que recebe mais destaque. O nmero de votos negativos: a proporo exata no conhecida, porm um burry tem maior peso que um digg. Nmero de comentrios: quanto mais e melhor avaliados (os usurios podem atribuir notas a um comentrio) estes forem numa notcia, maior ser o seu ranking. Assim como no Google News, cada notcia apresentada nas pginas do Digg tem exibida a sua manchete e um resumo de seu texto. A ferramenta no clusteriza notcias semelhantes, porm adiciona ao lado da manchete a indicao de quantos votos aquela notcia recebeu, quais foram as pessoas que votaram e ainda oferece um link para uma pgina em que os usurios possam comentar e discutir a mesma. Outra funcionalidade do site que o torna efetivamente uma rede social a possibilidade de adicionar outros usurios como amigos, sendo possvel acessar uma pgina dentro da ferramenta em que so listadas as atividades dos amigos de um dado usurio, tais como: quais notcias eles submeteram, leram, votaram ou comentaram. Esta caracterstica constitue-se em mais uma importante forma de filtragem social de notcias, o que foi demonstrado por um estudo feito no Digg que conclui que usurios tendem a gostar das notcias submetidas por seus amigos, bem como das notcias lidas e votadas por estes [LERMAN 2006]. Dado o carter democrtico do site, nota-se em qualquer visita ao mesmo que grande a diversidade de fontes a serem apresentadas em suas pginas, incluindo

23

muitos blogs, e que as notcias destacadas no so exclusivamente de publicao recente (como acontece em agregadores mais tradicionais com o Google News). Desta forma, entendemos que agregadores sociais como o Digg e tantos outros semelhantes so uma excelente ferramenta para ajudar o usurio a resolver os problemas 2 e 4 mencionados na introduo deste captulo.

2.2

Ferramentas para leitura de notcias via feeds

Enquanto os agregadores de notcias se mostraram por diferentes abordagens como uma boa alternativa para soluo dos problemas 2 e 4 que levantamos no incio deste captulo, os problemas de nmero 1 e 3 permaneceram ignorados por este tipo de ferramenta. Com o surgimento e crescente adoo por parte de blogs e sites de notcias dos web feeds, foram criadas em paralelo aos agregadores de notcias ferramentas chamadas leitores de feed que possibilitaram a resoluo do problema nmero 3 e, em parte, do nmero 1. Um web feed, ou simplesmente feed, um formato de dados estruturados em um documento escrito em linguagem XML14 (Extensible Markup Language) que atualizado sempre que h a publicao de novo contedo em um dado canal (que pode ser um blog, um jornal online ou uma seo dele). Um feed tpico contm cerca de 10 a 15 das entradas mais recentes do canal, e para cada uma delas esto relacionadas a URL para acesso, o ttulo do contedo, quem o publicou, o horrio de publicao e um resumo descritivo do contedo, dentre outras informaes. H dois formatos principais de feeds em uso na web: o RSS (Really Simple Sindycation) inicialmente proposto em 1999 pela Netscape e que tem seis verses diferentes com pequenas diferenas entre si; e o Atom, proposto em 2005 na RFC 4287 da IETF15 (Internet Engineering Task Force) para ser um padro melhor
14

Padro para criao de linguagens de marcao capaz de descrever diversos tipos de dados. Seu propsito principal a facilidade de compartilhamento de informaes atravs da internet.
15

Comunidade internacional ampla e aberta preocupada com a evoluo da arquitetura da Internet e seu perfeito funcionamento. Tem como misso identificar e propor solues a questes/problemas relacionados utilizao da Internet, padronizao das tecnologias e protocolos.

24

organizado e resolver supostos problemas do primeiro. Ainda assim, at hoje o RSS o formato mais utilizado e comum utilizar o termo como sinnimo de feed. O princpio bsico de uma ferramenta de leitura de feeds o mesmo de um sistema do tipo publish-subscribe16 baseado em tpicos. Blogs ou jornais online publicam suas notcias colocando-as num feed e provendo em seu site a URL para o mesmo. Usurios ento assinam o feed especificando sua URL na aplicao de leitura de feeds. Desta forma, a ferramenta ir acessar a fonte periodicamente e exibir suas atualizaes para o usurio [LIU, RAMASUBRAMANIAN e SIRER 2005]. Num contexto de crescimento acelerado do nmero de blogs interessantes e de migrao de jornais e revistas para o meio online, os leitores de feed se tornaram a melhor ferramenta para um usurio acompanhar as novidades publicadas em dezenas, s vezes centenas de fontes, sem precisar acessar uma de cada vez para checar se h atualizaes.

2.2.1 O Google Reader

A primeira ferramenta para leitura de feeds foi o portal My.Netscape, de propriedade da empresa que props o formato RSS e que foi criado tambm em 1999 [WINNER 2009]. Vrias aplicaes semelhantes baseadas na web foram disponibilizadas nos anos seguintes, sendo que a primeira delas a atingir maior aceitao e popularidade foi o Bloglines17: lanado em junho de 2003, no final do ano seguinte estimativas indicavam que a ferramenta havia sido adotada por metade dos usurios de leitores de feed [MACMANUS 2004]. Apesar de relatarmos a existncias destas aplicaes por interesse histrico, no convm estud-las mais a fundo, pois gradualmente se tornaram irrelevantes (a
16

Tambm chamado de pub-sub, publishsubscribe um padro de comunicao no qual a parte que envia as mensagens, chamados publishers, no programa a mensagem para ser enviada diretamente para receptores especficos, chamados subscribers. Uma mensagem publicada caracterizada em classes ou canais, sem conter qualquer conhecimento sobre os subscribers que possa ter. Os subscribers manifestam interesse em um ou mais canais, e apenas recebem mensagens de seu interesse, sem necessidade de conhecimento direto dos publishers existentes. 17 http://www.bloglines.com.

25

maioria no existe mais) a partir do lanamento do Google Reader18 em Outubro de 2005. A ferramenta para leitura de feeds do Google rapidamente caiu na preferncia dos usurios e atualmente indiscutivelmente a principal referncia quando se fala em agregadores de notcias baseados em feeds. No Google Reader as notcias so exibidas em formato de lista: cada linha contm a manchete (destacada em negrito), o nome do site de origem, um resumo com os primeiros caracteres do texto e a hora de publicao. Por padro, esta lista ordenada de forma cronolgica inversa, o que permite aos usurios consultar facilmente e ler apenas as publicaes mais recentes ou as de dias anteriores. Posteriormente foram adicionadas opes para ordenar de forma cronolgica (mais velhas primeiro) ou por mgica, que nada mais que uma ordenao b aseada em um algoritmo que seleciona para exibir primeiro o contedo das fontes e dos assuntos mais lidos pelo usurio. Embora tenha passado por algumas modificaes ao longo dos anos, a interface bsica do Google Reader sempre foi muito semelhante de um cliente web de emails (notadamente ao Gmail, de propriedade da mesma empresa). direita e usando o maior espao disponvel na tela encontra-se a lista de notcias selecionada num dado momento. J esquerda encontra-se um menu que d ao usurio a opo de ver uma lista nica contendo as novidades de todos os feeds que ele assina, de grupos de feeds ( possvel categorizar e agrup-los por interesses) ou ento de apenas um nico feed. Assim como numa aplicao de email, ao lado de cada opo do menu um nmero em negrito indica quantas novas publicaes daquela lista ainda no foram lidas pelo usurio. Meno especial deve ser feita interface de leitura de uma notcia especfica dentro do Google Reader, e aqui abrimos um parentsis para uma breve discusso sobre este tema: sabido que as telas brilhantes e coloridas dos computadores pessoais no so o meio mais apropriado para leitura [MORRIS, BRUSH e MEYERS 2007], havendo constantes queixas de cansao visual e dores de cabea quando se l por muito tempo usando tal equipamento.

18

http://www.google.com.br/reader.

26

Para amenizar tais efeitos e tornar mais agradvel a leitura na web por meio de equipamentos eletrnicos, pesquisadores j propuseram vrias diretrizes sobre como escrever para publicao na web [MORKES e NIELSEN 1997], sobre o design de pginas [NIELSEN 2001] e sobre a tipografia dos textos [NIELSEN 2002]. Nem todos os blogs e sites de notcias, porm, seguem estas melhores prticas, de forma que a falta de padronizao somada distrao causada pela publicidade visual contida nestes sites acaba por atrasar e atrapalhar muito a experincia de leitura para os usurios que visitam diferentes sites para consumir notcias. No Google Reader, quando o usurio clica sobre a manchete de uma notcia na lista que estiver visualizando, um quadro se abre, ocupando todo o lado direito da interface, e exibindo a notcia seguindo as melhores prticas de design, formatao e tipografia para leitura na web. A menos que o leitor esteja interessado apenas em se inteirar superficialmente sobre o contedo publicado, essa interface no seria de grande valia se o texto exibido fosse apenas um resumo da notcia. Porm, uma opo existente nos feeds que no mencionamos na seo anterior a de incluir no s uma descrio ou resumo do texto como tambm o contedo completo de uma notcia, formatado em HTML19 (Hypertext Markup Language) e contendo inclusive links para outras pginas e para as imagens inclusas com o texto. A grande maioria dos blogs e alguns poucos sites de notcias distribuem seus feeds com esta opo, de modo que se torna possvel que o usurio leia o contedo completo das fontes que assina numa interface nica e padronizada, sem precisar visitar o site do publicador do contedo para consumi-lo. Esta caractersticas possibilitada pelos feeds e implementada pelo Google Reader torna a experincia de leitura por meio desta ferramenta superior obtida em agregadores de notcias ou nas prprias pginas dos blogs e jornais online, de modo que este leitor de feeds e outros semelhantes contribuem em parte para soluo do problema nmero 1 que questionamos na introduo deste captulo.

19

Linguagem de marcao utilizada para produzir pginas na web. Documentos HTML podem ser interpretados por navegadores.

27

2.3

Redes sociais como ferramentas para filtragem e recomendao

Conforme mencionamos no incio da seo 2.1.3, as redes sociais emergiram como uma tendncia da chamada web 2.0 e desde ento no pararam de crescer e aumentar sua popularidade. Atualmente, grande parte dos sites apresentam alguma caracterstica de rede social ou algum tipo de integrao com as redes mais populares. Uma vez que uma das principais caractersticas das redes sociais o compartilhamento de informaes entre as pessoas participantes, diversas abordagens tm sido propostas para utilizar estas atividades de compartilharmento como um importante meio para filtragem e recomendao do contedo produzido na prpria web. Nas subsees seguintes estudaremos o funcionamento e o meio como as interaes e aes dos usurios das duas principais redes sociais do momento tm sido usadas para filtragem e recomendao de contedo publicado em blogs ou sites de notcias.

2.3.1 Twitter

O Twitter20 uma rede social cujo funcionamento bsico o mesmo de um sistema publish-subscribe, com propagao em tempo real: todo usurio X tem a possibilidade de publicar contedo na rede, enquanto outros usurios podem manifestar seu interesse em receber o contedo de X clicando na opo seguir (termo que no Twitter equivale ao assinar de um sistema pub-sub tradicional). Um usurio U que optar por seguir os usurios X, Y, Z, ao acessar a pgina inicial da ferramenta obter uma viso agregada do contedo publicado por estes em ordem cronolgica inversa. Existe uma peculiaridade, porm: cada atualizao publicada,

20

http://www.twitter.com

28

chamada tweet, deve conter at 140 caracteres. Por conta desta caracterstica, classificou-se a ferramenta como um servio de microblogging21. A mecnica de funcionamento do servio e o direcionamento dado a ele por seus desenvolvedores (no formulrio para publicao de contedo o usurio instrudo a escrever o que ele est fazendo ou o que est acontecendo de interessante naquele momento, de forma que o texto publicado usualmente se assemelha a uma notcia ou comentrio sobre notcia) favorecem o uso do Twitter como um meio de propagao de notcias: quando usurios do site presenciam algum fato no usual (como um terremoto no Japo ou um simples acidente de trnsito em Vitria), eles se apresssam em publicar um tweet a este respeito no servio. Alm disso, organizaes de mdia online e blogs utilizam a ferramenta para notificar seus seguidores sobre notcias mais recentes publicados em seus sites, adicionando ao tweet um link para acesso direto a este contedo. Hoje, para veculos que produzem contedo online to recomendado ter uma conta no Twitter publicando suas atualizaes quanto ter um feed. Outra caracterstica importante o incentivo ao compartilhamento, atravs de uma ao chamada retweet: se o usurio X achar uma atualizao publicada por Y interessante, ele pode ento efetuar um retweet e com isso a mensagem de Y ser republicada junto s atualizaes de X, sendo assim propagada para os usurios A, B, e C que seguem X (e podem no seguir Y). Esta ao amplamente utilizada pelos usurios do Twitter, de modo que cada usurio pode atuar como um agente de filtragem e permite que o contedo mais interessante seja re-divulgado dentro das vrias pequenas redes sociais formadas pelos diferentes usurios do servio. Por conta desta mecnica simples do servio e da facilidade de acesso (existem verses otimizadas para computadores, tablets, celulares e at smarttvs22) usurios influentes tem discutido o abandono dos agregadores de notcias [GRAY 2009] e leitores de feeds [REISINGER 2009] em favor do Twitter como sua ferramenta para consumo de notcias, com o trabalho de filtragem e recomendao feito pelos
21

Forma de publicao que permite aos usurios que faam atualizaes breves de texto (geralmente com menos de 200 caracteres) e public-las para que sejam vistas publicamente ou apenas por um grupo restrito escolhido pelo usurio. Estes textos podem ser enviados por uma diversidade de meios tais como SMS, mensageiro instantneo, email, MP3 ou pela web. 22 Aparelhos de TV que se conectam diretamente internet e permitem uso de aplicativos.

29

prprios usurios cumprindo o propsito dos agregadores e a possibilitade de seguir a conta no Twitter dos blogs ou sites de notcias substituindo a assinatura do feed. Esta abordagem, porm, limitada pela prpria interface das aplicaes oficiais do Twitter (que no so otimizadas para o consumo apenas de notcias) e pelo fato de que nem s referncias para contedo de blogs ou sites de notcias so publicadas no servio, mas tambm conversaes, micro notcias e links para imagens, vdeos e pginas web de variados propsitos. Desta forma, um usurio que deseja utilizar o Twitter em substituio aos agregadores ir se deparar com bastante rudo em meio ao contedo que realmente lhe interessa. Tais limites podem ser contornados graas a outra caracterstica importante do Twitter: sua API23 (Application Programming Interface). Por meio dela,

desenvolvedores podem ter acesso a todo tipo de dado gerado dentro da ferramenta, o que tornou possvel a criao de uma gama de aplicaes. De fato, no que diz respeito ao consumo de contedo em blogs e sites de notcias, muitas aplicaes baseadas na API do Twitter j foram propostas: Buzzer compara o contedo dos feeds de notcias assinados por um usurio com o contedo publicado por diferentes grupos de usurios do Twitter para criar um agregador onde as notcias so recomendadas atravs de seu ranqueamento em acordo com sua correspondncia com contedo extrado do Twitter [PHELAN, McCARTHY e SMYTH 2009]. Resultados obtidos pela ferramenta indicam que ordenar as notcias dos feeds exibindo primeiro aquelas cujos termos tem maior correspondncia aos termos publicados nos tweets das pessoas que um usurio segue desperta maior interesse do que a ordenao cronolgica habitual dos leitores de feeds. [PHELAN, McCARTHY e SMYTH 2011] Tweetmeme24 um agregador de contedo (incluindo notcias) que funciona de forma bem semelhante ao Digg, como cada retweet de uma dada mensagem ou link sendo contado como um voto positivo. Resultados obtidos

23

Conjunto de rotinas e padres estabelecidos por um software para a utilizao das suas funcionalidades por aplicativos que no pretendem envolver-se em detalhes da implementao do software, mas apenas usar seus servios. 24 http://www.tweetmeme.com.

30

indicam que no Twitter o contedo mais votado atinge maior penetrao dentro da rede social como um todo do que no Digg [LERMAN e GHOSH 2010], tornando mais amplas e menos sujeitas a manipulao as escolhas feitas pela filtragem social por meio do Twitter. Paper.li25 cria automaticamente um jornal online personalizado para cada usurio do Twitter analisando e agregando as notcias compartilhados nas ltimas 24 horas por quem ele segue. A interface se assemelha dos agregadores de notcias (sem clusterizao), com separao das notcias em categorias e meno qual usurio uma notcia est associada. possvel customizar manualmente o jornal para refletir melhor as preferncias do usurio e tambm possvel acessar os jornais de outros usurios. [SMALLRIVERS 2011]. Recentemente adicionou suporte a contedo em lingua portuguesa. Dado o alcance do Twitter, que em agosto 2011 j contava com 200 milhes de usurios cadastrados [MALIK 2011], entendemos que o ecossistema de aplicaes baseadas nesta plataforma tende a crescer e obter cada vez mais popularidade e relevncia no que diz respeito ao consumo, filtragem e recomendao de contedo em blogs e sites de notcias, o que inclusive apontado por pesquisadores que indicam que o Twitter pode ser o futuro das notcias [MIMS 2010].

2.3.2 Facebook

Criado em fevereiro de 2004, o Facebook26 um caso impressionante de crescimento de popularidade na internet, j tendo ultrapassado a marca de 845 milhes de usurios no mundo e caminhando para ser o primeiro website a registrar 1 bilho de usurios [PROTALINSKI 2012]. Embora passe por constantes mudanas, o Facebook tem em sua essncia bsica a mesma dinmica da maioria das redes sociais, exigindo relao de reciprocidade
25 26

http://paper.li. http://www.facebook.com.

31

entre usurios para que eles faam parte de uma mesma rede social e tenham acesso as publicaes uns dos outros. As principais atividades efetuadas no site so a troca de mensagens (conversaes), publicao de fotos, uso de jogos sociais e compartilhamento de links para contedo externo, o que naturalmente inclui a recomendao de contedo publicado em blogs e sites de notcias. Diferentemente do Twitter, onde os usurios se ligam principalmente a

desconhecidos (sem exigncia de reciprocidade), no Facebook as relaes dos usurios so normalmente estabelecidas com conhecidos e familiares. Este fator, combinado com o modo como foi construda a interface da ferramenta, parece favorecer atividades que envolvem conversaes e entretenimento. Observando algumas redes sociais formadas entre usurios, nota-se que eventualmente h recomendaes de notcias, porm este no parece ser um comportamento to amplamente difundido como no Twitter. Ainda assim, dado o extraordinrio alcance do Facebook, h estatsticas recentes mostrando que a rede social a origem de at 8% dos visitantes de importantes jornais online nos Estados Unidos [INGRAM 2011], o que indica haver de fato um nvel no desprezvel de atividade de recomendaes de notcias na rede. Em nosso trabalho no foram encontrados estudos a respeito deste tema, o que interpretamos como uma falta de interesse de pesquisadores pelo assunto que parece corroborar a noo de que o Facebook no a rede social mais adequada para propagao de notcias nem para suprir as necessidades de consumo de notcias de um usurio. Como o Facebook tambm disponibiliza uma API, este panorama poderia ser alterado em parte com o desenvolvimento de aplicaes de terceiros usando a plataforma da rede social. Porm, uma vez que a API da ferramenta disponibiliza o acesso apenas a dados dos usurios de forma individual, no momento impossvel criar aplicaes como o Buzzer ou o Tweetmeme (mencionados na seo anterior) baseados no Facebook, restando apenas a opo de se criar aplicaes que agreguem notcias compartilhadas pelos amigos de um usurio (o tambm j referido Paper.Li inclui esta opo), o que no parece ser de grande utilidade nesta rede dadas as razes j explicadas nos pargrafos anteriores. Recentemente os desenvolvedores do Facebook estabeleceram parcerias com grandes jornais online dos Estados Unidos e da Inglaterra para lanarem aplicaes

32

baseadas em sua plataforma que foram chamadas de Social Reading Apps. Quando um usurio adiciona uma dessas aplicaes em seu perfil na rede, ele passa a ter a possibilidade de ler as notcias daquele site especfico sem sair das pginas do Facebook. Eventualmente, mesmo que o usurio no decida explicitamente compartilhar uma notcia, a aplicao insere automaticamente na lista de atualizaes que exibida aos amigos dele uma pequena chamada com a manchete de uma notcia (com um link para a mesma) e um texto informando que aquele usurio leu aquela notcia utilizando a aplicao. Relatos iniciais do conta que este tipo de aplicao gerou recordes de acessos ao contedo dos jornais online participantes [DARWELL 2012]. Desenvolvimentos ainda mais recentes reportam que para alguns usurios a pgina inicial da rede social agora inclui uma aba de Principais notcias, que agregar as notcias mais lidas recentemente dentro das Social Reading Apps pelos amigos daquele usurio [MITCHELL 2012]. Caso esse experimento seja bem recebido pelos usurios da rede, o Facebook finalmente poder ser tornar tambm uma ferramenta relevante para consumo, filtragem e recomendao de notcias.

2.4

Ferramentas para consumo de notcias em dispositivos mveis

As ferramentas e abordagens que mencionamos neste captulo at a presente seo foram desenvolvidas com a finalidade de uso em computadores pessoais (PCs), o que inclui os desktops e laptops. Nos ltimos anos, porm, com o surgimento dos sistemas Android e IOS para smartphones e mais recentemente com a introduo dos e-readers27 e tablets, o acesso web e consequentemente o consumo de todo o tipo de contedo nela disponvel tem acontecido cada vez mais nestes dispositivos mveis, dando incio a uma tendncia para o futuro da computao que vem sendo chamada de post-PC Era [EPPS 2011].

27

Leitor eletrnico. Dispositivo em formato retangular, com uma tela ocupando a maior parte de seu espao, utilizado exclusivamente para a leitura de livros ou notcias publicadas em formato especfico uso nestes.

33

No que diz respeito ao consumo de contedo em blogs e sites de notcias atravs destes dispositivos, nota-se de imediato importantes mudanas em relao a) usabilidade/adequao leitura; b) tempo dedicado a este tipo de atividade. a) Uma vez que os dispositivos mveis contam com telas sensveis ao toque e, principalmente no caso dos smartphones, de tamanho consideravelmente menor que as telas de PCs, recomendvel que as ferramentas tenham interface desenvolvida especialmente para estes dispositivos, dando maior espao para visualizao do contedo e diminuindo os menus, por exemplo. Esses cuidados devem ser tomados especialmente nas aplicaes para smartphones, onde a tela reduzida torna a leitura mais lenta e a compreenso mais difcil [NIELSEN 2011]. Por outro lado, os tablets, apesar de tambm experimentarem benefcios quando se usa interfaces customizadas, se do bem melhor que smartphones com as interfaces de aplicaes web desenvolvidas para uso em PCs e proporcionam uma velocidade de leitura maior que a conseguida nos PCs e muito prxima do papel impresso [NIELSEN 2010]. Isto responde primeira pergunta que fizemos na introduo deste captulo: os tablets so o melhor dispositivo para consumo de contedo publicado em blogs e sites de notcias. b) Estudo recente concluiu que 27% dos americanos j usam dispositivos mveis para ler notcias online [MITCHELL e ROSENSTIEL 2012], enquanto outro estudo sugere que destes, 30% gastam mais tempo consumindo notcias do que antes de possuirem um dispositivo mvel [MITCHELL e ROSENSTIEL 2011]. Uma vez que estes dispositivos mveis esto sempre com seus usurios e sempre conectados internet por meio de redes sem fio, entendemos que este aumento no consumo pode ser atribudo principalmente ao uso destes equipamentos em situaes onde normalmente o usurio no teria mais o que fazer, como filas ou salas de espera, e acaba por sacar seu tablet ou smartphone para consumir contedo enquanto espera o tempo passar. Entendemos que esta mudana de comportamento deva ser levada em conta ao se desenvolver aplicaes para uso nestes dispositivos. Em termos computacionais, as ferramentas para consumo, filtragem e

recomendao de notcias em dispositivos mveis pouco diferem das ferramentas produzidas para uso em PCs. Com exceo de propostas de uso do sensor GPS destes novos aparelhos para entregar notcias baseadas na localizao do usurio

34

[CHEN 2010], no se nota novas abordagens quanto aos seus mtodos de filtragem e recomendao. Analisando o ranking de aplicativos na categoria notcias no Google Play28 e na App Store29, nota-se que os mais populares so aplicativos individuais de jornais e revistas de grande circulao, juntamente com alguns agregadores diferentes dos j mencionados nas sees anteriores. Embora o Google Reader, Google News e outros destes tenham verses para dispositivos mveis, atualmente os agregadores mais populares nas plataformas Android e IOS so ferramentas desenvolvidas exclusivamente para uso nestes dispositivos. Levando em conta os rankings de popularidade, podemos citar trs destas ferramentas que tem obtido destaque: a) Disponvel apenas no sistema IOS, o Flipboard30 uma aplicao que agrega contedo (videos, imagens e principalmente notcias) compartilhado no Facebook e no Twitter pelos amigos do usurio nestas redes sociais. A interface e os gestos para mudana entre as telas da ferramenta simulam os das revistas de papel, e por estes motivos seus desenvolvedores o definem como uma Revista Social de Notcias. A leitura das notcias feita dentro da prpria aplicao, que se utiliza de feeds e de um algoritmo de extrao de contedo para conseguir exibir o texto completo. b) Definindo-se como uma revista personalizada, Zite31 um agregador de notcias puramente baseado em algoritmos de aprendizado de mquina que se prope a apresentar aos seus usurios notcias personalizadas de acordo com seus gostos e preferncias. Na primeira vez que abre a ferramenta o usurio convidado a selecionar as categorias de contedo que mais lhe interessam e/ou fornecer suas credencias para acesso ao Twitter e Google Reader para que Zite possa verificar quais notcias o usurio compartilhou e utilizar esta atividade como um sinal na definio das notcias que ir
28

https://play.google.com/store/apps/category/NEWS_AND_MAGAZINES?feature=category-nav. Google Play a loja eletrnica onde possvel fazer download de aplicativos desenvolvidos para o sistema Android. 29 http://itunes.apple.com/br/genre/ios-noticias/id6009?mt=8. App Store a loja eletrnica onde possvel fazer download de aplicativos desenvolvidos para o sistema IOS. 30 http://flipboard.com. 31 http://www.zite.com.

35

recomendar. medida que utiliza a ferramenta para ler contedo de blogs e sites de notcias, o usurio tem a opo de indicar se gostou ou no daquele contedo e compartilhar o mesmo nas redes sociais. Estas aes, alm do prprio ato de optar por ler um artigo, so utilizadas como sinais para definir o contedo a ser recomendado nos prximos acessos. Assim como no Flipboard, a leitura das notcias se d dentro da prpria aplicao. c) Pulse News32 funciona como um leitor de feeds, porm sem mencionar o termo feed em nenhuma parte de sua interface nem pedir que o usurio fornea a url de um feed para assinar o contedo do site que o publica. Nesta ferramenta o usurio pode criar diferentes categorias, e para cada uma delas a aplicao j conta com uma lista de blogs e sites de notcias sugeridos que o usurio poder adicionar como fonte com um nico toque. Se desejar acompanhar uma fonte que no esteja inclusa na lista de sugestes, basta digitar o nome do site desejado. Ao invs de agregar e ordenar de forma cronolgica numa nica listagem os novos contedos publicados nas fontes acompanhadas, Pulse News exibe o nome dos blogs e sites e as notcias neles publicadas em forma de mosaico. Tecnologicamente, estas trs aplicaes utilizam abordagens j presentes anteriormente em outras ferramentas mencionadas neste captulo. Notamos que o que ambas tem em comum o cuidado no desenvolvimento de suas interfaces, procurando se adequar s mudanas de usabilidade e de hbitos de consumo introduzidas pelos dispositivos mveis.

2.5

Filtragem e recomendao em ferramentas para consumo de

msica

O estudo at aqui realizado das ferramentas para consumo, filtragem e recomendao em blogs e sites de notcias nos leva a entender que ainda h melhorias a se alcanar principalmente no que diz respeito a recomendaes.

32

https://www.pulse.me.

36

Por outro lado, embora o foco deste trabalho seja de fato os blogs e sites de notcias, acreditamos que seria interessante analisar as abordagens de recomendao em outra rea de contedo a msica como uma possvel fonte de inspirao para aplicao de solues semelhantes na recomendao de notcias. Conforme j mencionamos anteriormente, as recomendaes por algoritmos utilizam principalmente duas possveis estratgias: baseada no contedo ou baseada em filtragem colaborativa. Na rea de msica, uma ferramenta chamada Pandora33 criou uma interessante abordagem para efetuar recomendaes baseadas em contedo. J a Last.FM34 aprimorou a filtragem colaborativa. Discutiremos estas duas ferramentas nas prximas subsees.

2.5.1 Pandora: genoma musical

Pandora uma ferramenta para criao de rdios online. Ao acessar o site, um usurio tem a possibilidade de criar uma estao ao informar o nome de alguns artistas ou msicas que gostaria de ouvir. O site toca ento uma seleo das msicas solicitadas e o ouvinte poder clicar num cone indicando se gostou ou no gostou daquela msica. Esses sinais so ento utilizados para definir qual tipo de msica o usurio gosta e a partir da a ferramenta passa a tocar automaticamente outras msicas semelhantes nas rdios personalizadas do ouvinte. Esta dinmica no traz nenhuma diferena em relao a outras ferramentas que fazem recomendao baseada em contedo nas mais diversas reas. O que faz o algoritmo de Pandora diferente de outros servios de recomendao a forma de definio de semelhana entre as msicas. Os pesquisadores que criaram a ferramenta desenvolveram um projeto que chamaram de Genoma Musical [LASAR 2011]. Utilizando-se de analogias emprestadas das cincias biolgicas, eles criaram uma base de dados de msicas analisadas individualmente por uma equipe de msicos

33 34

http://www.pandora.com. http://last.fm

37

graduados, buscando identificar uma srie de atributos destas canes, tais como o gnero do vocalista, o nvel de distoro nas guitarras ou o tipo dos vocais de fundo [WIKIPEDIA 2012]. Cada caracterstica foi chamada de gene, e cada msica tem a ela associado um vetor de at 400 genes definindo-a. Dado um conjunto de uma ou mais msicas, a semelhana entre elas definida aplicando-se uma funo de distncia entre seus vetores de genes. Quando um usurio informa na ferramenta que gostou de uma msica, o algoritmo de Pandora ir recomendar ao usurio outras msicas que forem mais semelhantes quela de acordo com o resultado destes clculos [GLASER 2002]. O maior problema desta abordagem a necessidade de anlise de cada msica por um especialista, o que limita a quantidade de msicas inclusas no banco de dados de Pandora, que diz ter capacidade de analisar 10 mil novas msicas a cada ms e que continha no incio de 2010 cerca de 740 mil msicas [GROSSMAN 2010]. Embora no tenhamos encontrado estudos pblicos analisando a qualidade das recomendaes, a popularidade da ferramenta (que o servio de rdio mais acessado nos EUA) e frequentes depoimentos elogiosos publicados por usurios do site em redes sociais indicam a superioridade de suas recomendaes.

2.5.2 Last.fm: scrobbling

Last.FM uma rede social de msica que permite aos seus usurios criar estaes de rdio online ou adicionar outros usurios como amigos e com isso ter acesso s rdios criadas por eles. Assim como em Pandora, o usurio no escolhe todas as msicas de uma estao que criar, mas sim fornece apenas uma entrada inicial (como o nome de um artista, um disco, um gnero ou uma msica) e a partir da o servio monta uma lista de msicas recomendadas relacionadas com entrada do usurio. As recomendaes efetuadas pela ferramenta so baseadas em algoritmos de filtragem colaborativa, os quais usualmente geram melhores resultados quando tem

38

mais dados disponveis para levar em considerao. O que faz Last.FM diferir de outras ferramentas que utilizam esta mesma abordagem nas mais diversas reas de contedo justamente a quantidade e amplitude de dados que o servio consegue coletar. Em ferramentas de notcias como o Google News, cada vez que um usurio clica em uma notcia, estar indicando um voto que levado em considerao pelo algoritmo de recomendao. Porm, se o usurio acessar uma notcia fora do Google News (por exemplo, seguindo um link numa notcia online que encontrou na prpria ferramenta), este acesso no ser contabilizado no perfil do usurio, pois a ferramenta no tem meios de faz-lo, levando a uma situao em que se tem apenas um conhecimento parcial das preferncias de um usurio. Na Last.FM, cada msica que um usurio ouve conta como um sinal para seu algoritmo de filtragem colaborativa. O site designou o termo scrobbling para indicar a ao de ter enviado para seus servidores o nome do artista e da msica que um usurio acabou de ouvir, associando-a ao seu perfil. A inovao introduzida pela ferramenta foi a criao de softwares e plugins que, instalados pelo usurio em seu computador, navegador web ou smartphone, realizam o scrobbling no s quando o mesmo estiver ouvindo msicas nas rdios que criou no Last.FM, mas tambm em outras ferramentas ou dispositivos. Esta abordagem, que permite Last.FM ter um conhecimento quase completo das msicas que um usurio ouve, tambm aumenta as interaes sociais entre os usurios em torno das msicas, uma vez que os amigos de um usurio poder ter acesso a lista de msicas que ele ouviu e com isso descobrir novos artistas ou canes.

39

Filtrie: Uma abordagem para o consumo, filtragem e

recomendao de blogs e notcias na web

No captulo anterior apresentamos e analisamos as caractersticas das principais ferramentas criadas nos ltimos anos para consumo e recomendao de contedo em blogs e sites de notcias na web. Inspirado nas funcionalidades das ferramentas pesquisadas, iremos propor neste captulo uma soluo hbrida chamada Filtrie, que combina as principais caractersticas das aplicaes analisadas e ser compatvel com contedo em lngua portuguesa. Na seo 3.1 dissertaremos sobre Filtrie, explicando brevemente suas

caractersticas e as inspiraes para incluso das mesmas. Na seo 3.2 ser realizada a anlise do sistema, com listagem dos requisitos funcionais e no funcionais da ferramenta proposta, juntamente com os diagramas de casos de uso e de classes. Na seo 3.3 apresentaremos o projeto de sistema, com os diagramas atualizados da fase de anlise. Por fim, na seo 3.4, ser exibida a proposta de interface da ferramenta.

3.1

Conceito e caractersticas de Filtrie

No estudo apresentado no captulo 2, notamos que: a) Agregadores de notcias so uma importante ferramenta para reunir num s lugar as manchetes e os links para o contedo publicado nos milhares de blogs e sites de notcias disponveis na web; b) Feeds e as ferramentas para leitura destes constituem a melhor maneira de acompanhar as fontes favoritas de um usurio, bem como o ajudam a poupar tempo e padronizam a experincia de leitura ao possibilitar consumir o contedo de blogs e sites de notcias numa nica interface.

40

c) As redes sociais tornam-se cada vez mais o principal meio para filtragem e descoberta de contedo em blogs e sites de notcias, graas s recomendaes recebidas por meio de amigos ou pessoas/instituies que um usurio opta por seguir. d) O consumo de contedo em blogs e sites de notcias cada vez mais pervasivo, acontecendo em computadores pessoais, tablets e smartphones por parte de um mesmo usurio. Alm disso, ferramentas com interfaces especficas para cada tipo de dispositivo apresentam vantagens sobre as que criam uma nica interface compatvel com todos. De posse deste conhecimento, propomos Filtrie como uma ferramenta que junte as principais caractersticas de agregadores de notcias, leitores de feeds, redes sociais e aplicaes para dispositivos mveis, reconhecendo os avanos que cada tipo de ferramenta introduziu. A principal inspirao para Filtrie, no entanto, a rede social de msicas Last.fm, que discutimos brevemente na seo 2.5.2. Nossa proposta que Filtrie seja uma rede social de propsito especfico que aplique rea de consumo de contedo em blogs e sites de notcia os conceitos de scrobbling e filtragem colaborativa popularizados por Last.fm, mesclando-os principalmente a caractersticas popularizadas pelo Twitter (apresentado na seo 2.3.1) e pelo Google Reader (apresentado na seo 2.2.1). A mecnica e as funcionalidades de Filtrie podem ser divididas em trs conjuntos principais: a) Scrobbling e Perfil do Usurio: atravs de um cliente (que pode ser uma extenso para navegador35 ou uma aplicao nativa36), sendo executado no dispositivo de acesso a web do usurio, possvel monitorar os websites que o mesmo estiver acessando e por meio da aplicao de um algoritmo proposto neste projeto detectado se uma dada pgina na web faz parte de um blog ou site de notcias, e em caso positivo feito o envio desta informao para um webservice da aplicao Filtrie que ir registrar num
35

Navegadores como o Mozzila Firefox, Google Chrome, Internet Explorer e Safari disponibilizam APIs que possibilitam a criao de softwares que modificam ou incrementam as funcionalidades deles. 36 No caso de dispositivos mveis cujos sistemas operacionais exponham uma API para monitoramento do navegador ou do histrico de navegao.

41

banco de dados associado ao usurio quando e qual contedo ele leu num blog ou site de notcia. O mesmo algoritmo pode ser aplicado tambm para monitorar e identificar outras atividades que o usurio exercer em relao a este contedo, tais como o adicionar sua lista de favoritos, o recomendar em redes sociais ou deixar um comentrio na pgina que o publicou. Com o scrobbling de todas essas atividades realizadas em sites diversos, somado ao registro das aes do usurio dentro da aplicao Filtrie, possvel montar automaticamente um perfil completo que liste as notcias que ele leu, comentou ou recomendou, quais os seus blogs e sites de notcias favoritos, alm de quais so os assuntos de sua preferncia. O usurio poder optar por compartilhar estas informaes num perfil pblico acessvel por qualquer usurio, ou mant-lo privado para si mesmo ou apenas para seus seguidores dentro da rede social Filtrie. b) Filtragem: o objetivo principal da ferramenta Filtrie fornecedor filtros para auxiliar aos seus usurios a agregar e consumir o contedo que desejam dentro da grande quantidade de notcias publicadas na web. Existem diferentes paradigmas de filtragem sendo adotados nas diversas ferramentas que mencionamos no captulo 2 e nossa proposta oferecer os principais em Filtrie atravs de diferentes streams37 de notcias, a saber: Filtragem social: um usurio poder utilizar outros usurios de Filtrie como filtro humano, controlando ele mesmo o nvel de rudo38. Ao seguir outros usurios, um stream social ser montado listando as manchetes das notcias com as quais estes usurios interagiram. Esta lista poder ser mais compreensiva (listar tudo o que outros usurios leram) ou mais seletiva (listar apenas o que outros usurios recomendaram, seja atravs de

compartilhamento do link em redes sociais, comentrios ou adio aos seus favoritos). A ordenao padro a cronolgica inversa, em relao ao momento em que a atividade foi realizada, mas o usurio poder optar por reordenar o contedo pela data em que ele foi publicado na fonte de origem
37

Um stream, ou fluxo, uma lista agregada de entradas de contedo, normalmente gerado por diferentes fontes e exibida em ordem cronolgica inversa, que pode ser percorrida at a parte de baixo para mostrar contedo mais antigo e que recebe automaticamente atualizaes em seu topo com o contedo mais recente. Um stream de notcias assemelha-se chamada timeline no Twitter ou ao News feed no Facebook. 38 Qualidade de filtragem das informaes qual um usurio exposto.

42

ou pelo nvel de ateno recebido dentro de sua rede social (por exemplo, aparece primeiro uma notcia que foi lida por 3 pessoas diferentes dentre as pessoas que ele optou por seguir). Filtragem de redes sociais: enquanto o stream social descrito acima pode se tornar interessante a medida que o nmero de usurios de Filtrie cresa, importante dar ao usurio a opo de filtrar o contedo das redes das quais ele j participa. Desta forma, ser possvel integrar uma conta de Filtrie a uma conta do Twitter e/ou do Facebook39, e aplicaremos ao stream de contedo que o usurio recebe nestas redes o nosso algoritmo de reconhecimento de blogs e sites de notcias, possibilitando ao mesmo ser exposto apenas a este tipo de contedo, ou a todo tipo de contedo (o que inclui imagens, vdeos e outros links), porm destacando quais entradas se referem a notcias. Alm da ordenao padro, o usurio dever poder tambm ordenar o contedo de acordo com as mtricas de popularidade de cada rede (no Twitter consideraramos o nmero de retweets, e no Facebook o nmero de votos positivos40, comentrios e compartilhamentos). Filtragem por tpicos: mais uma alternativa de filtragem a ser oferecida a opo de um usurio receber notcias relacionadas a tpicos de seu interesse, selecionadas atravs da anlise do contedo de cada notcia publicada nas fontes indexadas por Filtrie. A lista de tpicos pode ser montada automaticamente por Filtrie, a partir da anlise do contedo j consumido pelo usurio, ou ser criada manualmente pelo mesmo, especificando palavras chaves ou expresses referentes a tpicos que deseja acompanhar. Alm da ordenao padro, poder haver tambm uma ordenao por relevncia, em que sero exibidas no topo as notcias que tiverem maior relao ao(s) tpico(s) acompanhado(s). Filtragem por fontes: neste stream, de forma semelhante ao que acontece num leitor de feeds, sero listadas as notcias publicadas nas fontes que um usurio quiser acompanhar. De forma semelhante ao filtro anterior, ser possvel montar automaticamente uma lista de fontes a serem
39 40

Atravs da j mencionada (captulo 2) API de ambos os servios. No Facebook, um usurio sinaliza que gostou de um contedo clicando em um boto chamado Curtir.

43

acompanhadas e/ou dar ao usurio a opo de especificar manualmente quais fontes faro parte da listagem. Alm destes quatro streams segmentados, propomos tambm a incluso de um stream unificado que agregue todo o contedo exibido pelos demais, possibilitando o uso de filtros avanados para segmentar e personalizar ainda mais o contedo que ser exibido para o usurio. Por exemplo, deve ser possvel aplicar a filtragem por tpicos para exibirem apenas notcias que tiverem sido publicadas nos sites que o usurio acompanhar na filtragem por fontes. Diversas outras possibilidades de filtragem avanada so possveis. A disponibilizao de um stream unificado potencializa ainda o ganho de tempo e reduo na quantidade de informao visualizada, uma vez que ir agregar e exibir apenas uma vez ao usurio contedo que poderia aparecer em mais de um dos outros streams de informao. Por fim, importante mencionar a forma de exibio das notcias dentro de um stream: cada entrada ser distinguida por um separador visual e consistir da manchete da notcia, do nome da fonte onde foi publicada, acompanhada da data relativa de publicao e de algumas palavras-chave que definem o seu contedo. Uma indicao visual referindo-se pontuao da notcia (cujos critrios variam de acordo com o stream) tambm ser includo. c) Interface de leitura e recomendaes: A fim de padronizar e aumentar a velocidade da experincia de leitura optamos por incluir por padro, nas entradas exibidas nos streams de filtragem, a possibilidade de se ler o contedo dentro de Filtrie sem precisar acessar o site de origem, a exemplo do que possvel em ferramentas como o Google Reader (seo 2.2.1). Porm, conforme mencionamos naquela seo, a leitura do contedo completo naquela ferramenta somente possvel quando a fonte disponibiliza este contedo por meio de seu feed. Desta forma, para proporcionar ao usurio a possibilidade de ler todo o contedo dentro de uma nica interface, preciso aplicar um algoritmo para detectar quais fontes fornecem o texto completo atravs do feed, e no caso das que no o fazem aplicar um segundo algoritmo que acessa a pgina onde o contedo foi publicado e extrai dela apenas o texto da notcia. A interface de leitura de Filtrie consiste de um

44

quadro que se abrir atravs de uma requisio AJAX41 (Asynchronous Javascript and XML), ocupar a maior parte da tela e exibir a notcia de forma a respeitar as melhores prticas para melhor leitura de contedo em telas digitais. Junto da notcia, propomos tambm a exibio de

recomendaes de outros contedos relacionados quele e/ou que podem interessar ao usurio, sendo estas realizadas com base em semelhana de contedo ou filtragem colaborativa. Filtrie dever ser compatvel com contedo publicado em lngua portuguesa, podendo tambm reconhecer e adicionar ao seu banco de dados notcias publicadas na lngua inglesa.

3.2

Anlise do Sistema

Nesta seo efetuaremos a anlise do sistema da ferramenta Filtrie.

3.2.1 Elicitao de Requisitos

A partir do conceito proposto para Filtrie, foram levantados os seguintes requisitos sobre a ferramenta a ser desenvolvida: 1. A aplicao web dever ser compatvel com todas as verses para PCs dos navegadores web Mozilla Firefox, Google Chrome e Safari, e com o Internet Explorer a partir da verso 7.0. 2. A verso da aplicao web para dispositivos mveis dever ser compatvel com todos os dispositivos que suportam a especificao HTML5.

41

D-se o nome AJAX ao uso metodolgico de um conjunto de tecnologias como Javascript e XML, providas por navegadores, para tornar pginas web mais interativas com o usurio, utilizando-se de solicitaes assncronas de novas informaes para exibi-las dentro de uma pgina sem necessidade de carregar todo o contedo para incorpor-las.

45

3. O cadastro de um usurio dever ser o mais simples possvel, solicitando apenas nome, email e senha, podendo ainda ser realizado via Facebook Connect ou Twitter Sign-in42. 4. Dados sensitivos dos usurios (como senhas) devero ser criptografados antes do armazenamento em bancos de dados e os cookies de autenticao de um usurio devero incluir mecanismos para inutiliz-los em caso de intercepo por terceiros para que estes no possam fazer uso no autorizado da conta do usurio. 5. A mecnica de relacionamento entre os usurios do site deve ser a mesma do Twitter, ou seja, permitindo um usurio seguir ou ser seguido por outro sem necessidade de reciprocidade. 6. As configuraes do sistema devem oferecer opes de privacidade, tais como tornar um perfil totalmente privado (somente o usurio o ver), parcialmente privado (acessvel somente por quem segue um usurio), pblico dentro da rede (todos os usurios cadastrados em Filtrie podem v-lo) ou totalmente pblico (qualquer pessoa acessa, inclusive no cadastrados). Alm disso, um usurio poder aceitar que qualquer usurio o siga ou optar por moderar estas solicitaes; poder criar uma lista de blogs e sites de notcias ou de assuntos que no sero logados em seu perfil atravs de scrobbling. 7. Um usurio poder gerar widgets43 de suas atividades recentes ou com sua lista automtica de fontes favoritas para insero em sites externos ferramenta Filtrie, tais como seu prprio blog, por exemplo. 8. Os servidores web da aplicao Filtrie devero expor uma API e um protocolo de comunicao para aplicaes cliente (plugins de navegadores ou aplicaes mveis nativas) efetuarem o scrobbling das atividades dos
42

Um usurio que j tenha uma conta no Facebook ou no Twitter poder utilizar as credenciais j criadas nestes servios para se cadastrar e autenticar na ferramenta Filtrie atravs de uma comunicao via oAuth, um protocolo open-source para autorizao de acesso a recursos privados largamente utilizando em aplicaes web. 43 Pequena aplicao com um componente de interface grfica, gerado de forma dinmica, que pode ser inserido em pginas de terceiros em que um usurio tiver acesso ao cdigo fonte atravs da incluso de um pequeno script (geralmente Javascript).

46

usurios. Esta API e protocolo devem ser pblicas, possibilitando que terceiros desenvolvam ferramentas clientes para Filtrie. 9. Todas as atividades registradas dentro da ferramenta ou pelas aplicaes cliente de scrobbling devem ser associadas em tempo real ao perfil do usurio, porm executadas de forma assncrona. 10. Como regra geral, todas as tarefas do sistema que envolver armazenamento ou processamento de dados cuja exibio imediata do resultado final ao usurio no seja obrigatria devem ser realizados de forma assncrona. 11. A indexao de novos contedos publicados em blogs e sites de notcias deve ocorrer o mais rpido possvel aps a disponibilizao destes nas pginas da fonte. A aplicao deve fazer uso de mtodos push para receber notificaes de atualizaes nas fontes, e quando isto no for viabilizado pela fonte, estabelecer um algoritmo para minimizar o nmero de requisies pull para checagem por novo contedo. 12. Dada a grande quantidade de informaes que ser adicionada diariamente, a arquitetura dos dados registrados por Filtrie deve possibilitar alta escalabilidade horizontal44 dos servidores de bancos de dados.

3.2.2 Diagramas de casos de Uso

Nesta subseo, sero includos os diagramas de casos de uso da ferramenta Filtrie, separados por conjuntos de funcionalidades (subsistema). A descrio destes casos de uso ser efetuada na subseo seguinte.

44

Numa arquitetura projetada para escalabilidade horizontal, o aumento das necessidades de armazenamento e processamento suprido com a adio de mais ns ao sistema, tais como adicionar um novo servidor e um sistema de software que permita a distribuio do trabalho entre mltiplas mquinas.

47

Subsistema Perfil do Usurio A figura 1 apresenta o modelo de casos de uso proposto para o subsistema Perfil do Usurio, elicitando as aes identificadas bem como seus atores responsveis.

Figura 1 - Caso de Uso Perfil Usurio

48

Subsistema Filtragem e Leitura A figura 2 apresenta o modelo de casos de uso proposto para o subsistema Filtragem e Leitura, elicitando as aes identificadas bem como seus atores responsveis.

Figura 2 - Caso de Uso Filtragem e Leitura

49

Subsistema Scrobbler A figura 3 apresenta o modelo de casos de uso proposto para o subsistema Scrobber, elicitando as aes identificadas bem como seus atores responsveis.

Figura 3 - Caso de Uso Scrobbler

50

Subsistema Indexador A figura 4 apresenta o modelo de casos de uso proposto para o subsistema Indexador, elicitando as aes identificadas bem como seus atores responsveis.

Figura 4 - Caso de Uso Indexador

3.2.3 Descrio dos casos de uso

A seguir sero descritos os casos de uso do subsistema Perfil do Usurio, que engloba todas as funcionalidades relacionadas a um usurio especfico da ferramenta, suas informaes e preferncias. a) Criar Cadastro

Fluxo Bsico Passo 1: Usurio interessado acessa pgina de cadastro. Passo 2: Usurio preenche formulrio informando seu nome de usurio (login), email e senha (duas vezes). Passo 3: Usurio clica em boto Cadastrar.

51

Passo 4: Sistema salva dados do usurio no banco de dados, utiliza-os para autenticar usurio (Fazer Login). Passo 5: Usurio direcionado para pgina inicial da ferramenta.

Fluxo Alternativo Ao realizar o passo 3, caso o nome de usurio j exista ou o email ou senha sejam invlidos, uma mensagem de erro dever ser claramente exibida ao prximo ao(s) campo(s) do formulrio que contiver dados invlidos. Repete Passo 2 em diante.

Pontos de extenso: Obter autorizao. b) Obter autorizao Pr-condio: ter um cadastro no Twitter ou Facebook.

Fluxo Bsico: Passo 1: Na tela Criar Cadastro, usurio clica em boto informando que deseja se cadastrar com sua conta de um provedor de identidade externo. Passo 2: Usurio redirecionado para tela de autenticao do servio externo, que exibe ao usurio quais de suas informaes sero utilizadas no cadastro. Passo 3: Usurio clica em boto Autorizo para confirmar ao provedor de identidade que deseja enviar seus dados de cadastro Ferramenta Filtrie. Passo 4: Provedor de identidade posta os dados para o sistema Filtrie, que salva em banco de dados as informaes de cadastro do usurio e um token de autenticao. Passo 5: Usurio direcionado para pgina inicial da ferramenta.

Fluxo Alternativo: No passo 3, caso usurio clicar em boto No Autorizo, o processo interrompido e o mesmo redirecionado para tela da ferramenta Filtrie que exibe mensagem informando que ele cancelou o cadastro via provedor de identidade externo.

52

c) Fazer Login Pr-condio: Fazer Cadastro.

Fluxo Bsico: Passo 1: Usurio identifica formulrio de login na pgina inicial da ferramenta ou entrando em link Fazer Login. Passo 2: Nos campos do formulrio de login, preenche seu email ou nome de usurio e sua senha. Passo 3: Aps digitar os dados, clica em boto Fazer Login. Passo 4: Sistema criptografa senha do usurio e compara com senha armazenada em banco de dados acessada ao email ou nome de usurio informado. Em caso de correspondncia, sistema autentatica o usurio, salva sua sesso em banco de dados e salva cookies de identificao no navegador do usurio. Passo 5: Usurio redirecionado para tela inicial da ferramenta.

Fluxo Alternativo: Aps o passo 3, caso senha no corresponda ao usurio informado, a tela com formulrio de login exibida novamente juntamente com uma mensagem de erro informando que a senha ou o login invlido. Usurio repete passo 2 em diante. Pontos de Extenso: Obter Autorizao. d) Recuperar senha Pr-condio: Fazer Cadastro.

Fluxo Bsico: Passo 1: Usurio acessa tela de Fazer Login. Passo 2: Usurio clica em link Esqueci minha senha. Passo 3: Tela exibe um campo para ser informado o email ou nome de usurio. Passo 4: Informao preenchida e usurio clica em Recuperar Senha . Passo 5: Sistema envia um email para endereo de cadastro do Usurio contendo um link com um hash para redefinio da senha.

53

Passo 6: Usurio acessa seu programa de email (externo) e clica no link contido na mensagem enviada. Passo 7: Sistema verifica se o hash contido no link corresponde ao que foi enviado para email do usurio e em caso positivo, exibe tela com formulrio para usurio redefinir sua senha. Passo 8: Usurio digita uma nova senha e clica em Alterar Senha. Passo 9: Sistema exibe tela com mensagem de sucesso.

Fluxo Alternativo: No passo 4, caso email ou nome de usurio informados seja inexistente, sistema exibe mensagem de erro e retorna para passo 3.

No passo 7, caso o hash do link no corresponda a um hash vlido, sistema exibe mensagem de erro e retorna para passo 3. e) Acessar Perfil Fluxo Bsico: Passo 1: Usurio digita endereo (filtrie.com/nomedeusuario) de pgina de perfil de outro usurio ou clica em link j existente em alguma tela do sistema ou em pginas externas. Passo 2: Tela exibe o perfil do usurio acessado, composto de uma lista de notcias com as quais o mesmo interagiu, uma nuvem de tags dos assuntos favoritos do usurio, uma lista de blogs e sites de notcias favoritos do usurio, alm de alguns dos suas conexes na rede social.

Fluxo Alternativo: No passo 1, caso seja digitado um nome de usurio no existente, sistema exibe tela com mensagem de erro Usurio no encontrado. f) Acessar Leituras Pr-condio: Acessar Perfil.

Fluxo Bsico: Passo 1: em menu lateral exibido na pgina de perfil de um usurio especificado, clicar no link Leituras.

54

Passo 2: Tela formatada como o perfil do usurio ir exibir lista de notcias que o usurio leu.

g) Acessar Assinaturas Pr-condio: Acessar Perfil.

Fluxo Bsico: Passo 1: em menu lateral exibido na pgina de perfil de um usurio especificado, clicar no link Assinaturas. Passo 2: Tela formatada como o perfil do usurio ir exibir lista de blogs ou sites de notcias que um usurio optou por acompanhar. h) Acessar Comentrios Pr-condio: Acessar Perfil.

Fluxo Bsico: Passo 1: em menu lateral exibido na pgina de perfil de um usurio especificado, clicar no link Comentrios. Passo 2: Tela formatada como o perfil do usurio ir exibir lista de notcias que o usurio comentou. i) Acessar Recomendaes Pr-condio: Acessar Perfil.

Fluxo Bsico: Passo 1: em menu lateral exibido na pgina de perfil de um usurio especificado, clicar no link Recomendaes. Passo 2: Tela formatada como o perfil do usurio ir exibir lista de notcias que o usurio marcou como recomendadas, seja dentro da ferramenta Filtrie ou dentro de outras redes sociais das quais participa. j) Gerenciar relacionamentos Pr-condio: Fazer Login, Acessar Perfil.

Des-seguir usurio

55

Fluxo Bsico: Passo 1: usurio acessa pgina do perfil de outro usurio que ele j segue. Passo 2: usurio clica no boto Des-Seguir Usurio. Passo 3: Mensagem de sucesso exibida na tela.

Seguir usurio Fluxo Bsico: Passo 1: usurio acessa pgina do perfil de outro usurio que ele deseja seguir. Passo 2: Usurio clica no boto seguir usurio. Passo 3: Mensagem de sucesso exibida na tela.

Fluxo Alternativo: No passo 3, caso o usurio que est sendo seguido tenha configurado seu perfil para solicitar sua autorizao prvia para outro usurio o seguir, tela exibir mensagem Aguardando Autorizao. k) Gerar Widget Pr-condio: Fazer Login.

Gerar Widget Fontes Fluxo Bsico: Passo 1: usurio acessa tela de Gerar Widgets. Passo 2: usurio marca opo informando que quer gerar um widget de suas fontes favoritas. Passo 3: usurio escolhe o estilo (layout e combinao de cores) do widget. Passo 4: usurio personaliza as cores, tamanho e tipo de fonte utilizada nos textos do widget. Passo 5: usurio copia o cdigo javascript necessrio para exibir o widget em uma pgina externa.

Gerar Widget Atividades Fluxo Bsico: Passo 1: usurio acessa tela de Gerar Widgets.

56

Passo 2: usurio marca opo informando que quer gerar um widget de suas atividades recentes. Passo 3: usurio escolhe o estilo (layout e combinao de cores) do widget. Passo 4: usurio personaliza as cores, tamanho e tipo de fonte utilizada nos textos do widget. Passo 5: usurio copia o cdigo javascript necessrio para exibir o widget em uma pgina externa. l) Editar Perfil Pr-condio: Fazer Login

Fluxo Bsico: Passo 1: Usurio clica em link Editar Perfil no menu da pgina inicial da ferramenta. Passo 2: Tela exibe um formulrio com campos editveis contendo as informaes que podem ser editadas (Nome, Endereo do site do usurio, descrio). Passo 3: Usurio edita as informaes desejadas e clica em Confirmar Passo 4: Sistema salva as alteraes no banco de dados e exibe mensagem de sucesso.

Fluxo Alternativo: No passo 3, caso usurio insira uma url invlida como endereo de seu site, tela exibe o formulrio de alterao com uma mensagem de erro sobre o campo com problemas.

Pontos de extenso: Alterar Avatar, Alterar Senha m) Alterar Avatar Pr-condio: Fazer Login, Editar Perfil.

Fluxo Bsico: Passo 1: Usurio clica em link Editar Perfil no menu da pgina inicial da ferramenta. Passo 2: Usurio clica em link Alterar Avatar que aparecer no topo da tela de

57

editar perfil. Passo 3: Tela exibe um formulrio para usurio selecionar uma foto em seu computador. Passo 4: Usurio seleciona a foto e clica em Enviar. Passo 5: Sistema recebe a foto, redimensiona para o tamanho utilizado na interface do perfil do usurio, salva a foto no sistema de arquivos do servidor e inclui no banco de dados referncia ao endereo fsico da imagem. Passo 6: Tela exibe mensagem de sucesso juntamente com a foto enviada j redimensionada.

Fluxo Alternativo: No passo 4, caso usurio selecione um arquivo com formato invlido (que no seja foto), tela exibe mensagem de erro e reinicia no passo 3.

No passo 5, caso a foto enviada tenha tamanho (em megabytes) maior que o mximo permitido ou caso o sistema no consiga processar foto, tela exibe mensagem de erro e pede para usurio enviar outra foto, reiniciando no passo 3. n) Alterar Senha Pr-condio: Fazer Login, Editar Perfil.

Fluxo Bsico: Passo 1: Usurio clica em link Editar Perfil no menu da pgina inicial da Ferramenta. Passo 2: Usurio clica em link Alterar Senha que aparecer no topo da tela de editar perfil. Passo 3: Tela exibe um formulrio para usurio digitar duas vezes a sua nova senha, bem como a senha atual. Passo 4: Usurio clica em boto Alterar. Passo 5: Sistema valida as senhas e salva a nova senha, criptografada, no banco de dados. Tela exibe mensagem de sucesso.

Fluxo Alternativo:

58

No passo 5, caso usurio digite senha atual no correspondente senha correta, ou no digite duas vezes de forma igual a nova senha, tela exibe mensagem de erro e reinicia passo 3. o) Editar Blacklist Pr-condio: Fazer Login.

Adicionar Fluxo Bsico: Passo 1: usurio clica em link Editar blacklist. Passo 2: Tela exibe uma lista de urls j inclusas na blacklist do usurio e um campo editvel para adicionar uma nova url. Passo 3: Usurio digita o endereo que deseja inserir na blacklist e clica em Adicionar. Passo 4: Sistema salva a nova url no banco de dados. Tela atualizada com uma nova lista j mostrando a url adicionada e uma mensagem de sucesso.

Fluxo Alternativo: No passo 4, caso o endereo inserido j faa parte da blacklist ou seja uma url invlida, tela exibe mensagem de erro e retorna ao passo 2. Remover Fluxo Bsico: Passo 1: usurio clica em link Editar Blacklist. Passo 2: Tela exibe uma lista de urls j inclusas na blacklist do usurio e um campo editvel para adicionar uma nova url. Passo 3: Usurio passa o mouse sobre a url que deseja remover e nota que um cone para excluso daquele endereo se torna visvel. Passo 4: Usurio clica no cone de excluso e confirma. Passo 4: Sistema remove a url do banco de dados. Tela atualizada com uma nova lista j excluindo o endereo removido e uma mensagem de sucesso. p) Editar Whitelist Pr-condio: Fazer Login.

59

Adicionar Fluxo Bsico: Passo 1: usurio clica em link Editar whitelist. Passo 2: Tela exibe uma lista de urls j inclusas na whitelist do usurio e um campo editvel para adicionar uma nova url. Passo 3: Usurio digita o endereo que deseja inserir na whitelist e clica em Adicionar. Passo 4: Sistema salva a nova url no banco de dados. Tela atualizada com uma nova lista j mostrando a url adicionada e uma mensagem de sucesso.

Fluxo Alternativo: No passo 4, caso o endereo inserido j faa parte da whitelist ou seja uma url invlida, tela exibe mensagem de erro e retorna ao passo 2. Remover Fluxo Bsico: Passo 1: usurio clica em link Editar whitelist. Passo 2: Tela exibe uma lista de urls j inclusas na whitelist do usurio e um campo editvel para adicionar uma nova url. Passo 3: Usurio passa o mouse sobre a url que deseja remover e nota que um cone para excluso daquele endereo se torna visvel. Passo 4: Usurio clica no cone de excluso e confirma. Passo 4: Sistema remove a url do banco de dados. Tela atualizada com uma nova lista j excluindo o endereo removido e uma mensagem de sucesso.

Iremos descrever agora sero os casos de uso do subsistema Filtragem e Leitura, que engloba todas as funcionalidades relacionadas a um usurio especfico da ferramenta, suas informaes e preferncias.

60

a) Ler stream de notcias Pr-condio: Fazer Login.

Acessar Stream por Tpicos Fluxo Bsico: Passo 1: Acessar pgina inicial para usurios logados. Passo 2: Clicar no link Stream por Tpicos no menu lateral. Passo 3: Tela exibir as primeiras 20 notcias dos tpicos de interesse do usurio, em ordem cronolgica inversa. Passo 4: Ao percorrer a barra de rolagem da tela at o final das 20 notcias, as 20 notcias seguintes so carregadas automaticamente.

Acessar Stream por Fontes Fluxo Bsico: Passo 1: Acessar pgina inicial para usurios logados. Passo 2: Clicar no link Stream por Fontes no menu lateral. Passo 3: Tela exibir as primeiras 20 notcias publicados nas fontes que o usurio acompanha, em ordem cronolgica inversa. Passo 4: Ao percorrer a barra de rolagem da tela at o final das 20 notcias, as 20 notcias seguintes so carregadas automaticamente.

Acessar Stream Social Fluxo Bsico: Passo 1: Acessar pgina inicial para usurios logados. Passo 2: Clicar no link Stream Social no menu lateral. Passo 3: Tela exibir as primeiras 20 notcias com as quais interagiram os usurios que o usurio segue, em ordem cronolgica inversa. Passo 4: Ao percorrer a barra de rolagem da tela at o final das 20 notcias, as 20 notcias seguintes so carregadas automaticamente.

Acessar Stream Twitter

61

Fluxo Bsico: Passo 1: Acessar pgina inicial para usurios logados. Passo 2: Clicar no link Stream Twitter no menu lateral. Passo 3: Tela exibir as primeiras 20 notcias encontradas na timeline do usurio importada do Twitter, em ordem cronolgica inversa. Passo 4: Ao percorrer a barra de rolagem da tela at o final das 20 notcias, as 20 notcias seguintes so carregadas automaticamente.

Acessar Stream Facebook Fluxo Bsico: Passo 1: Acessar pgina inicial para usurios logados. Passo 2: Clicar no link Stream Facebook no menu lateral. Passo 3: Tela exibir as primeiras 20 notcias encontradas na timeline do usurio importada do Facebook, em ordem cronolgica inversa. Passo 4: Ao percorrer a barra de rolagem da tela at o final das 20 notcias, as 20 notcias seguintes so carregadas automaticamente.

Acessar Stream Unificado Fluxo Bsico: Passo 1: Acessar pgina inicial para usurios logados. Passo 2: Clicar no link Stream Unificado no menu lateral. Passo 3: Tela exibir as primeiras 20 notcias associadas aos streams do usurio, em ordem cronolgica inversa. Passo 4: Ao percorrer a barra de rolagem da tela at o final das 20 notcias, as 20 notcias seguintes so carregadas automaticamente. b) Ordenar Stream Pr-condio: Ler Stream de Notcias.

Ordenar por relevncia Fluxo Bsico: Passo 1: Usurio localiza menu com opes de ordenao em tela contendo

62

um stream de notcias e clica na opo Por Relevncia. Passo 2: Tela recarregada, passando a exibir as 20 primeiras notcias do stream, com as mais relevantes no topo.

Ordenar por ordem cronolgica inversa Fluxo Bsico: Passo 1: Usurio localiza menu com opes de ordenao em tela contendo um stream de notcias e clica na opo Data da notcias. Passo 2: Tela recarregada, passando a exibir as 20 primeiras notcias do stream, com as publicadas mais recentemente no topo. c) Ler notcia Pr-condio: Ler Stream de Notcias.

Fluxo bsico: Passo 1: Na tela de um dos streams de notcia, usurio clica sobre a manchete da notcia que deseja ler. Passo 2: Posio do cursor se desloca para o topo da tela e cone indicando que a notcia est sendo carregada apresentado na tela. Passo 3: Um quadro se abre sobrepondo-se s partes central e direita da interface e nele exibindo a manchete da notcia, data da publicao, fonte que a publicou, autor (se disponvel) e o texto da notcia. Passo 4: Para sair deste quadro, usurio dever clicar cone de fechar (X) ou rolar a tela e clicar em outra notcia.

Fluxo Alternativo: No passo 3, em caso de erro na conexo ao banco de dados ou na impossibilidade de se extrair o texto da notcia do site onde foi publicada, uma mensagem de erro ser exibida e usurio dever realizar o passo 4 para prosseguir.

Pontos de extenso: Obter recomendaes. d) Obter recomendaes Pr-condio: Ler notcia.

63

Fluxo bsico: Passo 1: No quadro de leitura de uma notcia, usurio dever clicar em cone localizado no lado direito do quadro que indicar que o contedo se expandir ao faz-lo. Passo 2: Quadro de leitura redimensionado na tela para exibir uma faixa de contedo no lado direito. Esta conter uma lista de palavras chave associadas quela notcia (nas quais o usurio poder clicar para obter outras notcias com o mesmo contedo), e abaixo uma lista contendo de 3 a 5 notcias relacionadas mesma, apresentadas em ordem de relevncia. e) Filtrar Stream Pr-condio: Ler Stream de Notcias.

Filtrar Tpicos Fluxo Bsico: Passo 1: Usurio localiza menu com opes de filtragem em tela contendo um stream de notcias e clica na opo Filtrar Tpicos. Passo 2: Uma pequena janela pop-up se abre exibindo um campo para digitao de um tpico (palavra chave). Passo 3: Usurio digita a palavra chave e clica em boto Filtrar. Passo 4: Tela contendo o stream de notcias carregada novamente, exibindo apenas notcias daquele stream relacionada ao tpico desejado.

Fluxo Alternativo: No passo 4, caso nenhuma notcia do stream em questo seja do tpico que est sendo filtrado, tela exibir mensagem de erro informando que no h contedo disponvel.

Filtrar Fontes Fluxo Bsico: Passo 1: Usurio localiza menu com opes de filtragem em tela contendo um stream de notcias e clica na opo Filtrar Fontes. Passo 2: Uma janela pop-up se abre exibindo uma lista selecionvel de fontes

64

favoritas do usurio e um campo de formulrio para digitao do nome ou endereo de uma fonte. Passo 3: Usurio marca na lista as fontes que deseja incluir na filtragem. Passo 4: Caso uma fonte que ele desejar incluir no fizer parte da lista, usurio digita o nome ou endereo da mesma no campo do formulrio e clica no boto adicionar. Passo 5: Finalizada a seleo e/ou adio das fontes desejadas, usurio clica em Filtrar. Passo 6: Tela contendo o stream de notcias carregada novamente, exibindo apenas notcias daquele stream que tenham sido publicadas nas fontes escolhidas.

Fluxo Alternativo: No passo 6, caso nenhuma notcia do stream em questo tenha sido publicada nas fontes que fazem parte do filtro, tela exibir mensagem de erro informando que no h contedo disponvel.

Filtrar Tipo Fluxo bsico: Passo 1: Usurio localiza menu com opes de filtragem por tipo de contedo ou atividade em tela contendo um stream de notcias. Passo 2: Usurio clica no link da opo de filtragem desejada. Passo 3: Tela contendo o stream de notcias carregada novamente, exibindo apenas notcias daquele stream que sejam do tipo de contedo ou atividade selecionada.

Fluxo Alternativo: No passo 3, caso nenhuma notcia do stream em questo se adeque ao filtro selecionado, tela exibir mensagem de erro informando que no h contedo disponvel.

A partir de agora sero descritos os casos de uso do subsistema Scrobbler, que engloba todas as funcionalidades relacionadas ao monitoramento e

65

armazenamento das informaes relativas s atividades realizadas por um usurio em blogs ou sites de notcias. a) Autenticar usurio

Fluxo Bsico: Passo 1: Tela de aplicao cliente exibe campos de formulrio para usurio informar seu email ou nome de usurio e sua senha. Passo 2: Usurio preenche os dados e clica em boto autenticar. Passo 3: Em caso de sucesso, sistema exibe tela informando que usurio est autenticado e evidenciando seu nome de usurio e avatar.

Fluxo Alternativo: No passo 1, usurio pode optar por armazenar seus dados de autenticao na aplicao cliente, possibilitando a autenticao automtica nos prximos usos. No passo 3, caso os dados de autentaticao estejam incorretos, sistema exibe mensagem de erro e retorna ao passo 1. b) Recebe dados usurio Pr-condio: Autenticar usurio.

Receber Whitelist

Fluxo Bsico: Passo 1: Aplicao cliente faz requisio da whitelist do usurio API exposta pelo servidor de Filtrie e exibe cone indicado que est carregando as informaes. Passo 2: Aplicao cliente salva em seu banco de dados as urls que fazem parte da whitelist recebida e exibe cone indicando que est pronta para uso.

Receber Blacklist

Fluxo Bsico: Passo 1: Aplicao cliente faz requisio da blacklist do usurio API exposta

66

pelo servidor de Filtrie e exibe cone indicado que est carregando as informaes. Passo 2: Aplicao cliente salva em seu banco de dados as urls que fazem parte da blacklist recebida e exibe cone indicando que est pronta para uso.

Recebe Perfil

Fluxo Bsico: Passo 1: Aplicao cliente faz requisio de dados do perfil do usurio API exposta pelo servidor de Filtrie e exibe cone indicado que est carregando as informaes. Passo 2: Aplicao cliente salva em seu banco de dados as informaes recebidas e passa a exibir nome e avatar do usurio no topo de seu menu.

c) Atualiza dados Pr-condio: Recebe dados usurio

Atualizar Blacklist (adicionar) Fluxo Bsico: Passo 1: Usurio acessa pgina de uma das fontes que deseja adicionar sua blacklist. Passo 2: Aplicao verifica se o site acessado uma fonte vlida exibe opo Adicionar Blacklist no seu menu. Passo 3: Usurio clica na opo Adicionar Blacklist. Passo 4: Tela exibe um cone indicando que a ao foi concretizada com sucesso.

Atualizar Blacklist (remover) Fluxo Bsico: Passo 1: Usurio acessa pgina de uma das fontes que fazem parte de sua blacklist. Passo 2: Usurio clica na opo Remover da Blacklist no menu da aplicao.

67

Passo 3: Tela exibe um cone indicando que a ao foi concretizada com sucesso.

Atualizar Whitelist (adicionar) Fluxo Bsico: Passo 1: Usurio acessa pgina de uma das fontes que deseja adicionar sua whitelist. Passo 2: Aplicao verifica se o site acessado uma fonte vlida e exibe opo Adicionar Whitelist no seu menu. Passo 3: Usurio clica na opo Adicionar Whitelist Passo 4: Tela exibe um cone indicando que a ao foi concretizada com sucesso.

Atualizar Whitelist (remover) Fluxo Bsico: Passo 1: Usurio acessa pgina de uma das fontes que fazem parte de sua whitelist. Passo 2: Usurio clica na opo Remover da Whitelist no menu da aplicao. Passo 3: Tela exibe um cone indicando que a ao foi concretizada com sucesso.

d) Obter regras de reconhecimento de blogs

Obter lista excees Fluxo Bsico: Passo 1: Aplicao cliente faz requisio de uma listagem de sites que devem ser foradamente reconhecidas como um blog ou site de notcias vlido e exibe cone indicado que est carregando informaes. Passo 2: Aplicao cliente salva em seu banco de dados as informaes recebidas e ativa o acesso ao seu menu contextual, indicando que est pronta para ser usada.

Obter RegExp

68

Fluxo Bsico: Passo 1: Aplicao cliente faz requisio de uma lista de expresses regulares e s metatags a que devem ser aplicadas para reconhecer uma fonte como blog ou site de notcia e exibe cone indicado que est carregando informaes. Passo 2: Aplicao cliente salva em seu banco de dados as informaes recebidas e ativa o acesso ao seu menu contextual, indicando que est pronta para ser usada. e) Monitorar pginas acessadas Pr-condio: Obter regras de reconhecimento de blogs.

Fluxo Bsico: Passo 1: Usurio acessa uma pgina qualquer na internet. Passo 2: Aplicao cliente analisa url e cdigo fonte da pgina e exibe cone indicando que est realizando processamento. f) Reconhecer Fonte Pr-condio: Monitorar pginas acessadas

Fluxo Bsico Passo 1: Aplicao cliente analisa resultado do processamento realizado no caso de uso Monitorar pginas acessadas e em caso positiva altera seu cone para cor verde e exibe a mensagem XXXX um blog ou XXXX um site de notcias em seu menu contextual.

Fluxo Alternativo No passo 1, caso a fonte no seja um blog ou site de notcia, cone da aplicao permanece na cor cinza e exibe mensagem XXX no um blog em seu menu contextual. g) Realizar Scrobbling Pr-condio: Reconhecer Fonte

Fluxo Bsico

69

Passo 1: Aplicao cliente envia para a API exposta pela aplicao servidor de Filtrie um POST informando que uma url acessada pelo usurio faz parte de uma fonte de notcias reconhecida. Passo 2: Aplicao servidor processa as informaes recebidas, valida, salva no perfil do usurio (se validadas) e exibe cdigo de resposta para a aplicao cliente.

Fluxo Alternativo No passo 2, caso a aplicao no responda confirmando a recepo da mensagem, aplicao cliente insere os dados numa fila e tenta reenviar mais tarde.

Por fim, descreveremos os casos de uso do subsistema Indexador, que engloba todas as funcionalidades relacionadas ao armazenamento, anlise e classificao de informaes extradas dos blogs e sites notcias monitoradas pela ferramenta Filtrie.

a) Realizar Scrobbling Fluxo Bsico Passo 1: Aplicao servidor recebe dados relativos a pgina acessada e ao usurio que a acessou. Passo 2: Aplicao salva informaes da atividade no banco de dados. Passo 3: Perfil do Usurio passa a exibir a atividade.

Pontos de extenso: Indexar Blog. b) Indexar Blog Fluxo Bsico Passo 1: Aplicao servidor recebe uma url. Passo 2: Aplicao requisita o cdigo fonte do contedo disponvel na url. Passo 3: Aplicao executa algoritmo para determinar se a url faz parte de um blog, qual a url da homepage do blog e de seus feeds. Passo 4: Caso todos os dados necessrios sejam obtidos, aplicao salva as

70

informaes do blog no seu banco de de dados.

Fluxo Alternativo No passo 4, caso a fonte disponibilize notificaes push de atualizaes de seu contedo, aplicao realiza assinatura junto ao servidor da fonte para receber estas notificaes. c) Notificar atualizao Fluxo Bsico Passo 1: Fonte envia requisio para aplicao servidor informando que h novo contedo disponvel. Passo 2: Aplicao servidor analisa a notificao recebida e envia para fila de indexao de contedo caso a atualizao ainda no tenha sido indexada. d) Indexar Contedo Blog Pr-condio: Indexar Blog, Notificar atualizao.

Fluxo Bsico Passo 1: Aplicao servidor requisita os dados contidos no feed da fonte. Passo 2: Aplicao servidor analisa todas as entradas do feed para verificar quais so novas. Passo 3: Aplicao servidor salva no banco de dados os metadados sobre todas as atualizaes que ainda no foram indexadas. e) Extrair Contedo Pr-condio: Indexar Contedo Blog.

Fluxo Bsico Passo 1: Aplicao recebe url de uma notcia e verifica no banco de dados se a mesma j foi indexado. Passo 2: Em caso positivo, aplicao verifica se o texto da notcia j foi extrado por completo do feed da fonte. Passo 3: Em caso negativo, aplicao faz requisio url da notcia para receber seu cdigo fonte. Passo 4: Aplicao executa algoritmo de extrao de texto que ir analisar o

71

cdigo fonte para encontrar nele o texto relativo quela notcia. Passo 5: Aplicao salva no banco de dados o contedo da notcia. f) Extrair palavras-chave Pr-condio: Extrair Contedo.

Fluxo Bsico: Passo 1: Aplicao recebe o contedo de uma notcia. Passo 2: Aplicao executa algoritmo para encontrar as palavras chaves mais importantes daquele texto e as classifica em ordem de importncia. Passo 3: Aplicao salva as palavras chaves em banco de dados, associando-as notcia de onde foram extradas.

3.2.4 Diagrama de Classes

A partir da anlise das caractersticas e dos requisitos da ferramenta Filtrie, foi desenvolvida uma anlise orientada a objetos na qual esto representados os principais conceitos do domnio da aplicao.

72

Figura 5 - Diagrama de Classes

73

A figura 5 apresenta o diagrama de classes da ferramenta Filtrie, representado na linguagem UML. A seguir descrevemos cada uma das classes presentes no diagrama: a) Blog: esta classe represente uma fonte de notcias. Para simplificao, chamamos todas as fontes de blog. Atributos da Classe: * _id: nmero identificador (gerado sequencialmente) de uma fonte. * url: endereo para acesso pgina inicial da fonte. * title: ttulo (nome) de uma fonte. * fullfeed: nmero que determina se o feed de uma fonte contm o texto completo das notcias (e em qual campo xml) ou se necessrio extrair o contedo do html. * lh: hash gerado por um algoritmo que determina o padro seguido pelas urls das notcias publicadas em uma fonte. * isblog: nmero que determina se uma fonte site de notcia ou blog e qual ferramenta para publicao de blogs foi utilizada para sua publicao. * fb: nome de usurio associado fonte num servio de proxy (para fins de estatsticas) de feeds chamado feedburner. * feed: url do feed principal de uma fonte. * psbhub: url do webservice do padro pubsubhubbub ao qual uma aplicao interessada deve se subscrever para receber notificaes push de atualizaes. * rsscloud: url do webservice do padro rsscloud ao qual uma aplicao interessada deve se subscrever para receber notificaes push de atualizaes. * up: Unix timestamp representando a data e hora da atualizao mais recente publicada na fonte. * twitter: nome de usurio associado fonte no Twitter. * tags: lista com todas as tags relacionadas a um blog, separadas por vrgulas.

b) Post: esta classe representa uma entrada (notcia) publicada numa fonte. Atributos da Classe: * _id: nmero identificador (gerado sequencialmente) de uma notcia. * _idhash: hash do _id representado em base 64.

74

* idBlog: nmero identificador da fonte em que a notcia foi publicada. * url: endereo para acesso notcia. * title: ttulo (manchete) da notcia. * author: nome do autor da notcia. * blogTitle: nome da fonte em que a notcia foi publicada. * blogUrl: endereo para acesso pgina inicial da fonte em que a notcia foi publicada. * indexedat: Unix timestamp representando a data e hora em que a fonte foi indexada por Filtrie. * dateTime: Unix timestamp representando a data e hora em que a notcia foi publicada. * postText: texto (contedo) da notcia. * tags: lista com todas as tags relacionadas a um post, separadas por virgulas.

c) User: esta classe representada um usurio cadastrado na ferramenta Filtrie. Atributos da Classe: * _id: nmero identificador (gerado sequencialmente) de um usurio. * _username: apelido identificador de um usurio (alfa numrico, at 20 caracteres). * email: endereo de email de contato do usurio. * emailGravatar: endereo de email utilizado pelo usurio para se cadastrar no servio Gravatar (utilizado para gerar a foto do perfil de um usurio). * name: nome real do usurio. * quickBio: descrio auto-biogrfica do usurio (at 160 caracteres). * siteUrl: endereo de um site externo qualquer que pertena ao usurio. * password: senha (criptografada) do usurio para acesso sistema Filtrie. * country: cdigo de duas letras representando o pas do usurio. * lang: cdigo de duas letras representando a linguagem de preferncia do usurio (pt para portugus, em para ingls). * acceptDiffLang: valor booleano que especifica se usurio aceita receber notcias publicadas em lnguas diferentes de sua linguagem de preferncia. * publicProfile: valor que especifica se um usurio deseja que o acesso ao seu

75

perfil seja pblico ou restrito. * isActive: valor booleano que especifica se um usurio ativou seu cadastro. * twitterAcessToken: vetor contendo os tokens de autenticao oAuth para acesso ao twitter do usurio por parte da aplicao Filtrie. * facebookAcessToken: vetor contendo os tokens de autenticao oAuth para acesso ao Facebook do usurio por parte da aplicao Filtrie.

d) Tag: esta classe representa uma palavra-chave Atributos da Classe: * _id: nmero identificador (gerado sequencialmente) de uma tag. * tag: a palavra-chave em si. * blogsCounter: contador auto-incrementado que consolida o nmero total de blogs associados uma palavra-chave. * postCounter: contador auto-incrementado que consolida o nmero total de posts associados uma palavra-chave.

e) Session: esta classe representa uma sesso (uso em parte da aplicao que requer autenticao via senha) de um usurio dentro da aplicao Filtrie. Atributos da Classe: * _snr_uid: vetor contendo os tokens de identificao e autenticao de um usurio dentro da aplicao Filtrie.

f) ScrobbleData: esta classe associativa representa as interaes entre um usurio e os posts de uma fonte de notcias. Atributos da Classe: * scrobbleUrl: endereo para acesso ao post com o qual o usurio interagiu. * scrobbleType: nmero que identifica tipo da interao representada (leitura, comentrio, recomendao). * scrobbleSubType: nmero (se aplicvel) que representa o subtipo da interao recomendada.

76

* dateTime: Unix timestamp representando a data e hora em que a interao aconteceu.

g) PostsbyTag:

esta

classe

associativa

representa

as

palavras-chaves

relacionadas a cada post. Atributos da Classe: * idPost: nmero identificador de um post. * idTag: nmero identificador de uma palavra-chave * points: pontuao que atribui a relevncia desta palavra-chave em relao ao contedo do post.

h) BlogsbyTag:

esta

classe

associativa

representa

as

palavras-chaves

relacionadas a cada fonte. Atributos da Classe: * idBlog: nmero identificador de um Blog. * idTag: nmero identificador de uma palavra-chave. * points: pontuao que atribui a relevncia desta palavra-chave em relao ao contedo do blog.

i) BlogsbyUser: esta classe associativa representa as relaes entre usurios e fontes. Atributos da Classe: * idUser: nmero identificador de um usurio. * idBlog: nmero identificador de um blog. * type: nmero que representa o tipo de relao identificada (incluso em lista de fontes acompanhadas, fontes favoritas, blacklist ou whitelist).

77

3.3

Projeto do Sistema

Na fase de projeto do sistema, j considerando que a linguagem escolhida para a implementao da aplicao web ser o PHP, procuramos identificar bibliotecas e classes que sero necessrias para comunicao de Filtrie com os sites e APIs de terceiros, bem como para obter a persistncia em diferentes nveis dos dados armazenados pela ferramenta, expressando essas modificaes por meio de um novo diagrama de classes. Alm disso, geramos ainda os diagramas de sequncia para especificar o funcionamento de um dos streams de notcias e das atividades de scrobbling e indexao de contedo.

3.3.1 Diagrama de classes atualizado

A figura 6 apresenta o diagrama de classes da ferramenta Filtrie atualizado na fase de projeto, representado na linguagem UML. Para fins de simplificao, uma vez que as novas classes utilizadas no pertencem exclusivamente ao domnio da aplicao e fazem parte da biblioteca da linguagem de programao utilizada, no inclumos os atributos e mtodos destas classes no diagrama. A seguir descrevemos cada uma das novas classes includas nesta fase de projeto.

78

Figura 6 - Diagrama de Classes atualizado na fase de projeto

79

a) MongoDb: esta classe disponibiliza os mtodos para que uma aplicao cliente se conecte, leia e escreva dados em um ou mais servidores executando o servio MongoDb45, que oferece um banco de dados norelacional. utilizada para armazenamento de todos os dados que necessitam de persistncia, tais como os objetos de classes como Blog, Post, User, Tag e ScrobbleData. b) Memcache: esta classe disponibiliza os mtodos para que uma aplicao cliente se conecte, leia e escreva dados em um ou mais servidores executando o servio Memcache46, que oferece as funcionalidades de uma tabela hash distribuda armazenada exclusivamente em memria. utilizada para armazenamento de dados volteis (como sesses e variveis temporrias de estado) e como cache para acesso a objetos de classes como Blog, Post e User. c) Redis: esta classe disponibiliza os mtodos para que uma aplicao cliente se conecte, leia e escreva dados em um ou mais servidores executando o servio Redis47, que oferece as funcionalidades de diversas estruturas de dados, acessveis por uma chave (como em uma tabela hash) e armazenadas em servidores distribudos e com diferentes nveis de persistncia. Por estas caractersticas, utilizado para armazenar dados de classes associativas e dados que podem ser computados a partir de informaes de objetos persistidos no banco de dados MongoDb. d) Validate: esta classe utilizada para validar toda e qualquer informao obtida de meio externo (entrada por usurios ou por sites de fontes ou APIs), a fim de impedir o armazenamento em Filtrie de dados no padronizados, no sanitizados e que possam injetar contedo que possibilite ataques do tipo XSS48 (Cross-site scripting) ou CSRF49 (cross-site request forgery).

45 46

http://www.mongodb.org. http://memcached.org. 47 http://redis.io. 48 Tipo de vulnerabilidade encontrado normalmente em aplicaes web que ativam ataques maliciosos ao injetarem scripts que so executados no lado cliente dentro das pginas web vistas por outros usurios. Atravs de um XSS, o cracker injeta cdigos javascript em um campo texto de uma pgina j existente e este javascript apresentado para outros usurios.

80

e) Gearman: esta classe disponibiliza os mtodos para que uma aplicao se conecte e envie dados e requisies para um ou mais servidores executando o servio Gearman50, que oferece as funcionalidades de um gerenciador de tarefas (jobs) atravs do uso de filas. acionada pela aplicao Filtrie para executar o processamento paralelo ou assncrono de tarefas. f) Oauth: esta classe disponibiliza os mtodos necessrios para sinalizao e gerao dos cabealhos de requisies para APIs que protejam o acesso a dados de seus usurios utilizando o protocolo Oauth51, no qual um usurio pode permitir sem informar suas credenciais de acesso (login e senha) que uma aplicao de terceiros consuma suas informaes e/ou realize aes em seu nome atravs de uma API. Este protocolo utilizado por ferramentas como o Twitter e o Facebook. g) SimplePie: esta classe52 disponibiliza mtodos para a descoberta de feeds dentro do cdigo html de um site, bem como para acesso e tratamento do contedo de um feed, convertendo-o em um objeto com atributos padronizados. Como existem diversas verses dos padres RSS e ATOM, cada uma como pequenas peculiaridades, a utilizao desta classe facilita a manipulao destes feeds dentro de Filtrie. h) Curl: esta classe disponibiliza mtodos para a realizao de requisies a sites externos, de forma serial ou em paralelo, e possibilitando a fcil manipulao dos cabealhos de requisio bem como dos cabealhos de resposta e contedo da pgina acessada.

3.3.2 Diagramas de sequncia

49

Tipo de explorao maliciosa de um website pelo qual comandos no autorizados so transmitidos de um usurio que confia no website. Ao contrrio de um ataque XSS, que explora a confiana de um usurio para um site particular, o CSRF explora a confiana que um site tem do navegador do usurio. 50 http://gearman.org. 51 http://oauth.net. 52 http://www.simplepie.org.

81

a) A figura 7 apresenta o diagrama de sequncia para o caso de uso Acessar Stream Twitter. A seguir descrevemos cada etapa deste diagrama.

Figura 7 - Diagrama de Sequncia para Acessar Stream Twitter

82

Passo 1: O usurio acessa a funcionalidade Stream Twitter digitando o endereo /reader/twitter dentro do site Filtrie. Passo 2.: O navegador do usurio, que j exibe a interface bsica da funcionalidade na pgina indicando que o contedo est sendo carregado, faz uma requisio AJAX para a aplicao web executar o script nexttwitterreadings. Passo 3: A aplicao web, que recebeu via cookies os dados da sesso do usurio, monta uma requisio oAuth para a API do Twitter afim de identificar o usurio perante os servidores do mesmo e solicitar a timeline com os tweets mais recentes destinados ao usurio. A API do twitter responde com um vetor em JSON (Javascript Object Notation) contendo dados e metadados de 200 a 800 entradas da timeline solicitada. Passo 4: A aplicao web decodifica a resposta recebida e analisa o vetor de tweets para encontrar todas as mensagens que contm links e que portanto so candidatas a serem referncia a um post num blog ou site de notcias. Uma peculariedade do Twitter, devida ao limite de at 140 caracteres em suas mensagens, o fato de que as urls publicadas dentro das mensagens so usualmente encurtadas. Desta forma, primeiramente preciso expandir estas urls para se chegar ao endereo final para onde uma mensagem aponta. A aplicao web gera ento requisies ao servidor de filas Gearman solicitando a realizao desta tarefa. Passo 5: O servidor Gearman dispara tarefas em paralelo para seus workers disponveis. Cada um recebe uma url encurtada e faz uma requisio via biblioteca Curl do cabealho HTTP desta, o qual indicar num de seus atributos a url real para onde a requisio deve ser redirecionada. Passo 6: Conhecendo a url expandida, o worker ento consulta os bancos de dados para saber se a mesma associada a um post j indexado ou se j tentou-se indexar tal url antes e verificou-se que ela no um post. No primeiro caso, o banco de dados retorna o idPost associado. No segundo caso, retorna um cdigo indicando que a url no um post e no deve ser indexada. O worker ento salva no banco de dados cache o resultado de seu trabalho, associando a url encurtada url expandida e ao idPost ou cdigo retornado. O worker retorna ao servidor Gearman informando que terminou a tarefa.

83

Passo 7: O servidor Gearman, ao receber o retorno de concluso de todas as tarefas solicitadas, acorda a aplicao web informando que terminou a expanso da lista de urls. A aplicao web, por no receber diretamente os resultados de Gearman, consulta o banco de dados cache para obter a lista com os resultados salvos e processa os mesmos para extrair quais urls foram associadas a um post j indexado, quais devem ser ignoradas (por no ser um post de blog ou site de notcia) e quais urls ainda precisam ser indexadas. Passo 8: A aplicao web gera novas requisies ao Gearman, desta vez passando uma lista de urls que ele dever indexar (verificar se ela pertence ou no h um blog ou site de notcias, e se um post do mesmo). Gearman aciona seus workers, que realizam a tarefa (que inclui vrias etapas que sero mais bem descritas no prximo diagrama de sequncia), salvam os resultados e retornam informando a concluso. Passo 9: Acontece de forma semelhante ao passo 7, e desta vez a aplicao web consulta no banco de dados quais das urls da lista enviada para indexao foram associadas a um post, recebendo o idPost associado quando for o caso. Passo 10: A aplicao web retorna ao navegador um vetor JSON contendo todos os tweets que recebeu da API do Twitter e acrescentando aos metadados destes a informao de que se referem ou no ao contedo publicado em um blog ou site de nocias, e em caso positivo o idPost associado. Passo 11: O navegador gera ento uma nova requisio AJAX para a aplicao solicitando que lhe envie os dados dos 20 posts publicados mais recentemente na timeline do usurio. Passo 12: A aplicao web consulta o banco de dados (checando antes no cache) para obter as informaes de cada um dos 20 posts (conforme atributos da classe post) e retorna as mesmas para o navegador, formatadas em JSON. Passo 13: O navegador (atravs de um javascript) processa e formata a resposta recebida para exibio ao usurio dentro da interface de Filtrie do contedo filtrado. Passo 14: O usurio ao percorrer a barra de rolagem do navegador chega ao final da lista de 20 posts, ativando um gatilho que reinicia o passo 11, desta vez para obter os 20 posts seguintes.

84

b) A figura 8 apresenta o diagrama de sequncia para o caso de uso Realizar Scrobbling. A seguir descrevemos as etapas deste diagrama.

Figura 8 - Diagrama de Sequncia para Realizar Scrobbling

85

Passo 1: O usurio (operando uma aplicao cliente em background) realiza uma atividade dentro de um website reconhecido pelo software cliente como fonte vlida (blog ou site de notcia). Passo 2: A aplicao cliente envia uma requisio assncrona que no demanda retorno para a aplicao web informando a url da pgina acessada, o tipo de atividade realizada e os cookies de autenticao do usurio. Passo 3: A aplicao web consulta o banco de dados para verificar se a url acessada se refere a um post j indexado. Em caso positivo, segue direto para o passo 12. Passo 4: Caso a resposta no passo 3 seja negativa, a aplicao web envia uma requisio ao servidor Gearman solicitando a indexao do post. Gearman distribui para um de seus workers a tarefa indexar post. Passo 5: O worker executa um algoritmo e consulta o banco de dados para verificar se a url a ser indexada faz parte de um Blog j indexado. Em caso positivo, pula para o passo 8. Passo 6: Caso a resposta no passo 5 seja negativa, o worker obtm o cdigo fonte da url para analisar seu contedo e descobrir o endereo do feed do blog do qual ela faz parte. Passo 7: Os dados obtidos so analisados e extrados para obteno dos atributos necessrios para um objeto da classe Blog. O blog ento indexado no banco de dados. Passo 8: O worker requisita o contedo do feed do blog do qual a url faz parte e extrai dele as informaes de todos os Posts contidos no feed que ainda no foram indexados. Passo 9: Opcionalmente, caso o algoritmo de anlise do feed determine que este no contm o texto completo dos Posts, o worker requisita e anlisa o cdigo fonte de cada um dos posts extrados do feed afim de obter o texto dos mesmos.

86

Passo 10: De posse de todos os atributos necessrios para um objeto da classe post, o worker indexa o mesmo salvando no banco de dados. Passo 11: Um outro algoritmo executado pelo worker para analisar o post e determinar quais palavras-chave devem ser associadas ao mesmo. Ao final da anlise, o worker indexa as Tags salvando-as no banco de dados. O worker informa ao servidor Gearman que completou indexar post, e este acorda a aplicao web informando que a tarefa foi concluda. Passo 12: De posse do idPost associado url indexada, a aplicao web salva no banco de dados as informaes relativas atividade realizada pelo usurio, a qual imediatamente passa a aparecer em seu perfil.

3.4

Projeto de Interface

Para a implementao da verso web de Filtrie, foi pensada uma interface inspirada no design das ferramentas mais conhecidas que fizeram parte da concepo das funcionalidades de Filtrie, tais como o Facebook, Twitter e o Google Reader. Uma vez que milhes de usurios j esto acostumados com estas ferramentas, a utilizao de uma interface que distribui seus elementos de forma semelhante ao destas outras aplicaes ajuda a acelerar a assimilao de suas caractersticas e no aumento da usabilidade. As seguintes divises de elementos podem ser notadas na interface proposta: a) No topo de todas as pginas, temos uma barra de navegao que se extende por todo comprimento da tela e tem uma altura de 55 pixels. Esta barra contm o logotipo da ferramenta, uma caixa de busca e os links para acesso s principais reas da aplicao e a tela de configuraes. b) Na lateral esquerda das pginas existe uma segunda barra de navegao e contedo, de 160 pixels de comprimento e altura fixa de forma a ocupar toda a tela. Esta barra lateral contextual: nas pginas relativas ao perfil de um usurio ela exibe informaes dos mesmos e links para navegao dentro e

87

entre perfis, enquanto em pginas de streams de contedo os links so para os diferentes streams disponveis. c) Na faixa central das pginas, um espao de cerca de 600 pixels de comprimento utilizado para exibio de contedo, seja ela streams de notcias, listas de atividades de um usurio, ou uma notcia que estiver sendo lida. d) Por fim, na lateral direita sempre haver uma barra contextual e no fixa de 220 pixels de largura, utilizada para exibir opes de filtragem (como no caso dos streams de notcias) ou contedos complementares (como os blogs favoritos no caso do perfil de um usurio ou sugestes de posts relacionados na tela de leitura de uma notcia). Adicionalmente, em relao legibilidade, uma vez que uma das principais finalidades da ferramenta a leitura, todo contedo a ser lido, tais como manchetes de notcias e os prprios textos das mesmas, so sempre exibidos com fontes de maior tamanho (em relao s fontes usadas nas barras de navegao, por exemplo), sobre fundo branco e utilizando cores de alto contraste com este, como preto e o azul escuro. Nas pginas seguintes iremos comentar brevemente algumas telas da interface web de Filtrie.

88

Figura 9 - Tela com perfil de usurio A figura 9 mostra a interface de uma pgina contendo o perfil de um usurio. A barra de navegao contextual esquerda utilizada para exibir informaes do usurio e para links que levam s diferentes atividades realizadas pelo mesmo (leituras, comentrios, recomendaes), bem como s conexes dele dentro da rede social (usurios que ele segue e usurios que seguem ele). A rea central da pgina contm uma nuvem de tags que expressa visualmente os assuntos preferidos do usurio (os termos com fonte maior so os de maior interesse) e um stream com a lista de atividades realizadas pelo mesmo em blogs e sites de notcias. Por fim, a barra de navegao direita contm links para os blogs favoritos do usurio, com os mais acessados listados no topo.

89

Figura 10 - Tela do stream filtrado por tpicos

A figura 10 mostra a interface do stream que possibilita a filtragem de notcia por tpicos de interesse. A barra de navegao contextual esquerda contm links para acesso a outros streams, e alguns links para o usurio gerenciar suas informaes e listas de fontes liberadas (whitelist) e bloqueadas (blacklist). A rea central da pgina contm o stream propriamente dito, com indicativos visuais claros da pontuao da notcia e do tpico ao qual ela foi associada. Por fim, a barra de navegao esquerda indica qual a viso atual e inclui links para reordenar e filtrar o contedo exibido na tela.

90

Figura 11 - Tela do stream de filtragem do Twitter

A figura 11 mostra a interface do stream que possibilita a filtragem da timeline de um usurio no Twitter. A barra de navegao contextual esquerda contm links para acesso a outros streams, e alguns links para o usurio gerenciar suas informaes e listas de fontes liberadas (whitelist) e bloqueadas (blacklist). A rea central da pgina contm o stream propriamente dito, com indicativos visuais claros da pontuao da notcia (neste caso, o nmero de retweets) e a qual fonte e usurio do Twitter ela est associada. Por fim, a barra de navegao direita indica qual a viso atual e inclui links para filtrar o contedo exibido na tela.

91

Figura 12 Tela de interface para leitura de uma notcia A figura 12 mostra a interface de leitura padro de uma notcia dentro de filtrie, acessada a partir dos links contidos em um dos streams de filtragem de contedo. O quadro para leitura ocupa toda a tela, com exceo da pequena faixa esquerda que contm a barra de navegao lateral. Na lateral direita do quadro de leitura uma faixa com fundo em cor levemente diferenciada do fundo branco e uma seta apontando para a esquerda indicam que um clique nesta rea abrir uma nova barra lateral direita. No topo direita h um cone para o usurio fechar o quadro de leitura e assim voltar ao stream de origem. Isso tambm acontecer se o usurio apenas rolar a pgina at o final da notcia.

92

Figura 13 - Tela de interface de leitura expandida com recomendaes A figura 13, a exemplo da anterior, mostra a interface de leitura de uma notcia dentro de Filtrie, porm com a barra lateral de contedo direita encontrando-se expandida. Nesta barra so exibidas as palavras chave relacionadas com a notcia em questo, bem como sugestes de posts relacionados com o mesmo assunto que tambm podem ser de interesse de leitura por parte do usurio.

93

Implementao

Neste captulo vamos discutir assuntos relativos parte final deste projeto, que consiste do desenvolvimento e efetiva implementao da aplicao Filtrie em um endereo acessvel pela web. Na seo 4.1 informaremos quais verses e suas funcionalidades conceituadas no captulo 3 foram efetivamente desenvolvidas. Na seo 4.2 iremos discutir a plataforma utilizada nos servidores que executam a aplicao Filtrie, bem como os softwares utilizados para permitir a execuo dos servios necessrios para funcionamento da ferramenta. Na seo 4.3 ser apresentada a arquitetura de servidores proposta para prover a aplicao com vistas a proporcionar alta escabilidade utilizando mquinas comuns. Na seo 4.4 apresentaremos o protocolo e API implementados para possibilitar a comunicao entre aplicaes cliente e a aplicao web Filtrie, com vistas ao scrobbling de atividades. Por fim, na seo 4.5 iremos discutir alguns dos principais algoritmos desenvolvidos para possibilitar a implementao das principais funcionalidades da ferramenta.

4.1

Aplicaes desenvolvidas

Os conceitos e requisitos levantados para Filtrie no captulo 3 propuseram o desenvolvimento de trs tipos de aplicaes para os usurios: uma aplicao web para PCs, aplicaes cliente para scrobbling (plugin para navegadores ou aplicao nativa para sistemas operacionais mveis) e aplicaes otimizadas para dispositivos mveis. Nos paragrfos a seguir, informaremos o qu e quanto do proposto foi efetivamente implementado como parte deste trabalho. Por a considerarmos a principal parte da ferramenta, a aplicao web teve a maior parte das funcionalidades propostas implementadas, o que inclui a interface

94

efetivamente acessvel pelos usurios para consumir notcias e visualizar seus perfis e toda a aplicao de apoio que executada nos servidores de Filtrie e realiza a indexao e classificao de contedo e possibilita o scrobbling por parte dos clientes, por exemplo. Dos casos de uso referentes aplicao web, apresentados na subseo 3.2.2 nos diagramas Perfil do Usurio, Filtragem e Leitura e Indexador, somente no foram desenvolvidos as funcionalides descritas nos casos de uso Acessar Stream Facebook, Acessar Stream por Fontes e Acessar Stream Unificado. Os dois primeiros no foram implementados por entendermos serem de menor grau de inovao e portanto de prioridade, tendo sido deixados para futuras verses. J o stream unificado, apesar de importantssimo, no foi desenvolvido por causa de sua maior complexidade e necessidade de capacidade processamento dos servidores, o que nos levou a optar por tambm deixa-lo para futuras verses. Por outro lado, no foi implementada nenhuma aplicao otimizada para dispositivos mveis. O desenvolvimento de verses nativas nos sistemas IOS ou Android necessitaria do conhecimento de linguagens de programao e SDKs (Software development kit) que ainda no dominamos. Tambm estava prevista uma verso genrica para dispositivos mveis, em HTML5, porm como este seria basicamente um trabalho de design adequando a interface das funcionalidades da aplicao web dos PCs para uma aplicao web para dispositivos mveis, optamos por tambm deixa-la para trabalhos futuros. Por fim, para fins de demonstrao, foi desenvolvido um prottipo de aplicao cliente. Neste caso, trata-se de um plugin compatvel com o navegador Mozilla Firefox at a verso 3.0. Este plugin implementa as funcionalidades descritas no caso de uso Scrobbler. O seu desenvolvimento no ser discutido neste captulo, uma vez que se trata de um cliente simples que se comunica com a aplicao no servidor por meio de um protocolo e de uma API para realizar o scrobbling das atividades de um usurio. Estes, porm, sero discutidos na seo 4.4, o que acreditamos ser o suficiente para transmitir uma boa noo sobre como uma aplicao cliente deve ser implementada.

95

4.2

Plataforma e conjunto de softwares

Por questes econmicas e principalmente de qualidade e desempenho, foram utilizados apenas softwares livres em todo o desenvolvimento e em todas as aplicaes que executam os servios de Filtrie. Como linguagem de programao utilizamos PHP53 e Javascript, este por meio do framework Jquery54. Os servidores web escolhidos foram o Nginx55 e o Apache56. Para armazenamente de dados fizemos uso do MongoDB, Redis e Memcache, alm do German para gerenciar e distribuir tarefas a serem executadas em segundo plano, de forma assncrona ou em paralelo por uma srie de scripts (workers), estes por sua vez monitorados por um servio chamado Supervisord 57. Tais softwares foram instalados numa mquina rodando CentOS58, uma distribuio Linux de classe empresarial, que prioriza a estabilidade e que por isso muito utilizada em servidores de aplicao. A seguir, descrevemos brevemente estes softwares e o motivo de sua escolha. a) PHP: uma linguagem de programao de domnio especfico, ou seja, seu escopo se estende a um campo de atuao que o desenvolvimento web. Possibilita o desenvolvimento de cdigo estruturado e orientado a objeto, e considerada veloz e robusta em comparao a outras linguagens

interpretadas voltadas para a web. Foi escolhida para implementao deste projeto principalmente por ser uma linguagem com a qual j tnhamos familiaridade (facilitada pela sintaxe similar a de C/C++), pela facilidade que traz ao desenvolvimento de aplicaes web dinmicas (proporcionada pelo uso de tipagem e estruturas - vetores e matrizes - dinmicas), alm da grande quantidade de mdulos e bibliotecas de cdigo aberto disponibilizadas pela comunidade de programadores que a utilizam, sendo que boa parte do que foi

53 54

http://www.php.net. http://jquery.com. 55 http://wiki.nginx.org/Main. 56 http://httpd.apache.org. 57 http://supervisord.org. 58 http://www.centos.org.

96

implementado em Filtrie teve seu desenvolvimento acelerado justamente pelo uso de tais bibliotecas. b) jQuery: uma popular biblioteca/framework Javascript desenvolvida para simplificar os scripts que interagem com o HTML de uma aplicao web. A sintaxe do jQuery foi desenvolvida para tornar mais simples a navegao por um documento HTML, a seleo de elementos DOM59 (Document Object Model), criar animaes, manipular eventos e desenvolver aplicaes AJAX. A biblioteca tambm oferece a possibilidade de criao de plugins sobre ela. Fazendo uso de tais facilidades, os desenvolvedores podem criar camadas de abstrao para interaes de mais baixo nvel, simplificando o

desenvolvimento de aplicaes web dinmicas de grande complexidade atravs da resoluo de incompatibilidade entre os navegadores e reduo de cdigo. Ao contrrio do PHP, que executado nos servidores que rodam a aplicao Filtrie, os cdigos desenvolvidos com o uso de jQuery so executados diretamente no navegador do usurio e so utilizados para desenvolver funcionalidades que ajudam a tornar mais agradvel a experincia de uso na camada de apresentao/interface da aplicao web. c) Nginx: um servidor web e proxy reverso livre e de cdigo aberto, que tem como principais caractersticas a alta performance, estabilidade, um rico conjunto de funcionalidades de simples configurao e um baixo consumo de recursos computacionais. Para isso, ao invs do uso de threads para lidar com as requisies que recebe, Nginx utiliza uma arquitetura baseada em eventos (assncrona), considerada mais escalvel por fazer pouco e previsvel uso de memria mesmo em condies de uso intenso. Por conta dessas caractersticas, escolhemos este software para ser o servidor web a responder s requisies feitas pelos usurios de Filtrie, servindo diretamente todo o contedo esttico (como imagens, folhas de estilo e scripts em jQuery) e atuando como proxy reverso (com possibilidade de realizar balanceamento de carga) frente do Apache, do qual recebe o cdigo HTML (resultado do

59

DOM uma especificao da W3C, independente de plataforma e linguagem, onde se pode dinamicamente alterar e editar a estrutura, contedo e estilo de um documento eletrnico, permitindo que o mesmo seja mais tarde processado e os resultados desse processamento, incorporados de volta no prprio.

97

processamento dinmico de cdigo em PHP) a ser servido ao navegador do usurio. d) Apache: assim como o Nginx, tambm um servidor web livre e de cdigo aberto, que suporta uma grande variedade de funcionalidades, muitas delas implementadas como mdulos compilados que extendem as funcionalidades principais. Apesar de o objetivo principal no design do Apache no ser o maior desempenho possvel, ele similar a de outros servidores considerados mais rpidos. Sua arquitetura permite aos administradores de sistema a opo de execut-lo em trs diferentes modos, de acordo com as demandas particulares de cada um: baseado em processos, baseado em processos e threads (hbrido) ou baseado em processos e eventos. Escolhemos o Apache como servidor web de contedo dinmico de Filtrie pois seu mdulo para interpretao de cdigo em PHP (mod_php) reconhecidamente o mtodo mais provado e estvel para execuo de scripts desenvolvidos nesta linguagem. e) MongoDB: um banco de dados no-relacional (NoSQL60) de cdigo livre, escalvel e de alta-performance que tem como principal caracterstica o armazenamento de dados arquitetatos como documentos (de sintaxe semelhante notao JSON) e o uso de esquemas dinmicos, permitindo a modelagem de informaes de modo mais natural uma vez que os dados podem ser aninhados em complexas hierarquias e continuar a ser indexveis e fceis de buscar ou atualizar. Em Filtrie, o MongoDB utilizado para o armazenamento de todas as informaes que necessitam de persistncia por tempo indeterminado. A classe de dados que ocupa mais espao na aplicao (um post) usa em mdia 3 kbytes quando armazenada no banco (j incluindo o overhead do MongoDB, metadados e o texto compactado da notcia). Considerando que o nmero de notcias a serem indexadas por dia
60

NoSQL um um termo genrico para uma classe definida de banco de dados no-relacionais que rompe uma longa histria de banco de dados relacionais com propriedades ACID (Atomicidade, Consistncia, Isolamento e Durabilidade. Bancos NoSQL no podem exigir esquemas de tabela fixa, geralmente no suportam instrues e operaes de juno SQL e foram criados com o intuito de oferecer uma alternativa aos bancos relacionais como forma de atender crescente tendncia de necessidade de escabalidade horizontal por sistemas de computao em nuvem e aplicaes web com grande nmero de usurios e alto volume de dados a serem processados em tempo real.

98

no sistema em produo pode chegar rapidamente a mais de um milho, teremos um volume de dados armazenados crescendo diariamente ordem de 109 bytes (gigabytes). Esta necessidade por si s, somada ao fato de que servidores de bancos de dados se beneficiam muito do uso de discos SSD 61 (solid-state drive), configura um cenrio em que o banco de dados a ser utilizado precisa prover escalabilidade horizontal. Desta forma, a escolha de MongoDB foi influenciada principalmente pelas funcionalidades de autosharding62 e as duas diferentes arquiteturas de replicao que este banco proporciona. Alm disso, o modelo orientado a documentos permite o armazenamento direto no banco dos tipos de dados e objetos utilizados no cdigo da aplicao, o que se mostrou um facilitador no desenvolvimento da aplicao uma vez que elimina a necessidade de mapeamentos objetorelacional. f) Redis: um banco de cdigo livre do tipo chave-valor, definido tambm como um servidor de estruturas de dados. Cada dado armazenado associado a uma chave, e cada chave pode armazenar tipos de dados como strings, hashes, listas, conjuntos ou conjuntos ordenados. Redis tambm prov mecanismos para implementar o paradigma publisher-subscriber de troca de mensagens. Uma vez que o banco mantm todos os dados em memria e faz uso muito eficiente da CPU, sua performance altssima. Alm disso, possvel gravar em disco o conjunto de dados fazendo um dump de tempos em tempos (configurvel) ou anexando cada comando a um arquivo de log, que lido do disco e executado para carregar os dados novamente na memria em caso de falha no servidor. O banco tambm suporta replicao no esquema mestre-escravo63. Por conta destas caractersticas, Redis ideal para caching ou para armazenar dados agregados que possam ser

61

SSD um tipo de disco rgido que no contm partes mveis e usado para o armazenamento permanente de dados digitais. 62 Em bancos de dados, sharding um padro de design para particionamento horizontal de dados no qual as linhas de uma tabela so mantidas separadamente. Cada shard (partio) pode estar localizado em diferentes servidores ou at mesmo diferentes datacenters. 63 Numa arquitetura de servidores configurados para realizar replicao mestre-escravo, uma aplicao cliente conecta-se ao mestre sempre que quiser escrever dados. O mestre ento ir sincronizar as atualizaes com ou ou mais escravos de forma assncrona e sem bloquear. Para ler dados, a aplicao cliente pode se conectar diretamente aos clientes. Este esquema utilizado tanto para prover escalabilidade quanto redundncia.

99

recalculados a partir de outra fonte em caso de perda de informaes se o servidor sofrer perda de energia entre um e outro dump do conjunto de dados que estiver em memria para o disco. Uma vez que seria preciso gerar novamente apenas os dados mais recentes, o grande desempenho obtido compensa o tempo necessrio para reconstruir os mesmos em espordicos cenrios de perda de energia. Em Filtrie, utilizamos Redis principalmente para armazenar listas e conjuntos de dados necessrios para implementao de funcionalidades como o stream de filtragem por tpicos e o stream social. g) Memcache: tambm um banco de cdigo livre do tipo chave-valor, porm ao contrrio de Redis s possvel associar s chaves uma string ou um nmero (inteiro ou de ponto flutuante) e no h opo para armazenamento dos dados em disco, o que faz dele um servidor de cache com armazenamento unicamente em memria e por consequncia de alta performance. Uma caracterstica importante de Memcache a possibilidade de distribuir os dados em diferentes mquinas (permitindo assim

escalabilidade horizontal) sem necessidade de um servidor mestre. No protocolo utilizado para comunicao entre uma aplicao cliente e um conjunto de servidores executando memcache definido que os servidores no se conhecem nem se comunicam, cabendo ao cliente manter uma lista com os endereos dos servidores disponveis. De forma anloga, a definio sobre qual servidor dever conter determinada chave que um cliente necessita ler ou escrever no cache feita pelo mesmo atravs de um algoritmo de hashing. A quantidade de memria que uma instncia de memcache tem sua disposio pode ser determinada pelo administrador do sistema, e uma vez que o limite de memria atingido, a escrita de novos dados acontece aps a remoo de uma ou mais chaves antigas, determinadas por um algoritmo LRU (Least Recently Used). Em Filtrie, instncias de memcache so utilizadas para fazer caching de praticamente todas as classes mais importantes que so persistidas no MongoDB e que so consultadas com grande frequncia e em alto nmero de requisies por parte da aplicao web. Alm disso, tambm o utilizamos para armazenar dados volteis como sesses de usurios e tokens temporrios para acesso a APIs externas.

100

h) Gearman: um framework de cdigo livre criado com o intuito de possibilitar a distribuio de tarefas computacionais entre mltiplos computadores. Seu nome um acrnimo de manager (gerente, em ingls), indicando que distribui tarefas, mas no faz nenhuma parte do trabalho propriamente dito. Um servidor Gearman basicamente um servidor de filas que disponibiliza uma API para que aplicaes possam se conectar e enviar requisies. Uma aplicao que se conecta a Gearman pode ser um worker (trabalhador) que informa o nome de uma ou mais tarefas que ele consegue executar, ou um cliente, que solicita que uma determinada tarefa seja executada e especifica a prioridade dela, se ela ser realizada de forma sncrona ou assncrona e se precisa que ela seja processada em paralelo com outras tarefas que submeter em seguida. O servidor de Gearman mantm trs filas de prioridades diferentes, somente consumindo as de menor prioridade quando a mais prioritria estiver vazia, sendo o round robin o tipo de agendamento utilizado. Tambm mantm uma lista de workers conectados e quais funes cada um oferecem, distribuindo entre os disponveis as tarefas que recebe dos clientes e informando a estes o resultado ou concluso do trabalho solicitado. Em Filtrie, utilizamos Gearman para tarefas que podem ser realizadas de forma assncrona em relao aplicao web (como a indexao de blogs e posts) e para acelerar atravs do processamento paralelo a execuo de funcionalidades da aplicao web (como o stream de filtragem do Twitter) que necessitam fazer muitas requisies a fontes ou APIs externas antes de exibir algum contedo para o usurio. i) Supervisord: um sistema cliente/servidor, inicializado durante o processo de boot, que permite o monitoramente e controle de processos em sistemas UNIX. Com Supervisord possvel configurar um computador para que inicie aps o boot quantas instncias de um processo um usurio quiser, e a partir da a aplicao assume o monitoramento destes processos, reiniciando-os automaticamente caso sejam terminados de forma anormal e mantendo arquivos de log relacionados aos mesmos. Em Filtrie, o uso desta ferramenta associado Gearman, pois atravs do supervisord que so mantidos em execuo os scripts php (workers) que se registram no servidor de Gearman para oferecerem as tarefas que podem realizar.

101

4.3

Arquitetura de servidores

Conforme j observamos em sees anteriores, a disponibilizao de Filtrie em produo na web exigiria a indexao de grandes volumes de dados. Supondo ainda que a ferramenta em produo alcance um nmero significativo de usurios (acima de um milho, por exemplo), teramos tambm um cenrio em que realizado um grande volume de requisies aos servidores da aplicao. Neste cenrio, para conseguir prover acesso ferramenta com qualidade e tempo de resposta adequados, implementamos o cdigo fonte e escolhemos os softwares que executam os servios de Filtrie de modo a utilizar uma arquitetura multi-servidor, com diferentes classes de mquinas provendo os diferentes tipos de servios, e que possibilite a implementao rpida de novos ns com a finalidade de obter alta escalabilidade horizontal para atender possveis aumentos de demanda. Para este trabalho o esquema de servidores projetado foi parcialmente

implementado (utilizando uma mquina) apenas para fins demonstrao da ferramenta. Porm, no imaginado cenrio de disponibilizao da mesma em produo, e ainda que estejam disponveis os recursos econmicos necessrios, esta arquitetura poderia ser rapidamente implementada utilizando datacenters que provm aluguel de recursos computacionais e infraestrutura de rede sob-demanda. A figura 14 mostra em detalhes o funcionamento desta arquitetura:

102

Figura 14 - Arquitetura Escalvel de Servidores Como possvel visualizar na figura, a arquitetura proposta divide os servidores em cinco grupos diferentes: load balancer, servidores de proxy e contedo esttico, servidores de aplicao e distribuio de tarefas, servidores de cache e execuo de tarefas e servidores de banco de dados. Esta diviso foi feita com vistas a alcanar dois objetivos principais:

103

a) Facilitar a identificao de gargalos e minimizar o efeito de falhas: com cada classe de servios demandados pela aplicao rodando em mquinas diferentes fcil identificar qual deles no estiver conseguindo atender satisfatoriamente as requisies feitas e a partir disso programar otimizaes no cdigo ou nos servidores, ou ento adicionar novos ns ao grupo. Alm disso, caso uma das mquinas de um dos grupos falhe, o efeito global desta falha na aplicao menor do que se s tivssemos vrios ns rodando todas as classes de servios simultaneamente. b) Aperfeioar e melhor utilizar os recursos computacionais de cada mquina: os softwares utilizados para servir a aplicao web, os sistemas de cache ou sistemas de bancos de dados tm demandas de uso bem diferentes em relao aos quatro principais recursos computacionais de uma mquina: cpu, memria RAM, disco e rede. O agrupamento proposto ora coloca nas mesmas mquinas servios que fazem maior uso de um tipo de recurso e uso minimizado de outros (de modo a maximizar a utilizao de todos os recursos), ora separa determinado servio em mquinas dedicadas, de modo a possibilitar que estas sejam configuradas de forma a otimizar e maximizar o desempenho do sistema. Com estes objetivos em mente, a seguir iremos explicar e justificar os agrupamentos realizados, e sugerir possveis otimizaes de hardware que as mquinas de um grupo deveriam utilizar: a) Load Balancer: o balanceador de carga a mquina cujo endereo IP fica associado ao endereo web da aplicao Filtrie nos registros de DNS (Domain Name Servers). Toda requisio feita a uma pgina do site passa por esta mquina, que por sua vez ir redirecionar o usurio para o IP de uma outra mquina que estiver executando um servidor web. Quando se usa um load balancer, existe mais de uma mquina disponvel para receber essa requisio redirecionada, e o papel dele escolher, normalmente por meio de um algoritmo round robin, para qual dessas mquinas a requisio ser encaminhada. Num website com grande nmero de acessos e diversos servidores web disponveis, o objetivo deste mtodo fazer com que as requisies sejam igualmente distribudas entre estas mquinas que iro

104

servir o contedo ao usurio. Por manter cada conexo aberta por pouco tempo (j que as requisies so redirecionadas), um load balancer normalmente consiste de uma nica mquina, com capacidade de CPU e memria proporcionais ao nmero de requisies que precisar responder, podendo assim ser escalado verticalmente. Inicialmente possvel utilizar uma mquina comum rodando Linux com processador e quantidade de memria no muito distintos dos que usamos em casa (exemplo: um quad core de 2mhz com 4 GB de memria RAM), porm conforme seja necessrio pode-se contar solues mais robustas com mquinas especficas para este fim, o que normalmente oferecido pelos principais datacenters que alugam recursos computacionais para uso na web. Alm disso, pelo fato de este ser um n por onde passa todo o trfego de uma aplicao web, prudente manter uma mquina de backup para assumir o redirecionamento das requisies caso o load balancer principal falhe. Uma alternativa mais simples a este tipo de mquina seria o balanceamento de carga por DNS, onde as requisies seriam redirecionadas diretamente para o conjunto de servidores web disponvel, eliminando a necessidade do load balancer. Porm, devido ao fato de que muitos provedores mantm em cache os registros DNS, esta tcnica pode no produzir distribuio igualatria de carga. b) Servidores de Proxy / Esttico: este grupo de mquinas executa exclusivamente o servidor web Nginx, que ao receber uma requisio encaminhada pelo load balancer ir analisar a url que est sendo solicitada e por meio de uma expresso regular verificar se o contedo a ser retornado esttico (imagens, arquivos javascript ou de folhas de estilo css) ou dinmico (gerado pela aplicao PHP). No caso de contedo esttico, o prprio Nginx ir retorn-lo diretamente para o usurio, uma vez que todos os arquivos deste tipo utilizado em Filtrie ficaro armazenados em disco nestas mquinas. No caso de contedo dinmico, o Nginx ir atuar como proxy reverso, passando a requisio para uma das mquinas executando os servidores de aplicao e retornando a pgina html ao usurio uma vez que receber a resposta. Neste cenrio, cada servidor deste grupo atuar tambm como um tipo de load balancer frente do grupo de servidores seguinte, uma vez que as requisies por contedo dinmico sero redirecionadas pelo Nginx

105

tambm seguindo um algoritmo round robin. Em relao ao hardware, uma vez que o Nginx utiliza pouca memria e cpu (com 1 Mhz e 2 GB de Ram pode servir cerca de 4kb para cerca de 20 mil clientes por segundo), e ainda que a quantidade e tamanho em disco dos arquivos estticos utilizados em Filtrie muito pequena (menos de 100mb), vivel utilizar servidores rodando em mquinas virtuais64 que podem ser instantaneamente escaladas verticalmente conforme necessidade e posteriormente escalar

horizontalmente. Estes servidores, porm, faro o maior uso de rede dentre todos os grupos, uma vez que todo o contedo servido ao usurio passar por eles. Assim, para que o servidor web Nginx tenha toda a banda da mquina disponvel para ele, optamos por no executar nenhum outro servio neste tipo de mquina. c) Servidores de aplicao e distribuio de tarefas: este grupo de mquinas roda o servidor web Apache, que processa via seu mod_php todo o cdigo php que faz funcionar a aplicao web Filtrie e repassa as respostas ao servidor Nginx. Tambm inclumos o servidor Gearman, que recebe requisies diretamente da aplicao processada via Apache ou tambm de scripts executados diretamente pelo interpretador php do Linux, que so acionados atravs do Cron65. Os servidores Gearman e o processo cron

fazem uso irrelevante de cpu, memria e disco, j que so apenas gerenciadores de tarefas. J o servidor web Apache executando aplicaes php requer bastante memria (cada processo pode ocupar at 50 MB) e cpu (uma vez que trata-se de uma linguagem interpretada), porm pouco utiliza o disco (caso a aplicao php no esteja fazendo ela prpria operaes de leitura/escrita de arquivos em disco, o que algo que no acontece em
64

Como atualmente o padro do mercado so cpus com pelo menos dois ncleos e o custo da memria RAM cada vez menor, para atender clientes que tem demandas menores, os datacenters que alugam recursos computacionais optam por pegar uma mquina fsica com processadores poderosos e muita memria RAM e instalar diversas mquinas virtuais nela, possibilitando assim alugar seus recursos para diferentes clientes, que compartilham a mquina, mas tem acesso seguro e garantia de disponibilidade a X MHZ de processamento e X MB de memria RAM em seu servidor virtual. Sabendo que o acesso ao disco o recurso mais lento em um computador, o uso de aplicaes que demandam garantia de velocidade de escrita/leitura de dados em disco no recomendado neste tipo de servidor, uma vez que o acesso ao mesmo compartilhado. 65 Cron um agendador baseado em tempo disponvel em sistemas operacionais UNIX-like. Permite que usurios agendem tarefas (commandos ou shell scripts) para serem executadas periodicamente em determinados dias ou horrios.

106

Filtrie). Desta forma, vivel utilizar tanto mquinas virtuais quanto servidores com hardware dedicado, porm com discos comuns (como os SATA II utilizados em computadores pessoais) e capacidade de processamento e memria certamente em maior quantidade que nos servidores executando Nginx. O uso da banda da rede no se iguala ao do grupo anterior, porm tambm alto j que Apache recebe dados dos servidores de cache e de banco de dados, e envia dados ao servidor Nginx. A escalabilidade horizontal neste grupo facilmente obtida com a adio de ns e no caso de se usar mquinas virtuais pode ser possvel tambm escalar verticalmente. d) Servidores de cache e tarefas: nestes servidores so agrupados os dois sistemas de cache, Memcache e Redis, e os scripts workers que realizam tarefas via Gearman. Os dois servidores de cache se beneficiam com o uso de bastante memria e consomem poucos recursos da cpu. Redis faz uso de disco, mas a intensidade pode ser configurvel. O uso de rede menor do que nos servidores web. J os workers (que so scripts executando via interpretador php e acionados pelo supervisord) utilizam pouca memria (cerca de 20MB por processo) e fazem uso intenso da CPU e rede (pois muitos dele fazem as tarefas de indexar contedo de blogs). Assim, entendemos que o agrupamento destes trs servios numa nica mquina maximiza a utilizao de todos os seus recursos computacionais. Memcache e os workers Gearman escalam horizontalmente de forma automtica, enquanto Redis, por no ter uma arquitetura distribuda como a de Memcache, pode se beneficiar da adio de ns atravs do sharding via aplicao (php) ou do uso de replicao mestre-escravo, onde cada novo n seria um escravo disponvel para consultas por parte da aplicao web. Em relao ao hardware, por exigir uso de todos os recursos computacionais, prefervel o uso de mquinas dedicadas com processadores velozes e tanta memria quanto for necessria para manter a maior quantidade de informaes possveis em cache. e) Servidores de banco de dados: nesta classe so executados

exclusivamente o servidor de dados MongoDB. Este tipo de aplicao se beneficia de discos e cpu de alta performance, e recomendvel se usar tanta memria quanto for necessrio para se manter em cache os dados mais

107

acessados pela aplicao. A arquitetura que propomos para conseguir fcil escalabilidade horizontal, alto desempenho e confiabilidade com o MongoDB utiliza shards criadas em mquinas operando em modo replica-set66. Desta forma, servidores MongoDB devero sempre ser adicionados em pares, que faro parte de um replica-set e contero uma partio (shard). Quando for necessrio escalar horizontalmente, um novo par adicionado ao grupo de servidores tambm em modo replica-set e o MongoDB se encarregar de criar uma nova partio neles e transferir os dados necessrios para a mesma. Em relao ao hardware, o ideal o uso mquinas dedicadas com processadores de quatro a oito ncleos, discos SSD e tanta memria quanto for economicamente vivel.

4.4

Protocolos de comunicao e API para clientes

Uma das caractersticas principais de Filtrie a possibilidade de que aplicaes cliente, sendo executadas em diferentes sistemas onde um usurio consome contedo, enviem para a aplicao web informaes sobre as atividades realizadas por estes usurios em blogs ou sites de notcias, ao esta que foi definida como scrobbling. A implementao destes clientes no foi includa neste trabalho, porm uma possvel especificao de suas funcionalidades j foi apresentada no caso de uso Scrobbler (figura 3). Para que qualquer desses clientes possa enviar e receber informaes para a aplicao web de Filtrie, necessria a existncia de um protocolo para comunicao entre estas partes e uma API qual a aplicao cliente ir enviar requisies para enviar e receber informaes.

66

Enquanto no comum modelo de replicao mestre-escravo a falha do mestre compromete tambm o escravo, no esquema de replica-sets oferecido pelo mongodb, o papel de servidor no mestre no fixo: se este falhar, um servidor que estiver atuando como escravo na replicao assumir o papel de mestre para receber as escritas da aplicao, e quanto o antigo mestre religado ele passa a ser um escravo e se conecta ao novo mestre para sincronizar o contedo.

108

A implementao deste protocolo e da API foi feita seguindo a filosofia REST67 (REpresentational State Transfer), de modo a possibilitar que clientes desenvolvidos nas mais diferentes linguagens possam se comunicar facilmente com a aplicao web. Nas duas subsees seguintes iremos detalhar a especificao dos mesmos.

4.4.1 Especificao do protocolo

O protocolo entre aplicao cliente e servidor de Filtrie bem simples e estabelece algumas poucas regras para organizar a comunicao entre as partes: a) Todas as requisies devem ser feitas via HTTP. b) Os mtodos GET (para receber dados) e POST (para enviar dados) so os nicos tipos de requisio possveis. Outros mtodos previstos no protocolo HTTP, como PUT e DELETE, no so utilizados. c) As requisies devem ser feitas pelo cliente de forma assncrona. d) Se o servidor no responder a uma requisio dentro de 30 segundos, o cliente deve reenvia-la e dobrar o tempo de timeout (para 60 segundos, depois 2 minutos, depois 4 minutos e assim por diante) a ser atingido antes de tentar um novo envio. e) Todo o contedo associado a uma varivel POST enviado por um cliente para o servidor e que no for um inteiro ou string dever ser codificado em JSON. f) Todo o contedo que um cliente solicitar por meio de uma requisio GET ser fornecido pelo servidor codificado em JSON, caso no seja um inteiro ou string. g) Todas as respostas do servidor, alm do cabealho padro HTTP, contero em seu contedo um cdigo de status. Caso exista contedo a ser retornado,
67

Estilo de arquitetura de software para sistemas distribudos como a prpria web. Graas a sua adoo por grandes empresas do meio como o Google, Facebook e Twitter, REST emergiu ao longo dos ltimos anos como o modelo predominante de design para servios web, substituindo outros modelos como SOAP e WSDL graas sua simplicidade.

109

o cdigo ser seguido de uma quebra de linha (\n) e da string, inteiro ou string JSON, conforme aplicvel. h) O acesso a alguns recursos limitado a usurios autenticados. Caso um cliente solicite acesso a um recurso restrito sem apresentar credenciais de identificao, o servidor ir responder com um cdigo de status solicitando autenticao. i) Credenciais de identificao devem ser includas pelos clientes no cabealho HTTP da requisio, na seo de cookies. Os possveis cdigos de status (mencionados no item g acima) so: 200: Indica o sucesso da requisio. 400: Indica que a requisio foi mal formatada (continha algum dado, como uma url, que no passou nos critrios de validao da aplicao) e no deve ser reenviada. 403: Indica acesso no permitido a um recurso que necessita de autenticao. O cliente deve reenviar a requisio contendo credenciais de identificao. 404: Indica que no h nada a ser retornado para solicitao GET do cliente que espera contedo na resposta. 500: Indica que a requisio invlida (no usou mtodo POST ou GET, ou no incluiu uma varivel necessria).

4.4.2 Especificao da API

A API de Filtrie pode foi implementada na URI base http://scrobbler.filtrie.com. O acesso a um servio/recurso disponibilizado pela API pode ser feito concatenando a URI base com o nome do recurso. A seguir detalhamos quais os recursos disponveis, sua funo e quais dados devem ser enviados como entrada e as respostas esperadas:

110

a) Nome do recurso: encryptme.php Descrio: este recurso recebe uma senha em formato de texto e a criptografa utilizando o mtodo implementado para tal na aplicao web. Requer autenticao: sim Mtodo de acesso: POST Variveis recebidas: pw (senha) Contedo retornado: cdigo de status, \n, string da senha encriptada.

b) Nome do recurso: logerror.php Descrio: recebe mensagens de erros registrados em uma aplicao cliente e os armazena no banco de dados, para fins de depurao futura. Requer autenticao: sim Mtodo de acesso: POST Variveis recebidas: log (JSON contendo os atributos date, level e msg relativos ao erro encontrado) Contedo retornado: cdigo de status.

c) Nome do recurso: scrobbler.php Descrio: recebe registros das atividades realizadas por um usurio em blogs ou sites de notcias e os associa ao perfil do mesmo se aplicvel. Requer autenticao: sim Mtodo de acesso: POST Variveis recebidas: scrobbledata (lista em JSON de um ou mais objetos, cada um deles relativo a uma atividade realizada pelo usurio. Os atributos do objeto so postUrl, scrobbleType e scrobbleSubType)

111

Contedo retornado: cdigo de status, \n, string com hash da lista de fontes ignoradas (blacklist), \n, string com hash da lista de fontes adicionadas (whitelist). O cliente pode comparar esses hashes com os que j mantiver armazenado e detectar se o usurio alterou essas listas atravs de outra aplicao e com isso solicitar a lista atualizada via API.

d) Nome do recurso: updateme.php Descrio: atravs deste recurso a aplicao cliente solicita a lista atualizada de regras para reconhecimento de uma pgina como sendo parte de um blog. Requer autenticao: sim Mtodo de acesso: POST Variveis recebidas: hash (string contendo um hash md5 da lista de regras, formatadas em JSON, que o cliente j contm) Contedo retornado: cdigo de status, \n, lista de regras formatadas em JSON (somente se for diferente da lista j contida pelo cliente) e) Nome do recurso: updatemeadd.php Descrio: este recurso retorna um Bloom Filter68 que ajuda a determinar se faz parte de um blog uma pgina que no se encaixa em nenhuma das regras de reconhecimento retornadas pelo recurso anterior. Requer autenticao: sim Mtodo de acesso: POST Variveis recebidas: hash (string contendo um hash md5 do nmero de entradas do Bloom Filter que o cliente j contm) Contedo retornado: cdigo de status, \n, Bloom Filter formatado em JSON (somente se diferente do j contido pelo cliente).

68

Estrutura de dados probabilstica e que demanda pouco espao de armazenamento, utilizada para testar se um dado elemento membro de um conjunto. Falso positivos so possveis, porm falso negativos no so.

112

f) Nome do recurso: updateprefs.php Descrio: este recurso possibilita ao cliente adicionar uma entrada lista de fontes reconhecidas (whitelist) ou bloqueadas (blocklist) por um usurio. Requer autenticao: sim Mtodo de acesso: POST Variveis recebidas: ignoredBlog, ou addedBlog, ou undoIgnoredBlog, ou undoAddedBlog (contedo de qualquer uma das variveis deve ser uma url) Contedo retornado: cdigo de status, \n, hash atualizado da lista de fontes que foi alterada (whitelist ou blocklist).

g) Nome do recurso: updateprefs.php Descrio: mesmo recurso anterior, porm se consultado atravs de um mtodo diferente (GET), retorna a lista de fontes adicionadas ou bloqueadas pelo usurio. Requer autenticao: sim Mtodo de acesso: GET Variveis recebidas: MyAddedBlogs ou MyIgnoredBlogs Contedo retornado: cdigo de status, \n, lista de urls formatadas em JSON das fontes que fazem parte lista solicitada, \n, hash atualizado da lista de fontes solicitada.

h) Nome do recurso: userinfo.php Descrio: este recurso possibilita a consulta a dados associados ao perfil de um usurio

113

Requer autenticao: sim Mtodo de acesso: POST Variveis recebidas: uinfo (valor booleano true). Contedo retornado: cdigo de status, \n, objeto formatado em JSON contendo os atributos login (apelido do usurio), url (site do usurio), name (nome real do usurio) e avatar (url da foto de perfil do usurio).

4.4.3 Exemplo de uso

Para exemplificar a comunicao de um cliente com a API especificada na subseo anterior, o diagrama da figura 15 mostra as informaes trocadas entre as partes em uma interao hipottica:

Figura 15 - Exemplo de uso da API

Na interao exibida na figura, o cliente envia para o API um POST informando que seu usurio realizou uma atividade (ScrobbleType = 1 e ScrobbleSubType = 0, o que equivale a uma leitura) na pgina http://www.umblog.com.br/umpost.html. A API

114

responde informando que os dados foram recebidos e estavam formatados corretamente, e informa os dois hashs 79054025255fb1a26e4bc422aef54eb4 e d41d8cd98f00b204e9800998ecf8427e correspondentes respectivamente s listas de fontes ignoradas e reconhecidas. Aps esta primeira interao, o cliente ir comparar os hashs recebidos e verificar que o primeiro difere do hash que ele mantm relativo lista de fontes ignoradas, o que significa que esta lista foi alterada pelo usurio utilizando outro cliente ou a prpria aplicao web. O cliente faz ento uma segunda requisio API, desta vez um GET informando (ao passar a varivel MyIgnoredBlogs = True) que seja receber a lista de fontes ignoradas, no que a API responde informando o cdigo de status, seguido do hash atual e da lista atualizada com as urls das fontes ignoradas: http://blog1.com, http://blog2.com, http://blog3.com.

4.5

Principais algoritmos desenvolvidos

No processo de desenvolvimento de Filtrie, grande parte do cdigo implementado beneficiou-se do uso da biblioteca oficial da linguagem PHP e de diversas bibliotecas e classes de cdigo aberto disponibilizadas pela comunidade. Porm, para desenvolver algumas funcionalidades e caractersticas fundamentais da ferramenta, foi preciso estudar as solues possveis, levando criao de alguns algoritmos e adaptao de outros j existentes. Nas subsees seguintes iremos discutir alguns desses problemas e algoritmos mais relevantes em nosso trabalho:

4.5.1 Determinao de blogs e sites de notcias

Um dos problemas mais importantes que precisamos resolver para a implementao do scrobbling em Filtrie o de determinar se uma dada pgina da internet a) faz parte de um blog ou site de notcia; e b) em caso positivo se tal pgina contm de fato um post.

115

Trata-se de um problema complexo, para o qual no encontramos um algoritmo que fornecesse soluo perfeita em todos os casos. Passamos a investigar ento possveis solues timas, e cogitamos duas possibilidades: montar um banco de dados com os endereos do maior nmero possvel de blogs e sites de notcias conhecidos ou determinar estes sob demanda atravs da anlise de padres no cdigo fonte e url das pginas acessadas por usurios da ferramenta.

A primeira alternativa dependeria do uso de bancos de dados de terceiros j existentes, porm como estes no so abertos, seria preciso fazer scrapping69 de dados de ferramentas comerciais. Alm disso, para obter melhores resultados com o algoritmo seria preciso um grande nmero de registros neste banco, aumentando o custo computacional para prov-lo mesmo que a ferramenta tenha poucos usurios, e inviabilizando a incluso deste algoritmo no cdigo de aplicaes cliente.

J a segunda alternativa se mostrou vivel quando aplicada a blogs: os gratuitos esto concentrados em ferramentas bem conhecidas e hospedados sob os domnios web destas (como o blogger.com), enquanto os blogs de pessoas e organizaes que tem hospedagem prpria frequentemente fazem uso de um CMS70 (Content Management Systems), o que permite identifica-los atravs de metatags71 presentes no cdigo fonte.

Por fim, a soluo a que chegamos consistiu de um algoritmo heurstico que mescla as duas alternativas: um banco de dados com as urls de sites de notcias foi montado a partir de scrapping do Google News, e um conjunto de padres a serem contidos nas urls ou em metatags como generator, icon e stylesheet foi especificado como mtodo para identificar se uma pgina de um blog.

69 70

Tcnica que usa um software para automaticamente coletar/extrair informaes de pginas web. Sistema que integra ferramentas necessrias para criar e gerir (inserir e editar) contedos em tempo real sem a necessidade de programao de cdigo, cujo objetivo estruturar e facilitar a criao, administrao, distribuio, publicao e disponibilidade da infomao. Para publicao de blogs, o CMS mais conhecido o Wordpress. 71 Linhas de cdigo HTML ou "etiquetas" que, entre outras coisas, descrevem o contedo de um site para os buscadores.

116

Alm de corresponder a uma entrada do banco de dados ou a um dos padres estabelecidos, para ser considerado uma fonte vlida um site precisa ter um feed (que deve estar referenciado na pgina inicial do site e/ou nas pginas de todos os posts), e todas as urls deste feed devem seguir um mesmo padro e apontar para um mesmo domnio. Por fim, para que uma pgina de um site reconhecido como blog ou site de notcia seja considerada um post preciso que sua url esteja contida no feed da fonte no momento da indexao ou que sua url siga o padro definido como o aceito para urls de posts daquela fonte, conforme hash que inferido na primeira indexao do feed da fonte.

Uma verso simplificada (no inclui as consultas a caches, por exemplo) do algoritmo, descrita numa pseudo linguagem, apresentada a seguir:

117

Tabela 1 - Algoritmo para identificar blogs e sites de notcias

Este algoritmo implementado suficientemente simples para ser includo tanto nas aplicaes servidor quanto cliente e, mais importante no caso de aplicaes cliente, tem um banco de dados que requer pouco espao, graas ao uso de um BloomFilter para determinar se uma url faz parte de um site de notcia : um filtro que contenha 10 mil elementos indexados e permita taxa de falso positivos de 0.1% ocupa apenas cerca de 300 kbytes.

Em relao efetividade do algoritmo, para determinar seu grau de sucesso aplicamos o mesmo a mil endereos reconhecidos de blogs, extrados

118

aleatoriamente do diretrio do site Technorati72, obtendo um resultado de 95% destes sites sendo reconhecidos como blogs atravs de nosso mtodo. Quanto aos sites de notcias a efetividade no pde ser aferida uma vez que o reconhecimento destes feito atravs de um banco de dados. Porm, como a base utilizada para compor o conjunto de urls de sites de notcias baseou-se nas fontes do GoogleNews, temos a segurana de que as principais e mais relevantes fontes podero ser detectadas por este mtodo.

Por fim, uma vez que este algoritmo no reconhece um percentual no desprezvel de fontes vlidas, adicionamos ferramenta a possibilidade de os prprios usurios adicionarem atravs da funcionalidade de whitelist fontes que eles reconhecerem como sendo um blog ou site de notcias vlido, mas que no tenham sido detectadas por nosso mtodo.

4.5.2 Extrao de textos dos posts

Outro problema importante a ser resolvido no desenvolvimento de Filtrie foi o de extrair o texto completo dos posts indexados, uma vez que uma das principais propostas da ferramenta a de permitir a leitura do contedo desejado diretamente na interface web da aplicao, sem precisar visitar o site da fonte.

Existem duas formas possveis para a extrao deste contedo: atravs do prprio feed da fonte ou atravs do cdigo fonte da pgina onde o mesmo foi publicado. Extrair o contedo do feed o meio mais simples e direto. Por serem disponibilizados em linguagem de marcao (XML), basta recuperar os dados contidos nas tags que delimitam o contedo associado a uma entrada. O padro em feeds RSS utilizar a tag <description> para um resumo da entrada e a tag <content> caso deseje-se disponibilizar todo o contedo. J em feeds ATOM as respectivas tags so <summary> e <content>.

No momento da indexao de um blog, uma rotina simples analisa seu feed e verifica se o mesmo disponibiliza a tag <content> para todas as suas entradas, de
72

http://technorati.com/blogs/directory.

119

onde passar a extrair o texto dos posts em caso positivo. Porm, muitos feeds disponibilizam apenas as tags <description> ou <summary> associadas as suas entradas, o que indica que o contedo completo de um post no est presente no mesmo. Neste caso, preciso partir para a extrao do texto diretamente da pgina HTML.

Distinguir o que texto de uma notcia do que no atravs da anlise do cdigo fonte de um documento HTML um problema que no se pode resolver atravs de um algoritmo 100% preciso. Porm, graas marcao HTML utilizada para delimitar os vrios elementos de uma pgina, s caractersticas da rvore DOM e da prpria forma de escrita da linguagem humana possvel utilizar algoritmos heursticos que conseguem inferir com excelente preciso (> 90%) o contedo correto a ser extrado.

Diversas abordagens para soluo deste tipo de problema j foram propostas, uma vez que sistemas de busca e outras ferramentas de minerao de textos tambm se beneficiam da distino do contedo principal dentro de uma pgina HTML. [KOVACIC 2011] apresenta uma viso geral de alguns dos principais mtodos empregados atualmente.

Por conta da disponibilidade de bibliotecas de cdigo livre que implementam alguns destes algoritmos j propostos, optamos em nosso trabalho pela utilizao de uma destas para a extrao das notcias, realizando apenas pequenas adaptaes em seu cdigo (principalmente para alterar a formatao da sada fornecida pelos algoritmos, de forma a aumentar a legibilidade dos textos). Em nossa pesquisa, Boilerpipe73 mostrou-se a mais completa e precisa biblioteca de cdigo livre para este fim, empregando tcnicas para detectar e remover elementos de navegao, templates e anncios de documentos HTML e com isso obtendo melhores resultados na extrao do texto principal em pginas de sites de notcias e blogs [KOHLSCHUTTER, FANKHAUSER e NEJDL 2010]. Porm, por estar disponvel apenas em Java, para fins de simplificao optamos por utilizar numa primeira

73

http://code.google.com/p/boilerpipe.

120

verso de Filtrie outra biblioteca chamada Readability74, que tem verses nas linguagens que utilizamos para o desenvolvimento de nossa ferramenta e apresenta resultados aceitveis.

Um benchmark comparativo utilizando uma base de dados de artigos de sites de notcias mostrou que o algoritmo de readability tem preciso significativamente menor que boilerpipe (81.51% vs 95.93%), sendo esta uma mtrica que indica o percentual de artigos que o algoritmo conseguiu extrair de forma idntica ao original. J o recall uma mtrica que indica que, alm do artigo, contedo adicional foi identificado e extrado juntamente. Nesta, a diferena entre os algoritmos um pouco menor: 92.86% vs 98.66% [BOILERPIPE 2010].

De fato, ao aplicarmos o algoritmo de readability a uma base de artigos aleatria com centenas de entradas (escolhidas de blogs e sites de notcias que j havamos indexado em Filtrie), verificamos atravs de anlise humana (leitura da sada produzida pelo algoritmo) que a grande maioria das pginas teve o contedo da notcia extrado, porm em algumas delas eram extrados juntamente elementos adicionais como, por exemplo, chamadas com links para artigos relacionados sugeridos pela prpria fonte.

tima qualidade de extrao proporcionada pelo algoritmo

readability,

consideramos tambm a baixa frequncia da necessidade de utilizao do mesmo: das mais de 500 mil fontes que indexamos para testes, verificamos que cerca de 12% delas no oferecem o texto completo nos feeds. Desta forma, dado o recall de 92.86% obtido pelo algoritmo, a sua aplicao em 12% das fontes implica que em menos de 1% do total de fontes indexadas no possvel extrair o texto completo da notcia. Entendemos que este um excelente resultado e definimos que para estes casos devemos utilizar apenas a descrio da notcia provida no feed e ao final dela deixar um link para que o usurio faa a leitura diretamente no site da fonte.

Em relao ao seu funcionamento, o algoritmo de readability bem simples, fazendo uso de heursticas para classificar os blocos de texto de um documento HTML e

74

http://code.google.com/p/arc90labs-readability.

121

assim determinar qual deles o que mais provavelmente contm o texto principal, que em caso de blogs ou sites de notcias, seria o contedo do artigo em si. Para isso, so analisados alguns fatores como:

a) O tamanho dos paragrfos (demarcados pela tag <p>);

b) Caractersticas que denunciam que um bloco de texto parte de um artigo e no um simples ttulo ou chamada numa barra de navegao (por exemplo o nmero de vrgulas nas sentenas);

c) Os identificadores que demarcam o bloco de texto ( considerada uma boa prtica na criao de um documento HTML que se delimite cada rea de apresentao de contedo por meio da tag <div>, e que cada tag desta tenha uma string nica para identifica-la de acordo com sua posio no documento);

d) A rvore DOM (verifica se o pargrafo um n-terminal);

e) Densidade de links (quantidade de caracteres associados a um link para outra pgina em relao quantidade total de caracteres do texto).

Uma verso simplificada do algoritmo, no incluindo heursticas e mtodos utilizados para formatar o cdigo fonte e lidar com excees, descrita a seguir em pseudo linguagem:

122

Tabela 2 - Algoritmo para extrao de notcias

123

Tabela 3 - Algoritmo para extrao de notcias (continuao)

4.5.3 Extrao e ranqueamento de palavras-chave

Um dos mais importantes componentes da ferramenta Filtrie a classificao do contedo de um post por meio de suas palavras-chave, que so utilizadas para prover funcionalidades como a filtragem por tpicos, recomendao de contedo e/ou usurios semelhantes. As palavras-chave (ou tags) de uma notcia so as palavras ou expresses que melhor definem os assuntos abordados num post e so inferidas em Filtrie por um algoritmo que analisa a url de uma notcia, sua manchete, o texto completo (extrado pelo algoritmo apresentado na seo 4.5.2) e, quando possvel, as tags atribudas pelos prprios editores da notcia e publicadas no feed da fonte.

Antes da definio das palavras-chave de um post, dois fatores importantes devem ser levados em considerao:

a) Stop words: em processamento de linguagem natural, o conjunto de palavras que devem ser retiradas (antes ou aps o processamento) do resultado final retornado por um algoritmo. Em sistemas de busca, por exemplo, uma consulta pode desconsiderar palavras curtas sem significado (como pronomes) que impactam na qualidade dos resultados, ou at mesmo palavras muito comuns que impactariam o desempenho de busca. Em Filtrie, como o processamento aplicado aos textos tem como objetivo encontrar tags

124

que definam seu contedo desejvel que o resultado contenha apenas adjetivos, substantivos e algumas expresses compostas, j que em termos lingusticos so essas as classes de palavras que classificam qualidades e nomes. Adicionamente, o uso de um conjunto de stop words contendo palavras muito populares destas mesmas classes tambm desejvel para melhorar a qualidade dos resultados.

b) Linguagem: conforme definimos na elicitao de requisitos da ferramenta, Filtrie deve ser compatvel com contedo publicado em ingls e em portugus. Desta forma, antes da aplicao de qualquer algoritmo de classificao de palavras-chave de um post, necessrio analisar em qual lngua o mesmo foi escrito, e descarta-lo caso tenha sido escrito em lngua diferente destas duas. Para fins de simplificao, assumimos que cada feed de cada fonte publica contedo em apenas uma linguagem, e desta forma a inferncia da lngua na qual um post foi escrito deriva da anlise realizada no momento da primeira indexao da fonte nos bancos de dados de Filtrie.

Uma vez que Filtrie aceita contedo em ingls e portugus tambm se faz necessrio o uso de dois diferentes conjuntos de stop words, um para cada lngua.

Para a lngua inglesa, criamos uma lista mesclando stop words disponveis em diferentes repositrios75 com um conjunto de palavras que escolhemos atravs de anlise humana de uma lista com as duas mil palavras que ocorrem mais frequentemente em textos publicados em blogs ou sites de notcia (lista esta gerada por um algoritmo que contou as palavras de alguns milhares de posts escolhidos ao acaso). So exemplos de stop words que utilizamos para o processamento de contedo em ingls: a, able, about, across, after, all, almost, also, am, among, an, and, any, are, as, at, be, because, been, but, by, can, cannot, could, dear, did, do, does, either, else, ever, every, for, from, get, got, had, has, have, he, her, hers, him,
75

Como http://www.ranks.nl/resources/stopwords.html e http://dev.mysql.com/doc/refman/5.5/en/fulltextstopwords.html

125

his, how, however, i, if, in, into, is, it, its, just, least, let, like, likely, may, me, might, most, must, my, neither, no, nor, not, of, off, often, on, only, or, other, our, own, rather, said, say, says, she, should, since, so, some, than, that, the, their, them, then, there, these, they, this, tis, to, too, twas, us, wants, was, we, were, what, when, where, which, while, who, whom, why, will, with, would, yet, you, your.

Para a lngua portuguesa, utilizamos um mtodo diferente. Para obter um melhor resultado, integramos ao nosso cdigo um algoritmo de etiquetagem morfolgica 76, implementado conforme proposto em [GONZALEZ, LIMA e LIMA 2006] e disponibilizado atravs de uma ferramenta chamada Forma77, o que nos permitiu extrair apenas os substantivos e adjetivos e eliminar as demais classes de palavras (indesejveis para fins de uso como tag) dos posts publicados em portugus. Para melhorar a qualidade dos resultados, filtramos da sada produzida por Forma um conjunto de stop words contendo substantivos e adjetivos muito comuns, gerado pelo mesmo mtodo que utilizamos ao criar nossa lista de stop words em ingls.

Uma vez implementados os mtodos para remoo de stop words, cabe mencionar que estes conjuntos poderiam ser utilizados tambm em um algoritmo para deteco da linguagem em que um texto foi escrito. De fato, inserimos um pequeno experimento neste sentido no componente de Filtrie que responsvel pela indexao de uma nova fonte: ao analisar o conjunto de textos extrados do feed da fonte, um simples algoritmo conta o nmero de ocorrncias de stop words em ingls naqueles textos, e caso este nmero corresponda a um percentual acima de 75% do total de palavras, fica definido que tais textos foram escritos na lngua inglesa.

Para determinar se um texto foi escrito em portugus ou ainda para contemplar casos de falsos negativos (o algoritmo descrito no produz falsos positivos) seria necessrio mais trabalho e testes neste algoritmo para otimiza-lo a fim de produzir resultados 100% corretos, o que um requisito importante neste caso de uso. Ao invs disso, seguindo a filosofia de agilizar o desenvolvimento, optamos por utilizar

76 77

A etiquetagem morfolgica insere etiquetas que identificam a categoria morfolgica de cada palavra. Disponvel em http://www.inf.pucrs.br/~gonzalez/docs/forma_1_1.zip.

126

uma API do servio Google Translate78 que recebe um texto e retorna um cdigo de dois caracteres que forma em qual lngua ele foi escrito. Esta API consultada apenas na primeira indexao de uma fonte (nico momento em que determinada a linguagem de seu contedo) e apenas quando o algoritmo para deteco de contedo em ingls retorna resposta negativa. Desta forma, o custo e o impacto no desempenho de uma chamada a uma API externa mnimo para a aplicao.

Uma vez resolvido os problemas de determinao de stop words e da linguagem em que foi escrito o contedo, o prximo passo no processo de extrao de palavraschave realizar o ranqueamento das palavras que restarem aps a filtragem das stop words. Este processo consiste em analisar o texto e as palavras a fim de atribuir uma pontuao numrica a cada termo que reflita sua relevncia em relao ao contedo total, sendo as palavras que obterem as maiores pontuaes aquelas que melhor representem o assunto que estiver sendo abordado (idealmente).

Um mtodo simples e frequentemente mencionado na literatura para quantificar a importncia de uma palavra em um texto o TF-IDF (Term Frequency Inverse Document Frequency): dado um conjunto de documentos, conta-se em quantos documentos distintos cada palavra ocorre, e o nmero de ocorrncias de cada palavra dentro de um documento em particular. Ento, para se determinar a relevncia (wd) de uma palavra w em um documento d, usa-se a seguinte frmula matemtica

wd = fw, d * log (|D| / fw, D), onde fw, d igual frequncia (nmero de ocorrncias) da palavra w no documento d, D o nmero total de documentos do conjunto utilizado, e fw,
D

o nmero de

documentos do conjunto D em que a palavra w aparece. H implementaes deste mtodo com algumas variaes na frmula, porm a abordagem de forma geral segue o mesmo principio [RAMOS, 2003].

78

http://ajax.googleapis.com/ajax/services/language/translate?v=1.0.

127

Como sabemos o contedo indexado por Filtrie publicado em documentos HTML/XML, os quais podem incluir diversas marcaes para destacar ou dar significado semntico a determinadas palavras ou expresses do texto. Desta forma, temos outros mtodos de inferir suas palavras-chave alm de simplesmente calcular a frequncia de termos como proposto em algoritmos que utilizam TF*IDF. Alm disso, o fato de o conjunto total de documentos indexados em nossa aplicao estar constantemente em crescimento, tendendo a adicionar entre 10 5 a 106 textos diariamente quando em produo, torna computacionalmente custoso o uso de TF*IDF.

Dado o requisito de processamento em tempo real de todo o contedo indexado por Filtrie e as caractersticas diferenciadas que podemos extrair de textos publicados na web (em relao a documentos de texto puros), optamos por perseguir a implementao de um algoritmo inspirado nos mtodos utilizados por sistemas de buscas para determinar a relevncia de palavras-chave encontradas em uma pgina qualquer dada.

Sabe-se em particular que a conhecida ferramenta de busca Google atribui a cada pgina que indexada em seu banco um conjunto de palavras-chave extradas de recursos como: os ttulos dados aos links de outras origens que apontam para ela; a url da prpria pgina (que pode incluir palavras ou frases descritivas do contedo principal da mesma); o ttulo inserido no cabealho HTML que exibido no topo dos navegadores de internet; palavras ou expresses marcadas com tags de formatao como <b> (negrito), <h> (ttulos/subttulos); [LANGUIVILLE E MEYER 2006].

Os algoritmos do Google ou de outros sistemas de busca comerciais populares no so abertos, e apesar de nosso melhor esforo no conseguimos encontrar na literatura a especificao completa de algoritmos de proposta semelhante com nfase em ranqueamento de palavras-chave extradas de artigos de blogs ou sites de notcias. Por esta razo optamos por desenvolver um algoritmo com um simples sistema de pontuao que leva em considerao os seguintes elementos para determinar a relevncia de cada termo de um texto submetido a ele:

128

a) Ttulo: numa notcia, sua manchete tem o objetivo de chamar a ateno do leitor e despertar interesse na leitura de seu contedo. Desta forma, nossa abordagem considera que as palavras utilizadas no ttulo so boas candidatas a palavras-chave relevantes.

b) Subttulos e destaques: particularmente em artigos mais longos, autores podem utilizar sub-ttulos para demarcar melhor as sees de seu texto. De forma anloga aos ttulos, tambm consideramos estes elementos como importantes fontes de palavras-chave. Em documentos HTML, os ttulos e subttulos devem estar demarcados pelas tags <h1>, <h2>, <h3> ou <h4>, sendo este o recurso que utilizamos para encontra-los num post. Adicionalmente, um autor pode optar por dar nfase em uma palavra ou expresso utilizando a funo de negrito (demarcado por <b> ou <strong>), sendo estas tambm consideradas em nosso algoritmo.

c) Links: prtica comum, principalmente em textos de blogs, que palavras ou expresses que referenciem um site, um termo ou assunto que j foi abordado com mais profundidade em outra pgina ou artigo contenham um link que leve a este contedo. Desta forma, consideramos as palavras que do ttulo a um link em uma notcia como candidatas a boas palavras-chave.

d) Tags atribudas pelo autor: os padres RSS e ATOM disponibilizam em sua especificao de campos para cada item de um feed o atributo category, para que a fonte que publica o feed informe uma ou mais categorias que tem relao com aquele item. Em blogs ou sites de notcias, os autores utilizam esse campo para inserir palavras que denotam tags especficas daquela notcia ou que se refiram a categorias mais amplas nas quais aquele contedo se encaixa (por exemplo: Tecnologia, Poltica, Economia). De um jeito ou de outro, essas tags informadas pelo autor do contedo so consideradas por nosso algoritmo como importantes palavras-chave do mesmo.

129

e) Frequncia de termos: embora tenhamos explicado o motivo de no optarmos pelo clculo de TF-IDF em nosso algoritmo de extrao de palavras-chave, entendemos que usar apenas a primeira parte da mtrica (TF) seria adequado para inferir um nmero limitado de tags dos textos indexados sem com isso causar impacto significante no custo computacional. Uma vez que conseguimos implementar um bom mtodo para detectar stop words, mesmo com a supresso do clculo de IDF no deixaramos de reduzir a relevncia de palavras que se repetem com grande frequncia na maioria dos textos e que por este motivo no so boas palavras-chaves.

f) Tags inferidas por API: nos textos em que os autores no fazem uso de parte dos elementos que nosso algoritmo considera (neste caso os links, tags de marcao HTML e tags do autor no feed), para no obtermos tags apenas com base na frequncia de termos e ttulo da notcia, submetemos o texto a uma API externa disponibilizada pela ferramenta Zemanta79. O algoritmo desta aplicao realiza uma anlise semntica do contedo submetido e, com base em informaes estruturadas contidas na Freebase80 consegue inferir categorias e palavras-chave que podem ser atribudas ao contedo passado. Por meio de anlise subjetiva verificamos que os resultados retornados so satisfatrios. No momento, tal API analisa apenas contedo em ingls e limita o nmero de chamadas dirias que podem ser feitos, motivo este pelo qual fazemos uso da mesma somente nos casos de exceo relatados.

Considerando todos os fatores discutidos ao longo desta seo, chegamos finalmente ao nosso algoritmo para extrao e ranqueamento de palavras-chave, o qual descrito a seguir em verso simplificada por meio de uma pseudo linguagem:

79 80

http://www.zemanta.com/api. Freebase (http://www.freebase.com) uma grande base de conhecimento colaborativa, aberta, disponibilizada por licena Creative Commons e estruturada em forma de grafos. uma compilao de dados estruturados online colhidas de vrias fontes, inclusive a contribuio via wikis. Seu objetivo criar um recurso global que permita as pessoas (e mquinas) acessar informao comum, mais efetivamente.

130

Tabela 4 - Algoritmo para extrao de palavras-chave

131

Tabela 5 - Algoritmo para extrao de palavras-chave (continuao)

4.5.4 Arquitetura do sistema de filtragem

Uma das principais funcionalidades que materializa para o usurio de Filtrie o resultado do trabalho dos algoritmos propostos nas sees 4.5.2 e 4.5.3 o stream que possibilita a filtragem de posts por tpicos. Neste caso, os tpicos nada mais so que palavras-chave que o usurio insere na aplicao, manifestando seu interesse em visualizar contedo relacionado a elas.

Se os analizarmos como parte de um todo, os componentes, algoritmos e estruturas de dados necessrios para chegarmos ao resultado final que exibir para um usurio uma lista de notcias pelas quais ele se interessa, podemos constatar que arquiteturalmente este sistema de filtragem se assemelha bastante ao de um sistema de busca.

Para efeito de comparao, exibimos na figura a seguir uma arquitetura genrica similar utilizada pelos sistemas de busca disponibilizados hoje na web [LANGUIVILLE e MEYER 2006].

132

Figura 16 - Arquitetura de um sistema de busca

Note que, conceitualmente, um sistema deste tipo tem dois tipos de elementos: query-independentes (circulados na figura) e query-dependentes (fora do crculo). Os primeiros so componentes e dados que uma ferramenta que se prope a oferecer uma funcionalidade de busca precisa implementar e manter sempre em funcionamento, existindo e operando independendo dos usurios e suas consultas. O outro grupo so algoritmos que, dependendo da consulta feita por um usurio, sero acionados para interpretar a entrada e re-ordenar a sada a ser retornada em tempo real para o mesmo de forma a obter os melhores resultados.

Traando um paralelo entre a arquitetura de um sistema de busca e o sistema de

133

filtragem de Filtrie, apresentamos as equivalncias entre o modelo apresentado na figura 21 e o que foi implementado em nossa ferramenta: a) Crawler Module: num sistema de busca, este o mdulo responsvel por vasculhar a web procura de pginas para serem anexadas ao seu repositrio. Uma vez que Filtrie uma aplicao de propsito especfico, nosso crawler no entra de pgina em pgina e vai seguindo os links que encontra nelas, exceto em situaes especficas (como o momento da populao inicial das fontes inseridas em nossos bancos de dados). Em nossa ferramenta, o equivalente ao crawler module acionado por outros componentes, como o scrobbler ou as notificaes de atualizaes de contedo enviadas pelas fontes que oferecem tal possibilidade. Em outras situaes, ele automaticamente busca por atualizaes nos feeds de fontes j indexadas. Abordaremos com maior profundidade este assunto na seo 4.5.5. b) Page Repository: o repositrio de pginas deve manter temporariamente o cdigo html das pginas obtidas pelo crawler mas que ainda no foram analisadas pelo indexador, mantendo por maior tempo (talvez

indefinidamente) elementos importantes do contedo que forem extrados por este. A rigor, o crawler implementado em Filtrie retorna imediamente para o indexador o cdigo fonte de uma pgina ou feed que foi obtida por ele, no havendo armazenamento temporrio num repositrio de pginas. Por outro lado, podemos considerar que nosso repositrio de pginas composto de informaes tais como o ttulo dos posts, sua url e o texto completo destes incluindo as marcaes HTML, que so salvas no banco de dados de posts. Desta forma, se houver uma mudana no algoritmo de extrao de palavraschave, possvel analisar novamente o contedo j indexado apenas requisitando-o ao repositrio. c) Indexing Module: Em Filtrie, o mdulo de indexao o responsvel por extrair dos feeds ou do cdigo fonte das pginas os dados de cada post, como seu ttulo, o texto e as palavras-chaves. Os algoritmos abordados nas sees 4.5.2 e 4.5.3 so parte deste elemento do sistema.

134

d) Indexes: seguindo o modelo de elementos propostos na arquitetura dos

sistemas de busca, temos nas tabelas Blogs e Posts (conforme esquema apresentado em 3.2.4) o equivalente ao ndice de contedo, onde os dados de cada notcia especfica so indexados por um identificador inteiro. Construdo especificamente para a funcionalidade de filtragem por tpicos, o ndice estrutural uma tabela hash de sorted sets81 armazenada na ferramenta Redis. Para cada palavra-chave indexada por Filtrie, criada neste ndice uma entrada cuja chave nomeada utilizando o prefixo latest, concatenado com o cdigo da linguagem (pt ou en) e o nmero identificador da palavra-chave. Os elementos so strings JSON que representam um vetor contendo o identificador de um post, o identificador da fonte onde foi publicado, e a pontuao daquela palavra-chave naquele post. A pontuao associada ao elemento um UNIX timestamp contendo o horrio em que o post foi publicado. A figura a seguir exemplifica duas entradas deste ndice:

Figura 17 - Indice estrutural de palavras-chave em sorted sets

Dado que entre os requisitos da filtragem por tpicos est a ordenao do contedo retornado por ordem cronolgica ou por relevncia, e ainda que so retornados apenas 20 posts de cada vez, organizar o ndice estrutural desta maneira nos pareceu adequado tanto do ponto de vista de eficincia (espao em memria utilizado) quanto em relao performance (j que as operaes em sorted sets so proporcionais a log(N) ). Alm disso, uma vez que o objetivo da funcionalidade o acompanhamento de notcias atuais, mantemos
81

Colees de strings no-idnticas em que cada uma delas associada a um valor a ttulo de pontuao, que utilizado para ordernar as mesmas, da maior para menor ou vice-versa. A insero, atualizao ou remoo de membros uma operao O(log(N)), onde N o nmero de membros do set. J o acesso aos elementos, tanto de acordo com a posio dele no set ou de sua pontuao, O(log(N)+M), M sendo o nmero de elementos retornados.

135

em cada sorted set deste ndice apenas as 500 notcias mais recentes publicadas em at 15 dias anteriores data atual. Isso implica em economia de recursos (j que o ndice armazenado em memria RAM) e mantm o bom desempenho na manipulao dos dados nele contidos (j que o nmero de elementos em cada entrada nunca cresce demais). Por fim, mantemos tambm alguns ndices de propsito especficos que auxiliam a obteno dos dados retornados pela funcionalidade de filtragem por tpicos. Entre eles esto um ndice invertido de palavras-chave (a chave de cada entrada uma palavra-chave, e o valor associado o identificador inteiro da mesma), um ndice de ltimas inseres (a chave de cada entrada uma palavra-chave, e o valor associado um unix timestamp da hora de publicao do post mais recentemente contendo tal palavra) e um ndice de contagem de ocorrncias (a chave de cada entrada uma palavra-chave, e o valor associado um inteiro com o nmero de posts que contm tal palavra).
e) Query Module: Em Filtrie, o mdulo de consultas um simples algoritmo que

acionado quando o usurio acessa a tela de filtragem por tpicos, sendo responsvel por cruzar os interesses do usurio com os dados indexados pela ferramenta e assim possibilitar o resultado final, que consiste de uma lista de posts a serem exibidas na interface da funcionalidade. A figura a seguir contm uma representao simplificada, em pseudo linguagem, do referido algoritmo:

136

Tabela 6 - Algoritmo do mdulo de consultas

Note que o resultado retornado (posts_ordenados) por este algoritmo uma matriz em que cada linha contm os valores [idPost, idBlog, pontuao, timestamp] das notcias encontradas que correspondem aos tpicos de interesse de um usurio. Em seguida, um novo algoritmo ir utilizar os identificadores retornados nesta matriz para consultar o cache e/ou os bancos de dados para obter e exibir na tela, de 20 em 20 resultados, as informaes efetivamente relevantes para o usurio, tais como o ttulo da notcia, nome do blog, link para leitura, etc. f) Ranking Module: em Filtrie, o trabalho do algoritmo equivalente ao de um mdulo de ranqueamento deveras simples e consiste de apenas dois passos. O primeiro concatenar os elementos dos sorted sets recebidos do algoritmo de consultas, de forma a transformar em apenas um os elementos que tenham o mesmo idPost (e que foram retornados por corresponderem a diferentes palavras-chave) e somar suas pontuaes. Desta forma, se a entrada passada contiver os elementos ([1300, 5, 1.2], 1256253848) e ([1300, 5, 1.5], 1256253848), o algoritmo ir transform-los nm nico vetor com os valores [1300, 5, 2.7, 1256253848]. O segundo passo reordenar (utilizando um algoritmo como o quicksort) a matriz resultante das concatenaes

137

segundo o parmetro de ordenao passado, sendo possveis os seguintes parmetros: relevncia (ordena segundo a pontuao de cada post), cronolgica (ordena segundo o timestamp, com os posts mais antigos na frente) ou cronolgica inversa (com os posts mais recentes na frente).

4.5.5 Indexao de contedo

Uma das bases para implementao da grande maioria das funcionalidades de o algoritmo do crawler que realiza a indexao do contedo de blogs e sites de notcias includos na ferramenta. Este elemento da aplicao o responsvel por duas tarefas: encontrar novas fontes para indexar e encontrar novas entradas de contedo nas fontes j indexadas.

Ao contrrio de um crawler de um sistema de busca, que segue indiscriminadamente todos os links inseridos em todas as pginas, objetivando indexar todo o contedo que encontrar, nosso algoritmo precisa ser mais criterioso (para fins de economia de recursos) a respeito de quais pginas acessar para tentar identificar uma fonte como sendo um blog ou site de notcias. Desta forma, implementamos trs mtodos principais para alimentarmos nosso crawler com os links que ele deve tentar indexar:

a) Crowdsourcing: como os usurios da ferramenta sero convidados a instalar aplicaes clientes em seus celulares ou dispositivos mveis, a atividade de navegao na web por parte dos mesmos nos ajudar a encontrar novas fontes, j que o cliente aplicar o algoritmo para identificar se a pgina visitada uma fonte vlida e far o scrobbling de sua url para que a aplicao rodando no servidor confirme este resultado e realize a indexao de seu contedo. Adicionalmente, os usurios tem a opo de indicar manualmente, atravs de um simples clique na interface de uma aplicao cliente, pginas que eles saibam ser um blog ou site de notcia que por alguma razo no tenham sido identificadas pela extenso.

138

b) Busca no Twitter: um segundo mtodo que de certa forma tambm poderia ser classificado como um tipo de crowdsourcing o monitoramento de mensagens publicadas no Twitter. Por meio da API de busca disponibilizada pela ferramenta, um agente executando nosso algoritmo fica conectado ao servio solicitando as mensagens publicadas que contiverem pelo menos um link. Um parser extrai o link desta mensagem e executa um algoritmo que tenta excluir a possibilidade de aquela pgina ser de uma fonte vlida apenas analizando a url (verificando, por exemplo, se ela leva para algum tipo de arquivo de extenso conhecida ou se o seu domnio aponte para algum site popular que certamente no seja uma fonte, como uma rede social ou sistema de busca). Os links que no forem eliminados neste passo so ento submetidos ao crawler, que ir tentar identificar se a pgina uma fonte vlida que ainda no foi indexada. Embora este mtodo, por conta da grande quantidade e variedade de links compartilhados no Twitter desperdice mais recursos com a checagem de pginas que acabam no sendo fontes vlidas, sua utilizao importante, pois nos ajuda a descobrir quais usurios do Twitter so na verdade blogs ou sites de notcias que usam aquela conta para notificiar suas atualizaes (abordaremos a razo disso mais a frente); e pelo fato de que por estarem sendo compartilhados por pessoas, os links para blogs e sites de notcias publicados em mensagens no Twitter tendem a representar as fontes de contedo que realmente tem algum pblico e que por isso precisam ser indexadas o quanto antes no banco de dados de Filtrie.

c) Scrapping: exclusivamente para uso na populao inicial do banco de dados de fontes indexadas, implementamos um algoritmo para realizar o scrapping de conhecidas ferramentas comerciais que disponibilizam diretrios que listam blogs e sites de noticias de forma categorizada e cadastrada manualmente por seus editores ou usurios. Algumas das ferramentas de onde extramos urls de fontes a indexar foram o Google News, Technorati, BlogBlogs, Regator e o Delicious.

A segunda tarefa do crawler, por sua vez, ainda mais importante e demandou mais consideraes de nossa parte por conta de um dos requisitos fundamentais da

139

ferramenta, mencionado na seo 3.2.1: a indexao de novos contedos publicados em blogs e sites de notcias deve ocorrer o mais rpido possvel aps a disponibilizao destes nas pginas da fonte.

O algoritmo que procura e extrai as atualizaes publicadas nas fontes j indexadas faz uso exclusivo do feed da fonte para determinar quais so as novas entradas. Os mtodos para acionar este algoritmo para verificar se um feed contm novo contedo podem ser distinguidos segundo duas classificaes distintas: push ou pooling. No primeiro, um agente externo associado fonte envia para o scrobbler rodando no servidor de Filtrie uma requisio HTTP POST informando que h atualizaes disponveis. J o outro consiste de determinar algumas regras sobre quando o crawler ir ativamente verificar um dado feed.

De modo a alcanar o objetivo de indexar novas atualizaes na maioria das fontes em tempo quase real aps sua publicao, implementamos cinco mtodos diferentes no algoritmo do crawler, os quais abordamos a seguir: a) Pubsubhubbub82: trata-se de um protocolo do tipo publish-subscribe que utiliza callbacks via web para notificar imediatamente atualizaes publicadas numa dada fonte a todos os servios que se cadastrarem para receber tais notificaes. Em Filtrie, no momento da indexao inicial de um blog ou site de notcia, o feed analisado em busca de uma tag do tipo <link rel="hub" href=http://urldohub.com>, que indica que aquela fonte disponibiliza notificaes pelo protocolo pubsubhubbub atravs do hub cuja url consta na tag. O indexador ento cadastra o scrobbler de Filtrie no hub para receber tais notificaes. De acordo com o fluxo estabelecido, quando uma fonte publica contedo novo, ela deve informar imediatamente seu hub, que por sua vez ir encaminhar esta notificao para as urls de callback dos servios que se cadastraram em seu feed. Levando em considerao os blogs e sites de notcias indexados na populao inicial do banco de dados de Filtrie, cerca de 73% das fontes utilizam este protocolo para prover notificaes push de suas atualizaes.

82

Especificao disponvel em https://code.google.com/p/pubsubhubbub.

140

b) RSS Cloud83: um protocolo semelhante ao pubsubhubbub, proposto na especificao do padro RSS, mas tambm compatvel com feeds ATOM. A principal diferena est no tipo de notificao enviada aos subscribers: enquanto no protocolo pubsubhubhub os servios que se cadastraram numa fonte recebem todo o xml de uma nova entrada publicada num feed, RSS Cloud envia apenas a notificao de que h contedo novo, para que o servio faa ento a requisio ao feed para obt-lo. No momento da populao inicial de nosso banco de dados, este protocolo revelou-se menos difundido que o anterior, estando presente em menos de 1% das fontes que indexamos.

c) Monitoramento no Twitter: Embora os protocolos mencionados nos dois items anteriores sejam um importante e principal mtodo na obteno de atualizaes das fontes em tempo quase real, ambos esto sujeitos a falhas ou atrasos no envio de notificaes por parte dos hubs, o que por sua vez comprometeria nosso objetivo de obter rapidamente os novos contedos. Alm disso, verificamos que tais protocolos esto presentes com maior frequncia em fontes que utilizam um CMS, o que normalmente o caso dos blogs, mas no dos sites de notcias. Assim, ao observamos que blogs e sites de notcia frequentemente utilizam o Twitter para divulgar links para suas notcias recm-publicadas, incorporamos ao nosso algoritmo o monitoramento desta rede social a fim de utiliz-la como um indicativo da existncia de atualizaes nas fontes que acompanhamos. No momento da indexao de uma fonte, o algoritmo que realiza esta tarefa tenta identificar se ela tem uma conta no Twitter, e em caso positivo armazena o identificador desta conta. Posteriormente, por meio da API da ferramenta, enviamos uma requisio para seguir (em uma conta que criamos para este fim) o Twitter da fonte indexada. Tambm atravs da API, um agente executando nosso algoritmo de crawling fica permanentemente conectado rede social recebendo as novas mensagens publicadas pelas fontes que estamos seguindo, as quais so submetidas a um parser para extrair os links includos nelas. Aps
83

Especificao disponvel em http://rsscloud.org.

141

analisar um link, o crawler decide se o mesmo pode ser referente a um novo contedo publicado numa das fontes indexadas, e faz em seguida o pooling no feed da mesma para verificar se de fato h atualizaes e index-las. No momento da populao inicial de nosso banco de dados, foi possvel inferir as contas no Twitter de cerca de 22% das fontes que indexamos.

d) Crowdsourcing: por meio das aplicaes cliente de Filtrie, quando um usurio acessa uma publicao em uma fonte vlida, o cliente rodando em seu dispositivo ir realizar o scrobbling desta atividade. A aplicao no servidor ir ento identificar se a url acessada faz parte de uma fonte j indexada, e se o contedo dela um post que j foi indexado. Caso no tenha sido, interpretamos este resultado como um indicativo de que aquela url refere-se a uma nova publicao, e o crawler far ento o pooling do feed para verificar a existncia de atualizaes.

e) Melhor estimativa: considerando as fontes que indexamos inicialmente, cerca de 20% delas no possibilitam o uso de nenhum dos mtodos a, b ou c para descobrir atualizaes. Alm disso, como o mtodo d depende da navegao por parte dos usurios, o mesmo pode ser considerado apenas como um auxlio, no sendo prudente utiliz-lo como nica soluo adicional alm dos trs primeiros mtodos mencionados nesta lista. Desta forma, para estas fontes nos resta apenas a opo de efetuar o pooling em seus feeds de tempos em tempos para obter as atualizaes. Para isso, a fim de otimizar o uso de nossos recursos (e tambm os das prprias fontes), criamos um algoritmo para determinar a melhor estimativa da frequncia com que nosso crawler deve verificar cada um desses feeds. Para isso, os seguintes fatores so levados em considerao: a frequncia recente (intervalo em horas entre os posts) de publicaes; o intervalo de horrios em que as publicaes recentes foram realizadas (em blogs, por exemplo, pouco provvel que haja novos posts durante a madrugada, ento no so realizadas verificaes neste perodo); e o nmero de usurios de Filtrie que j realizaram atividades na fonte (para as que nunca forem acessadas por usurios de Filtrie, menos importante que suas atualizaes sejam indexadas rapidamente). Estes

142

fatores, associados ao nmero de workers disponveis em dado momento no servidor Gearman para as tarefas de indexao servem para determinar quantas vezes e em quais intervalos de tempo ser realizado o pooling no feed de cada fonte.

4.5.6 Recomendaes

A especificao das funcionalidades de Filtrie, juntamente com os dados que so coletados pela aplicao, prev e possibilita a implementao de diversos tipos de recomendaes como forma de melhorar as opes de filtragem e descoberta de contedo atravs de nossa ferramenta. Podemos citar trs formas importantes de recomendaes possveis em Filtrie: de pessoas, de fontes e de posts.

A primeira consiste em recomendar a um usurio outros usurios que compartilhem preferncias de leitura semelhantes, de forma a incentivar que estes estabeleam conexes entre si (seguir / ser seguido) dentro da rede social e possam utilizar uns aos outros como filtros humanos para determinar quais posts ler, atravs do stream de filtragem social descrito na seo 3.1.

A segunda forma de recomendao consiste em analisar as atividades de um usurio que so logadas atravs do scrobbling para descobrir quais so os blogs e sites de notcias com os quais ele mais interage (demonstrando assim sua preferncia) e a partir desta informao recomendar outras fontes que ele ainda no conhea e que se encaixem dentro de suas preferncias.

Por fim, a recomendao de posts pode ser feita de duas formas: no momento em que o usurio estiver lendo um dado post, podemos sugerir na mesma interface outras notcias que tenham contedo semelhante ou abordem o mesmo assunto. A outra forma seria gerar automaticamente um stream de posts recomendados, levando em considerao, por exemplo, o histrico de preferncias do usurio.

Conforme j mencionamos na seo 2.1.2, existem duas abordagens principais em algoritmos de recomendao: as baseadas no contedo e as baseadas em filtragem

143

colaborativa. As trs formas de recomendaes que propusemos podem utilizar tanto algoritmos baseado em uma abordagem quanto na outra, ou at mesmo em ambas. Por exemplo: a recomendao de usurios pode ser feita levando em considerao as palavras-chave e as fontes acessadas por duas pessoas que ainda no se conectam na rede social de Filtrie (ou seja, pode-se dizer que so baseadas em contedo, j que os fatores analisados podem ser considerados caractersticas de tais usurios); ou podemos contabilizar quantos dos amigos de um usurio seguem outro determinado usurio que ainda no faz parte de sua rede, recomendando a ele que estabelea uma conexo com esta pessoa (ou seja, baseada em filtragem colaborativa). Juntar os resultados de ambos os algoritmos e combinar suas recomendaes numa nica interface tambm uma alternativa possvel e que em teoria pode produzir melhores sugestes.

A implementao de bons algoritmos de recomendao, porm, no um problema trivial. A necessidade existente em Filtrie de gerar recomendaes em tempo real em um conjunto sempre crescente de itens e com desempenho adequado adiciona ainda mais complexidade ao problema, conforme j foi abordado na litetura por ferramentas que implementaram solues em cenrios semelhantes [DAS, DATAR, GARG e RAJARAM 2007].

Assim, por conta da complexidade do problema e do volume de dados necessrios para testar adequadamente os algoritmos (entendemos que s com a ferramenta disponibilizada em produo teramos dados com qualidade suficiente dos usurios, fontes, posts e os atributos e interaes entre eles), no foi realizado neste trabalho a implementao de nenhum dos algoritmos de recomendao mencionados na literatura, embora tenhamos estudado superficialmente as possveis opes.

Entretanto, fizemos uma pequena experincia implementando uma funcionalidade de posts relacionados na interface de leitura de notcias existente nos streams de filtragem. O algoritmo desta funcionalidade baseia-se na comparao das palavraschave extradas para cada post e na arquitetura em que as mesmas foram armazenadas para computar de forma eficiente e em tempo real uma lista com alguns posts que tratam de assuntos semelhantes e que, portanto, tambm podem

144

interessar ao leitor. O simples algoritmo implementado descrito a seguir, em pseudo linguagem:

Tabela 7 - Algoritmo para recomendao de posts relacionados

Em uma rpida e subjetiva anlise das recomendaes produzidas por esta abordagem verificamos que os posts sugeridos de fato tratavam de assuntos semelhantes com frequncia e qualidade satisfatria. Ainda assim, mesmo este simples algoritmo poderia incluir algumas heursticas e refinamentos como levar em conta o peso de cada tag para cada post a fim de calcular a semelhana entre eles, o que acreditamos que poderia produzir resultados ainda melhores, embora no tenhamos investigado esta possibilidade a fundo.

145

Concluso e trabalhos futuros

Neste captulo so apresentadas as consideraes finais, as contribuies do trabalho e as perspectivas futuras.

5.1

Consideraes finais

O desenvolvimento do grande filtro de contedo pode ser considerado uma espcie de Santo-Graal da web. Desde seu incio, indivduos e organizaes construram as mais diversas solues para este problema, gerando fortunas e melhorando e universalizando o acesso informao por parte das pessoas. A abordagem de filtragem proposta neste trabalho se concentrou num tipo especfico de contedo (notcias e blogs), visando agregar as principais caractersticas de ferramentas j existentes a fim de possibilitar aos usurios um maior controle sobre a quantidade, qualidade e especificidade do contedo ao que ser exposto. Esta proposta pode ser destacada tambm pela incorporao de importantes caractersticas das redes sociais (tais como a possibilidade de estabelecimento de relaes entre os mesmos para benefcio mtuo na descoberta e filtragem de novos contedos) e pelo mtodo proposto para compartilhamento automtico de contedo entre os usurios, o qual acreditamos facilitar e melhorar a experincia de uso da ferramenta sem trazer prejuzos privacidade. Entendemos que uma soluo como Filtrie especialmente til para profissionais que precisam acompanhar grandes quantidades de fontes (como jornalistas e publicitrios) ou que precisam se manter constantemente atualizados com as novidades em seu mercado de atuao (como programadores e demais trabalhadores envolvidos com a rea de tecnologia). Apesar das dificuldades que certamente surgiro e das melhorias necessrias para que a ferramenta projetada e prototipada seja efetivamente disponibilizada para uso em maior escala, acreditamos que em relao ao escopo deste trabalho os resultados obtidos foram satisfatrios, visto que os objetivos determinados inicialmente foram plenamente alcanados, uma vez que:

146

a) Produzimos uma pesquisa com volume de contedo razovel e atual a respeito do tipo de ferramenta que nos propusemos a investigar. b) Especificamos e documentamos a anlise e o projeto de uma ferramenta social para consumo, filtragem e recomendao de contedo em blogs e sites de notcias cujas caractersticas foram estabelecidas de acordo com nossa viso a partir da incorporao das principais funcionalidades observadas nas aplicaes estudadas. c) Implementamos com sucesso um prottipo da ferramenta proposta, o qual encontra-se acessvel no endereo http://www.filtrie.com. Embora nem todas as funcionalidades e verses propostas estejam presentes (como uma verso otimizadas para dispositivos mveis), enquanto outras foram desenvolvidas de forma simplificada (como os mecanismos de recomendao), o prottipo completamente funcional e tem casos de uso que julgamos teis mesmo de forma independente do restante da ferramenta, como por exemplo a funcionalidade que permite a filtragem e leitura de blogs e notcias compartilhadas no stream de um usurio do Twitter. Por fim, importante reconhecer que a maioria das disciplinas cursadas ao longo deste curso de graduao contribuiram direta ou indiretamente para o

desenvolvimento deste trabalho, destacando-se dentre elas: Estruturas de Dados, Tcnicas de Busca e Ordenao, Linguagens de Programao, Sistemas Operacionais, Anlise de Algoritmos, Anlise e Projeto de Sistema, Interface com Usurio e Compiladores.

5.2

Contribuies do trabalho

As principais contribuies deste trabalho foram: a) O estudo histrico e a categorizao das principais ferramentas desenvolvidas e disponibilizadas na web para possibilitar o consumo, filtragem e recomendao de contedo em blogs e sites de notcias por parte dos usurios. Acreditamos que a reviso que publicamos no captulo 2, fruto de

147

pesquisa bibliogrfica e virtual, possa servir como ponto de partida para outros trabalhos na mesma rea. b) A definio de um mtodo heurstico para identificar e diferenciar blogs e sites de notcias dos demais tipos de sites presentes na web. As menes pblicas que encontramos a possveis solues para este problema se limitavam a sugerir o uso de bases de dados, de modo que nos pareceu mais eficiente o algoritmo que criamos mesclando uma estrutura de dados probabilstica e que utiliza pouco espao de armazenamento com heursticas simplificadas, propostas a partir da observao do cdigo fonte e dos atributos da grande quantidade de fontes analisadas. c) A transposio do conceito de scrobbling, bastante popular em ferramentas para audio de msicas, para o domnio dos blogs e sites de notcias.

5.3

Perspectivas Futuras

As possibilidades de continuao e refinamentos direta ou indiretamente ligadas a este trabalho so variadas. Para que a ferramenta venha a ser de fato utilizada, pode-se optar por sua disponibilizao em produo de forma comercial, ou pode-se disponibilizar seu cdigo fonte com uma licena open-source para que qualquer pessoa possa instalar em servidor prprio ou realizar modificaes. Independente desta escolha, entendemos que so trs as principais reas que precisam ser alvo de novos desenvolvimentos: a) Processamento de linguagem natural: a implementao de novos e melhores algoritmos para analisar e classificar as notcias indexadas pela ferramenta seria muito importante no sentido de que estes resultados so a base para melhores recomendaes e opes de filtragem. b) Algoritmos de recomendao: uma vez que foi implementado um cdigo trival nesta funcionalidade, h todo um trabalho a ser feito nesta rea com algoritmos baseados em contedo e em filtragem colaborativa para que a

148

ferramenta possa realizar boas recomendaes no s de notcias, mas tambm de usurios e de fontes. c) Genoma Textual: durante a pesquisa para a realizao deste trabalho, ao conhecer o projeto Genoma Musical, nos ocorreu que um mtodo anlogo poderia ser desenvolvido para classificar os genes dos contedos publicados em blogs e sites de notcias, e com isso obter melhores recomendaes conforme verificou-se no domnio musical. A especificao das caractersticas a compor este genoma para textos poderia ter sua incorporao proposta aos mantenedores dos padres ATOM e RSS (de forma que as prprias fontes classifiquem em seu feed os textos que publicarem), ou poderia-se fazer uso de crowdsourcing para classificar os contedos, que devem assim constar de uma base de dados pblica e aberta. Este trabalho pode ser considerado um ponto inicial na construo de uma ferramenta interessante e completa para o consumo, filtragem e recomendao de contedo em blogs e sites de notcias, porm somente estes e outros desenvolvimentos futuros podem efetivamente transform-la numa alternativa usvel s ferramentas j existentes.

149

Referncias
[ALLAN 2006] ALLAN, S. Online news: journalism and the Internet. Open University Press. 2006. [AMMANN 2009] AMMANN, R. Jorn Barger, the NewsPage Network, and the Emergence of the Weblog Community. Proceedings of the twentieth ACM conference on hypertext and hypermedia. Junho 2009. Disponvel em <http://tawawa.org/ark/p/jorn-barger-community.html>. Acesso em: abril 2012. [BLOOD 2000] BLOOD, R. Weblogs: a history and perspective. Rebeccas Pocket. 7 de setembro de 2000. Disponvel em <http://www.rebeccablood.net/essays/weblog_history.html> Acesso em: abril 2012. [BOILERPIPE 2010] BOILERPIPE. Extraction Quality Benchmark. Google Code.. Disponvel em <http://code.google.com/p/boilerpipe/wiki/Benchmarks>. Acesso em: agosto 2012. [CHEN 2010] CHEN, C. M. Intelligent location-based mobile news service system with automatic news summarization. Expert Systems with Applications: An International Journal. Volume 37 Issue 9, Setembro 2010. [CHIOU e TUCKER 2010] CHIOU, L. TUCKER, C. E. News, Copyright, and Online Aggregators. Outubro 2010. Disponvel em <http://arrow.hunter.cuny.edu/mediaeconomics-workshop/conference-papers/chiou%20and%20tucker%20news.pdf>. Acesso em: abril 2012. [MCCULLAGH e BROACHE 2007] MCCULLAGH, D. BROACHE, A. Blogs turn 10-who's the father?. Cnet News. 20 de maro de 2007. Disponvel em <http://news.cnet.com/2100-1025_3-6168681.html>. Acesso em: abril 2012. [COHEN 2009] COHEN, J. Same Protocol, More Options for News Publishers. Google News Blog. Dezembro 2009. Disponvel em <http://googlenewsblog.blogspot.com.br/2009/12/same-protocol-more-options-fornews.html>. Acesso em: abril 2012. [DARWELL 2012] DARWELL, B. Facebook social reader app contributes to record traffic for U.K. news site. InsideFacebook. Maro 2012. Disponvel em <http://www.insidefacebook.com/2012/03/22/facebook-social-reader-app-contributesto-record-traffic-for-u-k-news-site/>. Acesso em: abril 2012. [DAS, DATAR, GARG e RAJARAM 2007] DAS, A. DATAR, M. GARG, A, RAJARAM, S. Google News Personalization: Scalable Online Collaborative Filtering. WWW '07 Proceedings of the 16th international conference on World Wide Web. Maio 2007. [EPPS 2011] EPPS, S. R. What The post-PC Era Really Means. Forrester Research. Maio 2011. Disponvel em <http://cntelligence.condenast.com/uploads/document_attachment/attachment/39/forr ester-thepostpcera_.pdf>. Acesso em: abril 2012. [FISCH 2008] FISCH, K. Did you know 3.0. Shift Happens. Outubro 2008. Disponvel em <http://shifthappens.wikispaces.com>. Acesso em: maro 2012.

150

[GLASER 2002] GLASER, W. Consumer item matching method and system. USPTO Assignment Database. Maio 2002. Disponvel em <http://www.google.com/patents/US7003515?dq=7,003,515>. Acesso em: abril 2012. [GONZALEZ, LIMA E LIMA 2006] GONZALEZ, M.; LIMA, V. L. S. de; LIMA, J. V. de. Tools for Nominalization: an Alternative for Lexical Normalization . Workshop on Comp. Proc. Of the Portuguese Lang Apresentao Oral, 7. Propor, 2006. [GRAHAM 2005] GRAHAM, P. Web 2.0. Essays. Dezembro 2005. Disponvel em <http://www.paulgraham.com/web20.html>. Acesso em: abril 2012. [GRAY 2009] GRAY, L. Can Twitter Replace RSS for Sharing the Best of the Web? Louis Gray Blog. Outubro 2009. Disponvel em <http://blog.louisgray.com/2009/10/can-twitter-replace-rss-for-sharing.html>. Acesso em: abril 2012. [GROSSMAN 2010] GROSSMAN, L. How Computers Know What We Want Before We Do. Time Magazine. Maio 2010. Disponvel em <http://www.time.com/time/magazine/article/0,9171,1992403-1,00.html>. Acesso em: abril 2012. [INGRAM 2011] INGRAM, M. For News Sites, Google Is the Past and Facebook Is the Future. GigaOm. Maio 2011. Disponvel em <http://gigaom.com/2011/05/09/fornews-sites-google-is-the-past-and-facebook-is-the-future/>. Acesso em: abril 2012. [JACKSON 1995] JACKSON, D. S. Extra! Readers Talk Back! Time Magazine, 1 Maro de 1995. Disponvel em <http://www.time.com/time/magazine/article/0,9171,982604,00.html>. Acesso em: abril 2012. [KOHLSCHUTTER, FANKHAUSER e NEJDL 2010] KOHLSCHUTTER, C. FANKHAUSER, P. NEJDL, W. Boilerplate detection using shallow text features. WSDM '10 Proceedings of the third ACM international conference on Web search and data mining. 2010 [KOVACIC 2011] KOVACIC, T. Overview: Extracting article text from HTML documents. My Tech Blog. Maro 2011. Disponvel em <http://tomazkovacic.com/blog/14/extracting-article-text-from-html-documents/>. Acesso em: agosto 2012. [LANGUIVILLE e MEYER 2006] LANGUIVILLE, A. and MEYER, C.D. Google's PageRank and Beyond: The Science of Search Engine Rankings. Princeton University Press, 2006. [LASAR 2011] LASAR, M. Digging into Pandora's Music Genome with musicologist Nolan Gasser. ArsTechnica. Janeiro 2011. Disponvel em <http://arstechnica.com/tech-policy/news/2011/01/digging-into-pandoras-musicgenome-with-musicologist-nolan-gasser.ars/3>. Acesso em: abril 2012.

151

[LERMAN 2006] LERMAN, K. Social Networks and Social Information Filtering on Digg. Dezembro 2006. Disponvel em <http://arxiv.org/pdf/cs/0612046v1.pdf>. Acesso em: abril 2012. [LERMAN e GHOSH 2010] LERMAN, K. GHOSH, R. Information Contagion: An Empirical Study of theSpread of News on Digg and Twitter Social Networks . Proceedings of the Fourth International AAAI Conference on Weblogs and Social Media. 2010. [LIU, RAMASUBRAMANIAN, SIRER] LIU, H. RAMASUBRAMANIAN, V. SIRER, E. G. Client Behavior and feed Characteristics of RSS, a Publish-Subscribe System for Web Micronews. IMC '05 Proceedings of the 5th ACM SIGCOMM conference on Internet Measurement. 2005. [MACMANUS 2004] MACMANUS, R. RSS Readers Market Share. ReadWriteWeb. Dezembro 2004. Disponvel em <http://www.readwriteweb.com/archives/rss_reader_mark.php> Acesso em: abril 2012. [MALIK 2011] MALIK, O. Twitter by the numbers. GigaOm. Agosto 2011. Disponvel em <http://gigaom.com/2011/08/16/twitter-by-the-numbers-infographic/>. Acesso em: abril 2012. [MCCRACKEN 2011] MCCRACKEN, H. The 50 Best Websites of 2011. Time.com. Agosto 2011. Disponvel em <http://www.time.com/time/specials/packages/article/0,28804,2087815_2087913_20 87931,00.html>. Acesso em: abril 2012. [MIMS 2010] MIMS, C. Why Twitter Is the Future of News. Technology Review. Abril 2010. Disponvel em <http://www.technologyreview.com/blog/mimssbits/25128/>. Acesso em: abril 2012. [MITCHELL 2012] MITCHELL, J. Why Facebook Social Reading Apps Don't Work. ReadWriteWeb. Abril 2012. Disponvel em <http://www.readwriteweb.com/archives/why_facebook_social_reading_apps_dont_w ork.php>. Acesso em: abril 2012. [MITCHELL e ROSENSTIEL 2011] MITCHELL, A. ROSENTIEL, T. How People Use Tablets and What It Means For The Future Of News. The Tablet Revolution. Outubro 2011. Disponvel em < http://www.journalism.org/analysis_report/tablet>. Acesso em: abril 2012. [MITCHELL e ROSENSTIEL 2012] MITCHELL, A. ROSENTIEL, T. Major Trends. The state of news media 2012. Maro 2012. Disponvel em <http://stateofthemedia.org/2012/overview-4/major-trends/>. Acesso em: abril 2012. [MORKES e NIELSEN 1997] MORKES, J. NIELSEN, J. Concise, SCANNABLE, and Objective: How to Write for the Web. Useit. 1997. Disponvel em <http://www.useit.com/papers/webwriting/writing.html> [MORRIS, BRUSH E MEYERS 2007] MORRIS, M. R. BRUSH, A. J. B. MEYERS, B. R. Reading Revisited: Evaluating the Usability of Digital Display Surfaces for Active

152

Reading Tasks. Microsoft Research. Outubro <http://research.microsoft.com/pubs/69441/reading.pdf>

2007.

Disponvel

em

[NIELSEN 2001] NIELSEN, J. 113 Design Guidelines for Homepage Usability. Useit. Disponvel em <http://www.useit.com/homepageusability/guidelines.html>. Acesso em: abril 2012. [NIELSEN 2002] NIELSEN, J. Let Users Control Font Size. Useit. Agosto 2002. Disponvel em <http://www.useit.com/alertbox/20020819.html>. Acesso em: abril 2012. [NIELSEN 2010] NIELSEN, J. iPad and Kindle Reading Speeds. Useit. Julho 2010. Disponvel em <http://www.useit.com/alertbox/ipad-kindle-reading.html>. Acesso em: abril 2012. [NIELSEN 2011] NIELSEN, J. Mobile Content Is Twice as Difficult. Useit. Fevereiro 2011. Disponvel em <http://www.useit.com/alertbox/mobile-contentcomprehension.html>. Acesso em: abril 2012. [NIELSEN 2012] NIELSEN. Buzz in the Blogosphere: Millions More Bloggers and Blog Readers. NielsenWire. 8 de maro de 2008. Disponvel em <http://blog.nielsen.com/nielsenwire/online_mobile/buzz-in-the-blogosphere-millionsmore-bloggers-and-blog-readers/>. Acesso em: abril 2012. [PAQUET 2002] PAQUET, S. Personal Knowledge Publishing and Its Uses in Research. KnowledgeBoard. Janeiro 2003. [PHELAN, McCARTHY e SMYTH 2009] PHELAN, O. MCARTHY, K. SMYTH, B. Using Twitter to Recommend Real-Time Topical News. Proceedings of the third ACM conference on Recommender systems, Outubro 2009. [PHELAN, McCARTHY e SMYTH 2011] PHELAN, O. MCARTHY, K. SMYTH, B. On using the real-time web for news recommendation & discovery. Proceedings of the 20th international conference companion on World wide web. 2011.. [PROTALINSKI 2012] PROTALINSKI, E. Facebook has over 845 million users. Friending Facebook Blog. Fevereiro 2012. Disponvel em <http://www.zdnet.com/blog/facebook/facebook-has-over-845-million-users/8332>. Acesso em: abril 2012. [RAMOS 2003] RAMOS, J. Using TF-IDF to Determine Word Relevance in Document Queries. Proceedings of the First Instructional Conference on Machine Learning, iCML. 2003. [REISINGER 2009] REISINGER, D. How Twitter replaced my RSS reader. CNET News. Maro 2009. Disponvel em <http://news.cnet.com/8301-17939_10910185182-2.html>. Acesso em: abril 2012. [SALEEM 2007] SALEEM, M. Its The (Other) Algorithm, Stupid! Understanding DiggRank. Searchengineland. Novembro 2007. Disponvel em <http://searchengineland.com/it%E2%80%99s-the-other-algorithm-stupidunderstanding-diggrank-12790>. Acesso em: abril 2012.

153

[SHIRKY, 2008] SHIRKY, C. Its not information overload, its filter failure, Web 2.0 Expo Keynote. Apresentao oral. Setembro 2008. Disponvel em <http://web2expo.blip.tv/file/1277460>. Acesso em: abril 2012. [SMALLRIVERS 2011] SMALLRIVERS. Paper.li, or fixing the filter failure. Paper.li Blog. Janeiro 2011. Disponvel em <http://blog.paper.li/2011/01/paperli-or-fixing-filterfailure.html>. Acesso em: abril 2012. [SPRING 2002] SPRING, T. Google Launches News Service. Computer World. Setembro 2002. Disponvel em

<http://www.computerworld.com/s/article/74470/Google_launches_news_service>. Acesso em: abril 2012. [STRANGE 2007] STRANGE, A. What Makes Techmeme Tick? Inventor Gabe Rivera Explains. Wired.com. Maio 2007. Disponvel em

<http://www.wired.com/techbiz/media/news/2007/05/techmeme>. Acesso em: abril 2012. [SULLIVAN 2010] SULLIVAN, D. Wheres AP In Google News? Apparently In Limbo, As Contract Running Out. Search Engine Land. Janeiro 2010. Disponvel em < http://searchengineland.com/wheres-ap-in-google-news-33164>. Acesso em: abril 2012. [TECHMEME 2012] TECHMEME. About Techmeme. Disponvel em

<http://www.techmeme.com/about>. Acesso em: abril 2012. [WIKIPEDIA 2012] WIKIPEDIA. List of Music Genome Project attributes. Disponvel em <http://en.wikipedia.org/wiki/List_of_Music_Genome_Project_attributes>. Acesso em: abril 2012. [WINNER 2009] WINNER, D. The first web-based RSS feed reader. ScriptingNews. Julho 2011. Disponvel em

<http://scripting.com/stories/2011/07/19/theFirstWebbasedRssFeedRea.html>. Acesso em: abril 2012. [ZELDES 2010] ZELDES, N. Yes it IS Information Overload, Clay Shirky, not only Filter Failure. Nathan Zeldess Blog. Maio 2010. Disponvel em <http://informationoverload.nzeldes.com/blog/2010/05/yes-it-is-information-overload-clay-shirky-notonly-filter-failure/>. Acesso em: abril 2012.

Você também pode gostar