• Nenhum resultado encontrado

Passo 2: Análise de influência por contagem de Retuítes e Menções 29

Men-ções

Uma vez que já é possível coletar os dados na rede, em tempo real, é necessário definir métricas para avaliar a influência dos usuários. Baseado no trabalho de (CHA et al., 2010), os seguintes dados serão utilizadas:

• Quantidade de seguidores; • Quantidade de retuítes; • Quantidade de menções.

(CHA et al.,2010) e (BAKSHY et al.,2011) afirmam que a quantidade de seguidores representam a audiência de determinado usuário. Isto porque, no Twitter, quando um usuário envia um tuíte, todos os seus seguidores irão receber essa mensagem. Então, teoricamente, quanto maior a quantidade de seguidores de um usuário, maior será o espalhamento de determinado conteúdo.

A segunda métrica definida, quantidade de retuítes, segundo (CHA et al., 2010), representa o valor do conteúdo de um tuíte. Quando um usuário lê um tuíte e se identifica com este conteúdo, ele tende a retuíta-lo para que os seus seguidores também vejam este mesmo tuíte. Esta funcionalidade é muito poderosa porque é a responsável pela difusão exponencial de conteúdos na rede. É importante citar que esta funcionalidade tem mais poder de difusão de conteúdo do que simplesmente a funcionalidade de seguidores. Ou seja, se um tuíte é enviado por um usuário que possui 100 seguidores, 100 pessoas poderão ver este tuíte; entretanto, se esse tuíte for retuitado por 1 pessoa que tem 1.000 seguidores, mais mil pessoas poderão ver este tuíte.

A quantidade de menções representa o valor de nome de determinado usuário(CHA et al.,2010), ou seja, o poder de engajamento de determinado usuário perante os outros. Pessoas públicas e celebridades costumam ser muito mais mencionados do que pessoas comuns.

Baseado nesses estudos, a figura5 exibe a arquitetura construída neste trabalho para coleta, tratamento e análise dos dados:

Figura 5 – Arquitetura para descoberta dos usuários influentes

Esta arquitetura identifica as etapas necessárias para o identificação dos usuários mais influentes. Entretanto, ela pode ser dividida em dois momentos:

1. Coleta dos dados

2. Tratamento e análise

Para a coleta dos dados, será utilizada a Streaming API do Twitter, descrita anteriormente. Todos os tuítes que forem coletados deverão ser armazenados em um arquivo de saída do algoritmo desenvolvido neste projeto. Apesar de todos os campos recebidos do Twitter serem armazenados, os campos utilizados nessa metodologia serão: identificador único do tuíte, data e hora de criação, mensagem, usuário que criou o tuíte,

usuários retuitados (se houver), usuários mencionados (se houver) para cada tuíte coletado. Dessa forma, foi possível diminuir o tamanho do arquivo em 10 vezes comparado ao tamanho total de cada JSON do tuíte. Esse processo de coleta pode durar horas, dias, meses, dependendo apenas da estratégia definida pelo analista.

O segundo momento é o tratamento e análise dos dados. Uma vez que milhares de

tuítes foram coletados e armazenados em arquivo, é necessário a criação de um algoritmo

para tratamento desses dados. Esse tratamento deverá ler os dados e organizá-los em rankings de quantidade de retuítes por usuários e quantidade de menções por usuário. A audiência de um usuário (seguidores) será realizada manualmente em um processo externo. Para isso, um algoritmo foi desenvolvido, também em Python, com este objetivo. Os rankings de retuítes e menções foram gravados em arquivos diferentes e os dados no formato CSV, em que as colunas são separadas por ponto-e-vírgula. Isto porque facilita a análise em um editor de planilhas, como o OpenCalc ou Excel.

No entanto, a contagem de retuítes e menções são métricas que indicam somente quais usuários são influentes na amostra coletada. Se utilizando somente dessas métricas, não é possível saber o porquê que este usuário é influente e, ainda, se ele realmente é influente ou se algum outro usuário, o verdadeiro formador de opinião, foi o responsável por difundir seu conteúdo através de retuítes.

