1) O documento descreve um coletor web desenvolvido para coletar dados da rede social Orkut, incluindo lista de amigos de cada usuário, com o objetivo de reconstruir a rede social subjacente.
2) Os primeiros resultados mostraram que, conforme o tamanho do grafo coletado aumenta, as métricas estruturais se aproximam dos achados de outros estudos em redes sociais reais.
3) A distribuição dos graus dos vértices segue a lei de potência, característica comum em redes sociais e out
Boas práticas de programação com Object Calisthenics
Crawling Orkut
1. 1
Coletando relações sociais na rede Orkut
Rogério Minhano, Universidade Federal do ABC (UFABC), Mestrado em Engenharia da Informação.
grafo social em que os usuários são os vértices e suas relações
Resumo — Vários indícios sugerem a existência de uma rede de amizade são as arestas.
social por trás das redes geradas nos sistemas de recomendações. Os vértices de um grafo social é frequentemente associado a
Como provar a existência delas? Serviços de Redes sociais são um conjunto de informações inerentes ao usuário. As mais
aplicações web que proporcionam aos seus usuários interação e
relacionamento com outras pessoas. Seus dados podem revelar comuns são as informações pessoais (perfil), fotos, vídeos,
comportamentos importantes para a vida em sociedade. Neste publicações, lista de amigos, mensagens e recados. Nosso
artigo descrevemos o funcionamento de um coletor web (crawling objetivo é a recuperação do grafo, buscamos apenas a lista de
web). Mostramos também as principais características dos grafos amigos de cada vértice. O processo de coleta inicialmente
gerados a partir das coletas. formará grafos esparsos em formato de árvore. A cada vez que
o coletor executa um ciclo completo mais arestas são
Índice de termos — grafos, redes sociais, redes complexas,
adicionadas. Logo, espontaneamente os grafos esparsos
aplicações web, coletores web.
começam a se agrupar formando um único grafo conectado.
I. INTRODUÇÃO Demonstramos as primeiras impressões que tivemos do
grafo gerado pelo coletor. Calculamos algumas métricas
Em abril de 2010 submetemos um trabalho intitulado “Uma estruturais em três estágios. Os grafos gerados possuem
visão do marketing viral através da análise de redes aproximadamente um (1M), dois (2M) e três (3M) milhões de
complexas.” Nesse artigo estudamos como ocorrem as vértices, respectivamente.
interações e troca de recomendações entre assinantes de Ao final, mostramos que conforme aumenta o tamanho do
revistas. Durante a pesquisa foi foram demonstrados vários grafo coletado mais próximo o resultado fica dos resultados
indícios da existência de uma rede social por trás das alcançados por outros pesquisadores.
recomendações. Isto é, os assinantes não recomendavam O Artigo está organizado da seguinte forma. A sessão II
apenas para ganharem os bônus ou benefícios oferecidos. Mais apresenta alguns trabalhos relacionados e suas implicações
que isso, eles recomendavam porque existe realmente uma para nossos experimentos. A sessão III trata efetivamente das
relação de troca de recomendações entre o que faz a características e estratégias utilizadas no processo de coleta
recomendação e o recomendado. Dessas suposições surgiram dos dados. A sessão IV discute os resultados extraídos dos
os seguintes interesses de pesquisa: Existe realmente uma rede primeiros três milhões de usuários coletados e, finalmente, a
social por trás das recomendações? Como provar essa sessão V expõe algumas discussões e trabalhos futuros.
existência? A forma que escolhemos para responder essas
perguntas é a comparação das redes de recomendação com II. TRABALHOS RELACIONADOS
uma rede social real.
Serviços de redes sociais (SRS) são aplicações web que Antes de tudo, dados de redes sociais são as informações de
proporcionam aos seus usuários interação e formas de maior valor para os provedores de SRS. Eles são protegidos
relacionamento com outras pessoas que também sejam regras de privacidades do próprio SRS e por leis
usuárias do mesmo serviço. Essas interações são na forma de governamentais, portanto, é difícil conseguir os dados
vídeos, mensagens instantâneas, fotos, depoimentos, e etc. diretamente dos provedores. Em segundo lugar, é um grande
Nos SRS estão disponíveis muitas características desafio computacional coletar dados de milhões de usuários
comportamentais de seus usuários e, extrapolando essa visão, das redes sociais. Muitas aplicações utilizam recursos
por trás dos dados armazenados podemos descobrir também dinâmicos nas páginas (Ajax e DHTML) e, por isso não é
características de grupos. Por isso existe tanto interesse de trivial desenvolver um tradutor eficiente. Além disso, essas
pesquisa nessa área. Entretanto, os SRS não disponibilizam aplicações possuem várias formas de customização de suas
seus dados para pesquisa principalmente por questões interfaces. Por último, a maioria dos SRS possui mecanismos
relacionadas a privacidades. Logo, existe o problema da coleta próprios de defesa contra coletas robotizadas, portanto, a
dessas informações. dificuldade é ainda maior.
Um coletor web (ou web crawler) é uma aplicação que Desta forma, relacionamos aqui os trabalhos de coletas que
efetua buscas na web com um objetivo especifico. Como o julgamos mais significativos e que estão mais próximos do
Google, que coleta informações de páginas para depois coletor que desenvolvemos.
indexá-las. Nesse artigo descreveremos o funcionamento de A pesquisa conduzida por Mislove et al. [7] é, até onde
um coletor para recuperação de dados do SRS Orkut. Mais temos conhecimento, o maior estudo baseado em dados
especificamente, esse coletor tem como objetivo montar um coletados de SRS já publicado. Foram coletados 11.3 milhões
2. 2
de usuários e 328 milhões de relações. Suas análises Naturalmente, nosso objetivo pode ser divido em duas partes:
confirmaram grande parte das propriedades conhecidas das a coleta dos vértices e a coleta das arestas.
redes sociais, como distribuição dos graus segundo a lei da Os vértices de um grafo social é frequentemente associado a
potência e agrupamentos fortemente conectados. Leskovec et um conjunto de informações inerentes ao usuário. As mais
al. [1] analisou vários algoritmos de amostragem para grafos e comuns são as informações pessoais (perfil), fotos, vídeos,
mostrou o quanto uma coleta pode ser viciada. Gjorka et al. publicações, lista de amigos, mensagens e recados. Todas elas,
propôs um método para amostragem que seleciona os vértices com um nível maior ou menor de dificuldade, podem ser
uniformemente sem necessidade de conhecimento sobre a rede recuperadas. Como nosso objetivo é a recuperação do grafo,
inteira. buscamos apenas a lista de amigos de cada vértice. Por outro
Entretanto, todos esses trabalhos selecionam os vértices que lado, poucas informações são associadas às arestas do grafo.
irão iniciar as coletas com alguma probabilidade. Fazem isso Na maioria dos casos as informações tratam apenas da forma
com o objetivo de diminuir o viés do resultado. Porém, em como o usuário categoriza seus amigos, por exemplo, amigos,
nosso caso, o objetivo é exatamente o contrário. Como nosso companheiros de trabalho, familiares, etc. Logo, a única
ponto de partida é a rede de recomendações, buscamos formar informação referente às arestas que nos interessa é a sua
o grafo mais conectado possível ao redor dos usuários da rede própria existência.
de recomendações.
Escolha dos vértices iniciais
A escolha dos alimentadores é um passo importante no
III. COLETOR DE REDES SOCIAIS
processo de coleta. É denominado alimentador o vértice pelo
Definição qual o processo de coleta é iniciado. A maioria dos coletores
O que é um web crawler, ou coletor web? Em primeira que estudamos escolhe aleatoriamente seus alimentadores.
instância estamos falando de uma aplicação que faz buscas e Essa abordagem é interessante quando o objetivo é capturar
captura de informações na rede com um objetivo determinado. um exemplo do grafo. Contudo, existem evidencias de que
O Google, por exemplo, busca páginas (no contexto mais algumas características do grafo resultante não são fieis ao
amplo de uma página web) para depois indexá-las. No nosso grafo real [1][2].
caso estamos falando especificamente de coletas em serviços Em nosso caso, a pilha inicial de alimentadores é composta
de redes sociais (SRS). Logo, nosso objetivo é fazer busca nas de uma coleção de usuários já estabelecida. Nossa pesquisa
redes e capturar informações específicas dentro de suas consiste em demonstrar empiricamente a existência de uma
páginas. rede social por trás de uma rede de indicações, portanto, a lista
Grande parte dos SRS fornece bibliotecas de código aberto de indicações é nosso ponto de partida para formarmos o grafo
que auxiliam no processo de coleta dos dados. Algumas delas social. Logo, se nosso grafo está de alguma forma diferindo da
são Facebook1, Flirck 2 e Twitter3. Entretanto, nosso objetivo é realidade, isto ocorre propositalmente.
efetuar coletas na rede social Orkut4. O Orkut fornece uma
Algoritmo utilizado
biblioteca para desenvolvimento de aplicações chamada Open
Quatro algoritmos para coleta dos vértices são vastamente
Social. Essa, por sua vez, não permite a captura de
utilizados na prática.
informações da rede. Logo, uma característica preponderante
em nosso coletor é a simulação de um paginador (web • BFS (breadth-first search): É o algoritmo mais
browser) e o tratamento das páginas recuperadas. popular, faz seleção simples do primeiro item da pilha.
Qual a finalidade do coletor? • Greedy: O coletor seleciona o vértice com o maior
Toda rede social pode ser modelada como um grafo. Um grau5 na pilha, desde que o vértice não tenha sido
grafo é um formalismo matemático que serve para representar coletado ainda.
objetos e relações entre eles. Esta simples estrutura encontra- • Lottery: O coletor seleciona o vértice com maior
se em uma grande diversidade de aplicações como circuitos probabilidade proporcional ao seu grau. Este algoritmo
elétricos, estradas, vários tipos de redes, ecossistemas, prefere os vértices com os graus maiores, mas ele
relações sociais, interação molecular, bases de dados, também seleciona os de graus menores para reduzir o
estruturas de controle de programas e sistemas de permissões viés da amostra.
de sistemas de segurança. Estes são alguns exemplos da • Hypothetical greedy: O coletor sempre seleciona o
grande variedade de aplicações da teoria dos grafos. vértice com maior grau na pilha, dado que o maior grau
Da perspectiva de um grafo, os usuários dos SRS podem ser aqui é o maior grau no grafo real, isto é, o maior grau
modelados como vértices e suas relações sociais como arestas. verdadeiro. Um cenário típico para aplicação desse
O objetivo deste artigo é discutir o processo de busca e algoritmo é a amostragem de um subgrafo de um grafo
recuperação de dados do grafo social por trás do Orkut. maior.
1
http://www.facebook.com/
5
2
http://www.flickr.com/ Grau de um vértice é a quantidade de arestas conectadas a ele. Geralmente
3 são divididos em graus direcionados de entrada e graus de saída. Porém, como
http://www.twitter.com/
na SRS Orkut uma pessoa adicionada como amigo precisa necessariamente
4
http://www.orkut.com/ aceitar o convite, o vértice criado não é direcionado.
3. 3
O algoritmo utilizado em nosso coletor é o BFS por ser o Da mesma forma, podemos observar que a média do
que melhor se encaixa em nossas necessidades. coeficiente de agrupamento7 também é crescente.
Sendo assim, o processo de coleta do grafo social pode ser
Tabela 1: Métricas gerais sobre as redes. (G) Nome do grafo, (V)
resumido nos seguintes passos: Número de vértices, (A) Número de arestas, (MV) Média dos
1. Organizar os vértices alimentadores em uma pilha (a graus dos vértices, (CA) Média do coeficiente de agrupamento e
(α) Parâmetro de escala.
ordem é indiferente porque de qualquer forma todos
serão coletados); G V A MV CA α
2. Selecionar o primeiro vértice alimentador;
3. Coletar o vértice no SRS; 1M 924.764 996.575 2,155 0,000246 1,041
4. Armazenar a lista de amigos do vértice; 2M 1.741.084 996.575 2,289 0,000514 1,129
5. Voltar para o passo dois até que toda lista de amigos 3M 2.479.609 3.479.396 2,806 0,000782 1,463
dos alimentadores seja coletada;
6. Categorizar os vértices coletados como alimentadores e Distribuição Lei da Potência
voltar para o primeiro passo até que o sexto nível seja A teoria das redes complexas tem sido usada vastamente no
alcançado. estudo de interações humanas. Vários autores mostraram que
essas redes frequentemente seguem uma distribuição chamada
O processo de coleta inicialmente formará grafos esparsos Power-law, ou lei da potência [5]. Esta distribuição possui
em formato de árvore. A cada vez que o coletor executa um uma função de densidade de probabilidade (FDP) da forma
ciclo completo mais arestas são adicionadas. Logo, , onde é a probabilidade de encontrarmos o
espontaneamente os grafos esparsos começam a se agrupar valor , é uma constante e é um parâmetro da distribuição
formando um único grafo conectado. Isso acontece devido ao chamado de parâmetro de escala. De forma geral, para todas
efeito mundos pequenos, que demonstra que as pessoas em um as redes encontradas na natureza, o parâmetro de escala
grafo real estão sempre a menos de seis passos de separação encontra-se próximo dos limites dois e três, isto é, .
[3]. O coletor será finalizado ao final da coleta do sexto nível. Um outro termo, que também caracteriza essas redes, muito
comum encontrado na literatura é redes de escala livre.
IV. PRIMEIROS RESULTADOS
Nosso objetivo nesta sessão é demonstrar as primeiras
impressões que tivemos do grafo gerado pelo coletor. Para
isso calculamos algumas métricas estruturais de interesse geral
para a rede gerada em três estágios. Os grafos gerados
possuem aproximadamente um (1M), dois (2M) e três (3M)
milhões de vértices, respectivamente. Utilizaremos como
exemplo grafos com no máximo três milhões devido ao custo
computacional dos algoritmos executados.
Métricas de interesse
Nós usamos apenas métricas para medidas estruturais das
redes. Como todas elas são utilizadas e discutidas vastamente
na literatura não iremos defini-las uma a uma. Apenas nos
momentos essenciais para o entendimento do texto
explicaremos o significado. Contudo, para um melhor
entendimento dos cálculos empregados na obtenção das Figura 1: Distribuição de probabilidade em função da
medidas, indicamos a seguinte leitura [6]. conectividade dos vértices para os grafos 1M, 2M e 3M.
Na Tabela 1 podemos observar a progressão na
Existem várias formas de se estimar o parâmetro de escala
conectividade6 dos vértices. A métrica MV é a média de
de uma lei da potência. Uma abordagem bastante utilizada é
conectividade dos vértices. Aqui, podemos traduzir como a
construir um histograma dos dados e traçar um gráfico em
média de amigos de um usuário. Em todos os três casos
escala logarítmica (log-log) dos valores. O resultado é uma
estudados a média deu abaixo de três, o que está muito longe
linha muito próxima de uma reta. Contudo, em vários casos
do esperado. Isso acontece porque o coletor faz buscas em
esse método não é eficiente e a maioria de seus resultados são
largura, logo, como explicamos na sessão III, os resultados
pobres comparado a técnicas mais precisas como o Maximum
serão sempre em formato de árvores. Mesmo assim podemos
Likelihood Estimation (MLE), ou estimação da máxima
observar que a progressão na conectividade está acontecendo.
verossimilhança[5]. Utilizaremos à técnica MLE.
7
Coeficiente de agrupamento representa a probabilidade de existir uma
relação entre A e C, dado que A conhece B e B conhece C. Logo, quanto mais
6
Conectividade de um vértice representa a quantidade de vértices que são próximo o coeficiente chegar de 1 maior é a probabilidade de A, B e C se
adjacentes a ele. conhecerem.
4. 4
A Figura 1 mostra a diferença entre as FDPs nos três grafos. resultado. Portanto, esperamos constatar em trabalhos futuros
Como podemos perceber a quantidade de vértices com que nossas suposições estejam corretas.
probabilidade parecida é preponderante. Isso é resultado do
processo de coleta. A cada nível coletado no grafo, os vértices V. DISCUSSÃO E TRABALHOS FUTUROS
que são coletados invariavelmente possuem poucas arestas. O tamanho do grafo coletado até abril de 2010 é de
Isto é, certamente ele possuirá uma aresta ligada ao aproximadamente 15 milhões de vértices e 40 milhões de
alimentador e, além dessa, algumas arestas a mais que são arestas. A quantidade de arestas cresce mais rápido que a de
referentes aos seus amigos que já foram coletados e vértices, como é esperado. É difícil estimar a quantidade atual
armazenados. Conforme o processo de coleta avança, avança de usuários ativos no SRS Orkut. Nas páginas oficiais sobre
também a quantidade de arestas em relação aos vértices. Logo, estatísticas estão disponíveis apenas informações sobre a
como nesse estágio os três grafos possuem quantidades de porcentagem de usuários por país. O Brasil é o primeiro da
vértices e arestas próximas, a probabilidade de um vértice que lista e representa 50,6% dos usuários ativos [4]. Porém,
acabou de ser coletado tende a ser pequena. Com o passar do baseados apenas nessas informações não é possível quantificar
tempo esperamos que essa linha formada na Figura 1 chegue a porcentagem de usuários já coletados na rede.
cada vez mais próximo de uma reta. O parâmetro de escala Isso é uma grande preocupação, pois não temos formas de
mostrado Tabela 1 também está abaixo do esperado para uma estimar o final do processo de coleta. No estágio atual, o
rede social ( ), mas também demonstra avanços coletor já recuperou aproximadamente metade do segundo
conforme o tamanho do grafo aumenta. nível, isto é, utilizando os vértices do primeiro nível como
alimentadores. Então, ao final dessa fase, teremos dois níveis
completos e um apenas com as arestas do alimentador e dos
amigos que já haviam sido coletados. Como nosso objetivo é
coletarmos um grafo altamente conectado, modificaremos a
estratégia de coleta. O coletor passará recuperar as relações
entre os usuários armazenados no segundo nível. Isso será o
estágio final de nossa coleta.
Contudo, os dados atualizados da coleta mostram que todos
os resultados mostrados nesse artigo estão cada vez mais
coerentes com os resultados apontados por outros
pesquisadores.
REFERÊNCIAS
[1] J. Leskovec and C. Faloutsos, “Sampling from large graphs,” in
KDD’06: Proceedings of the 12th ACM SIGKDD international
conference on Knowledge discovery and data mining, 2006, pp. 631–
636.
Figura 2: A conectividade média (knn) dos vizinhos mais [2] S. H. Lee, P.-J. Kim, and H. Jeong, “Statistical properties of sampled
próximos em função da conectividade do vértice (k) para os networks,” Phys. Rev. E, no. 73, p. 016102, 2006.
grafos 1M, 2M e 3M. [3] D. J. Watts and S. H. Strogatz, “Collective dynamics of ‘small-world’
networks,” Nature, vol. 393, pp. 440–442, 1998.
[4] Orkut (2010). All Members. http://www.orkut.com/MembersAll,
Correlação entre os vértices Acessado em 05/05/2010.
A Figura 2 mostra qual é a relação preponderante entre os [5] A. Clauste, C. R. Shalizi, and M. E. J. Newman. Power-law distributions
vértices do grafo. Para isso mostramos uma correlação entre in empirical data. SIAM Review, 2009.
os valores obtidos pelo algoritmo k-vizinhos mais próximos, [6] Luciano F. Costa, Francisco A. Rodrigues, Gonzalo Travieso, and P.R.
Villas Boas, Characterization of complex networks: A survey of
ou k-nearest neighbors knn e o grau dos vértices k . Logo, measurements, Advances in Physics, volume 56, pp 167-242, 2007.
obtemos dessa correlação a frequência em que os vértices de [7] A. Mislove, M. Marcon, K. P. Gummadi, P. Druschel, and B.
diferentes graus se relacionam. Isso pode nos indicar, por Bhattacharhjee. Measurement and analysis of online social networks.
Proceedings of the internatonal ACM conference SIGCOMM, pages 29-
exemplo, que vértices altamente conectados tendem a se 42, 2007.
conectar com vértices de baixa conectividade ou se os vértices [8] M. Gjoka, M. Kurant, C. T. Butts, and A. Markopoulou, “Unbiased
se conectam com vértices de conectividade similares. Como sampling of facebook,” 2009.
podemos perceber os vértices de nossa amostra tendem a se
conectar com vértices menos conectados. Outros trabalhos já
mostraram que os usuários da rede Orkut tendem a se conectar
com usuários de conectividade semelhantes [7]. Portanto,
atribuímos essa disparidade no comportamento a quantidade
limitada de arestas que estamos trabalhando.
É esperado que o resultado da Figura 2 fique mais próximo
de uma linha horizontal. Como podemos ver, conforme
aumenta o tamanho da rede mais próximo disso fica o