Sendo assim, outras duas métricas deverão ser utilizadas para validar a métrica de contagem, são elas:

1. Métricas de Redes Complexas

2. Fórmula de Tunk Rank

3.3 Passo 3: Análise de influência por métricas de Redes Complexas

e algoritmo TunkRank

As métricas de centralidade de redes complexas serão implementada para auxiliar o entendimento de influência dos usuários no Twitter. O objetivo é ranquear os usuários de acordo com a centralidade destes, onde serão analisadas: centralidade de grau, betweenness,

closeness e autovetor (semelhante ao PageRank).

Para aplicar as métricas citadas, a amostra coletada do Twitter será inserida em um banco de dados de grafos, que faz parte da malha de bancos de dados NoSQL (Not

Only SQL) que vêm sendo vastamente utilizada recentemente em projetos de Big Data

(CHANG et al., 2008). Existem outros tipos de bancos de dados, além de grafos, como por exemplo: bancos de dados chave/valor e bancos de dados orientados a documentos. Por conta da estrutura das redes sociais online, o banco de dados de grafos faz a melhor

representação dos dados, onde cada usuário é um vértice e seus relacionamentos são as arestas, conforme já foi explicado anteriormente.

A grande vantagem de implantar um banco de dados de grafos nesse projeto ocorre porque ele já possui, em sua biblioteca nativa, vários algoritmos de redes complexas implementados. Sendo assim, basta usar a API e chamar seus métodos de betweenness,

closeness, menor caminho, dentre outros.

Outra opção existente para validar a influência de um usuário é a implementação de um algoritmo recursivo chamado Tunk Rank. Esta função matemática pode ser representada por: Inf luence(X) = X Y ∈F ollowers(X) (1 + p ∗ Inf luence(Y )) ||F ollowing(Y )|| (3.1) (3.2) Onde:

• Inf luence(X) é o número esperado de usuários que irão ler um tuíte escrito e postado pelo usuário X, incluindo os retuítes. Para simplificar, o autor assumiu que se uma pessoa ler a mesma mensagem mais de uma vez (por causa dos retuítes), ambas as leituras serão contadas.

• Se X é seguidor de Y , então existe uma probabilidade de 1/||F ollowing(X)|| de que

X lerá o tuíte postado por Y , onde F ollowing(X) é o conjunto de pessoas que X

segue no Twitter. Isso porque todos os tuítes postados por cada um dos usuários que X segue, aparece em sua timeline.

• Se X leu o tuíte de Y , então existe uma probabilidade constante p de que X irá retuítar esta mensagem.

Claramente, esta fórmula matemática é simplista em suas hipóteses, porém é possível se obter bons resultados quanto à influência de cada usuário. Sua recursividade termina quando o usuário Y não segue outro usuário, retornando 0.

Se fez necessário adaptar a fórmula sugerida por Daniel Tunkelang para utilização neste trabalho, porque ela exige que se tenha toda a rede de usuários e seus seguidores até o fim, o que não é viável porque o Twitter não disponibiliza esses dados em tempo hábil. Dessa forma, decidiu-se inserir no banco de dados de grafos todos os usuários que escreveram tuítes coletados via Streaming API, seus seguidores e os seguidores dos seguidores. Ou seja, serão inseridos três níveis na hierarquia de seguidores de um usuário. Essa coleta dos seguidores se dará por largura e não por profundidade.

Outra adaptação necessária é a realização de experimentos para o valor de p da fórmula, visto que a probabilidade de que um usuário retuíte um tuíte não é fixa. Sendo assim, é sugerido que p seja:

1. Igual para todos os usuários, calculado a partir da média de retuítes na amostra (somando todos os retuítes);

2. Individual para cada usuário X, calculado a partir da média de retuítes desse usuário na amostra;

3. Para cada dupla de usuários X e Y, calculado a partir da probabilidade de um usuário Y retuitar um usuário X baseado na amostra.

Para validação da influência de um usuário, tanto com algoritmos de redes complexas quanto com o algoritmo recursivo TunkRank, será necessário a inserção dos seguidores de cada usuário da amostra. Para tal, será necessário utilizar a REST API do Twitter se utilizando do método user_lookup.

O banco de dados de grafos escolhido para este trabalho foi o Neo4J, por ser o mais consolidado do mercado atualmente. Será utilizada a versão Community, visto que também existe a versão Enterprise que é paga, executando na versão 2.0.1 em um servidor simples, com processador QuadCore, 8GB de memória RAM e 1TB de disco rígido.

Em comum entre as técnicas de redes complexas e do algoritmo TunkRank, é necessário a inserção dos seguidores de cada usuário coletado. Contudo, a inserção de seguidores é muito custosa, visto que é necessário enviar uma requisição ao Twitter, utilizando a REST API, a cada 20 seguidores de 1 usuário da amostra. Por dia, é possível inserir, em média, 10 milhões de seguidores no banco. Alguns usuários, por si só, possuem mais que 10 milhões de seguidores.

Então, para criação do grafo no Neo4J foi escolhida a seguinte estratégia:

• De toda a amostra coletada, escolher um tema e extrair somente 1 milhão de tuítes; • Inserir no Neo4J os 1 milhão de tuítes e os usuários que escreveram e retuitaram cada tuíte, que também tem na amostra, com o relacionamento “Wrote” e “Retweeted”;

• Capturar para cada um dos usuários inseridos no Neo4J, seus seguidores via REST API junto ao Twitter;

• Inserir os seguidores no Neo4J com o relacionamento “Followed”;

• Após algumas semanas de inserção, notou-se a inviabilidade da inserção dos seguidores de todos os usuários. Sendo assim, a estratégia foi alterada para inserir 2 níveis de seguidores dos 30 usuários que tiveram maior contagem de retuítes.

Foi construído então um grafo direcionado e muito volumoso. A figura 6 exibe a tela de administração do Neo4J e seu volume. Este BD possui aproximadamente 33 milhões de vértices e 42 milhões de arestas. Já a figura 7 exibe uma pequena amostra real da estrutura do grafo gerado neste projeto. A estrutura do grafo possui dois tipos de nós (vértices):

• User • Tweet

e três tipos de relacionamentos (arestas):

• Wrote: usuário que escreveu o tuíte;

• Retweeted: usuários que retuitaram um tuíte;

• Followed: usuários que seguem outros usuários no Twitter.

Dentre as propriedades de cada usuário que é armazenado no Neo4J, as seguintes propriedades estão sendo inseridas:

• id: identificador único de cada usuário, gerado pelo Twitter; • name: nome do usuário exibido em seu perfil;

• screen_name: nome único, que também serve de identificador de um usuário; • created_at: data e hora de criação do perfil;

• location: local onde vive o usuário;

• friends_count: quantidade total de usuários que este perfil segue; • followers_count: quantidade total de usuários que seguem este perfil; • statuses_count: quantidade total de tuítes criados por este usuário;

• listed_count: quantidade total de listas que o usuário está inserido, listas estas criadas por outros usuários

• favourites_count: quantidade total de usuários que “favoritaram” este perfil • verified: indicador para saber se é um perfil real, muito útil quando o perfil é de

Figura 6 – Volume de dados no Neo4J

Figura 7 – Pequena amostra do grafo criado

Não foi possível realizar os experimentos com medidas de redes complexas e com o algoritmo TunkRank porque a inserção de usuários e seus seguidores dentro do grafo não foi finalizada. A reconstrução da rede social Twitter é muito custosa e lenta, então estes testes passaram a fazer parte da estratégia de trabalhos futuros.