* Este tutorial foi elaborado por Adriano Belisário, Luan Rodrigues e Manuella Caputo a partir das anotações de Glória Maria Brito dos Santos e Patrícia do Nascimento no workshop sobre grafos realizado por Janderson Toth e Pedro Meirelles na IV Conferência de Jornalismo de Dados e Métodos Digitais. Janderson Toth também colaborou na revisão deste tutorial. Confira também a apresentação utilizada no workshop para mais informações e referências sobre o tema.
Gráficos, tabelas e mapas são apenas algumas das diferentes soluções possíveis para lidar com dados. Para a analisar relações entre entidades, uma forma de representar dados muito potente são os grafos. Com eles, você pode descobrir relações entre perfis, indivíduos e grupos, além de mapear comunidades de interesse, afiliação, trocas ou identificar influenciadores em temas, entre várias outras possibilidades.
Resumidamente, grafos são formados por nós e unidos por arestas. Por meio das arestas e nós, é possível compreender as relações estabelecidas entre atores ou termos de uma determinada rede social.
Neste tutorial, veremos como construir grafos na prática usando o software Gephi para uma análise de uma rede de canais no Youtube.
O QUE VOCÊ NÃO PODE DEIXAR DE SABER SOBRE GRAFOS
NÓS E ARESTAS
Antes de botar a mão na massa, vamos fixar alguns conceitos básicos. Assim como tabelas possuem colunas e linhas, os gráficos também têm em sua formação dois elementos essenciais: os nós e as arestas. Vejamos o que significa cada um deles.
Nós: representam as entidades em questão, sejam elas pessoas, perfis do Twitter, empresas, páginas ou usuários do Facebook, canais ou vídeos do Youtube, etc. Estes nós podem possuir atributos ou características específicas, tais como tipos, tamanho e peso;
Arestas: são as conexões entre os nós, representam as relações entre as entidades. Em uma rede social, por exemplo, estas relações podem representar interações como curtidas, retweets (no caso do Twitter) ou conexões entre canais de YouTube, como veremos neste tutorial;
TIPOS DE GRAFOS
A partir destes dois elementos básicos, é possível construir diferentes tipos de grafos. Vejamos dois deles.
- Grafo direcional: as arestas têm uma ou mais direções, a ligação entre os nós não é necessariamente mútua. (No Instagram, por exemplo, você pode seguir alguém sem que a pessoa te siga obrigatoriamente);
- Grafo não-direcional: as arestas não são direcionadas e as ligações são mútuas. É o caso das amizades no Facebook, por exemplo. Não é possível ser amigo de alguém sem que recíproca seja verdadeira também;
GRAUS DOS NÓS
Baseado nisto, existem algumas métricas básicas relacionadas aos nós, que nos ajudam a quantificar aspectos importantes das relações que ele estabelece. Não iremos aprofundar nestas definições, mas precisamos entender o conceito de “grau” dos nós para seguir com nossa análise e visualização de dados do Youtube.
O grau de um nó indica o número de arestas que estão conectadas a ela.
Representação de um grafo onde os valores números, representam o grau dos nós. Fonte: EMBL-BI
No caso de grafos direcionais, podemos calcular os graus de saída e entrada de cada nó.
- Grau de saída: quantidade de arestas que saem de um nó. Quando um perfil segue outro no Twitter, ele busca por interação e, portanto, sai em direção a outro nó;
- Grau de entrada: quantidade de arestas que entram em um nó. Quando um perfil é seguido por outro, ele recebe uma interação e, portanto, uma nova aresta;
CLUSTERS OU COMUNIDADES
São grupos formados por nós dentro dos grafos, que possuem alto grau de relação ou conexão entre si. É fácil identificar este fenômeno se você pensar, por exemplo, nas suas amizades como uma rede. Se cada ponto for uma pessoa e os traços entre elas representarem laços de amizade, você provavelmente veria a formação de grupos com alto grau de conexão entre si. As pessoas da sua família, do seu trabalho ou escola, por exemplo, tendem a aparecer como “grupos” ou clusters com muitas conexões entre si.
Exemplo de clusters de diferentes tamanhos, separados pelas linhas pontilhadas. Fonte: Wikimedia Commons
No Gephi, os clusters podem ser identificados por meio das estatísticas de “modularidade”. Mais à frente, veremos isso em funcionamento na prática.
O universo de análise de redes é enorme. Além dos conceitos já apresentados, há muitos outros, tais como grafos nulo (sem arestas), grafos valorados (onde há um “peso” para as arestas para representar a intensidade de uma relação) e etc. Como nosso objetivo aqui é introdutório, vamos nos basear apenas nestas ideias iniciais já apresentados para agora colocá-las em prática em uma análise de dados real.
Vamos te mostrar como você pode visualizar as redes de canais do Youtube utilizando ferramentas gratuitas e livres. Ao final do tutorial, você conseguirá “plotar” redes como esta abaixo.
Botando a mão na massa
OBTENDO OS DADOS
Para obter os dados do Youtube, vamos utilizar a ferramenta Youtube Data Tools. Você pode utilizá-la para fazer suas próprias consultas ou simplesmente já usar um arquivo que geramos nesta plataforma para seguir o tutorial.
O conjunto que usaremos como exemplo foi gerado com uma busca pela palavra-chave “Economia”, em maio de 2020. Como o arquivo foi gerado para fins didáticos, nós utilizamos todos os recursos da ferramenta para obter o número de registros possíveis. Estes dados contém apenas uma amostra bem pequena do total de canais relacionados a esta palavra-chave no YouTube, mas irá servir para compreendermos como baixar estas informações, analisá-las e visualizá-las no Gephi. Para facilitar, vamos disponibilizar o arquivo que será usado mais adiante no tutorial e, se quiser, você pode baixar aqui o arquivo e pular esta etapa.
Porém, se você quer gerar suas próprias consultas, fica aqui um panorama: o Youtube Data Tools fornece uma série de ferramentas para extrair dados do Youtube. Com ele você pode coletar dados de um canal específico (Channel Info), de uma rede de canais (Channel Network), de uma rede de vídeos (Video Network), informações e estatísticas de uma lista de vídeos (Video List), além de informações e comentários de um vídeo específico (Video Info and Comments).
Na construção do nosso grafo, buscamos pela Channel Network usando como consulta a palavra-chave “economia”. Este módulo raspa os dados de uma rede de canais conectados entre si por meio da seção de “canais em destaque” e por meio de inscrições. Como parâmetro inicial da pesquisa, você precisa definir um termo de pesquisa (Search query) ou a ID de um ou mais canais (Seeds) para começar a coleta.
Se você optar pela busca a partir de um canal, precisará da ID dele, e para isso basta acessar o perfil do canal e copiar o que vem depois de “youtube.com/channel/” na URL
Você também pode escolher a profundidade do rastreamento (crawl depth). A profundidade 0 retorna apenas as relações entre os canais listados como “sementes”/seeds. Se for um, para cada resultado, ele irá repetir o processo de busca, expandindo assim a rede. Se for dois, o processo será repetido também para os canais resultados da busca anterior, resultando assim em uma quantidade muito grande de canais, que pode eventualmente até congelar o programa, conforme os desenvolvedores explicam no site.
Quando você opta pela busca de um termo específico, você pode fazer a classificação por relevância, data, título, avaliação, número de vídeos ou de visualizações. Para mais detalhes sobre o funcionamento da ferramenta, vale a pena ver este tutorial no YouTube (em inglês).
Esta plataforma irá criar um arquivo GDF, que iremos abrir no Gephi a seguir.
INSTALANDO O GEPHI, NOSSA MÁQUINA DE GRAFOS
O Gephi é um software, gratuito e de código aberto, voltado à visualização e exploração de grafos e redes. Nesse programa, os usuários podem interagir com a representação, manipular as estruturas, formas e cores para revelar padrões ocultos no conjunto de dados utilizado.
Para fazer o download, clique aqui. Durante a instalação, não esqueça de checar as caixas “Associate .gdf files” e “Associate .graphhml files”.
Se o seu Windows for de 64 bits, procure pelo arquivo “gephi64” em seu computador após a instalação. Crie um atalho para ele na área de trabalho e o execute no lugar do aplicativo padrão.
Atenção: talvez você não consiga abrir o Gephi de primeira e apareça o aviso “Cannot find Java 1.8 or higher”. Mas não se preocupe! Para resolver o problema, basta você instalar a versão mais recente do Java, disponível neste link.
Agora que deu tudo certo, vamos atualizar o Gephi com todos os plug-ins que temos direito. Para isso, basta você abrir o programa e em seguida ir em Ferramentas > Plug-ins > Marcar tudo (Ctrl + A) > Instalar.
VISUALIZANDO REDES DO YOUTUBE COM O GEPHI
Vamos começar? Primeiro, você deve abrir o conjunto de dados com o Gephi e verá a seguinte janela:
Como você pode observar, já nesse momento o Gephi fornece algumas informações sobre o grafo: ele é do tipo dirigido, possui 72 nós e 72 arestas. Mantenha as configurações padrão e dê OK. Em seguida, você verá o conjunto de dados já em sua visualização de grafo.
Nesta rede, cada nó representa um canal no YouTube e a conexão entre eles (arestas) indica que um canal foi referenciado/relacionado por outro. Portanto, cada aresta tem uma direção: a seta que liga um ponto a outro tem uma origem e um destino. As setas representam uma citação/referência, assim a origem é quem cita e o destino é o canal citado.
Para analisar esta rede, vejamos como funciona o Gephi. Nele, temos três abas principais: Laboratório de dados, Visão Geral e Visualização, que aparecem no canto superior esquerdo na imagem abaixo. Vejamos então cada uma delas.
No Laboratório de Dados, podemos analisar e editar o conjunto de dados a partir de uma tabela. Ele apresenta uma tabela, então, parece mais familiar às pessoas acostumadas com editores de planilha.
Na Visão geral, é onde construímos o grafo de fato e, por fim, na Visualização, é onde fazemos os últimos ajustes antes de exportar o resultado final. Na Visão Geral, você pode “navegar” pelo grafo utilizando o botão direito do mouse e a rolagem do mouse para aumentar ou diminuir o zoom.
Para começar a explorar nosso exemplo, vamos mostrar os rótulos dos nós, ou seja, os nomes dos canais. Podemos fazer isso clicando no ícone com um “T” de texto, destacado com o círculo vermelho abaixo.
Depois, vamos ampliar o peso das arestas no “slider” ao lado direito, também em vermelho. Você também pode alterar a fonte e o tamanho dos rótulos logo à direita, clicando na configuração padrão, “Arial Negrito, 32”. Para este exemplo, deixaremos as fontes padrões.
Ainda parece um pouco confuso, né? Para resolver isso, precisamos alterar a distribuição do grafo.
Há um menu para isso no canto inferior esquerdo da tela. O Gephi oferece diversas opções de distribuições. Para saber a função de cada uma, basta passar o mouse pelo “i” abaixo de cada título. Nesta aba, você ainda pode ajustar como cada uma delas será executado, alterando alguns parâmetros.
Neste tutorial, utilizamos as seguintes distribuições, uma após a outra: Force Atlas 2, Contração, Não sobrepor e Ajustar rótulos. Todas com os parâmetros padrões.
Pode ser que quando você execute uma distribuição, o efeito de outra já executada seja reduzido. Então, aplique e reaplique as distribuições até conseguir a visualização desejada.
DETECTANDO AS COMUNIDADES DO GRAFO
Na aba Aparência, podemos configurar cor e tamanho do grafo a partir de seus atributos (que correspondem às colunas exibidas no Laboratório de dados).
Para criar novos atributos, que tragam métricas sobre cada nó, por exemplo, você pode usar a aba ‘Estatísticas‘. Se esta ou outras abas não estiverem visíveis, você pode ativá-las no menu ‘Janela’.
Repare que quando calculamos algo no menu ‘Estatística’, o Gephi gera automaticamente uma coluna correspondente na ‘Tabela de dados’.
Você pode experimentar e executar diferentes estatísticas do grafo para suas análises. Por ser um tutorial introdutório, não iremos explorar todas possibilidades e vamos direto àquela que nos interessa, a de Modularidade, um algoritmo de detecção de comunidades. Selecione esta opção no menu ‘Estatísticas’, clique em Executar, mantenha as configurações padrão e em seguida dê OK. Será apresentado um relatório com o resultado obtido e também uma nova coluna será adicionada aos seus dados.
Se você mudar a visualização para a aba ‘Laboratório de dados’, irá reparar que agora temos a coluna Modularity Class. Cada “comunidade” ou cluster identificado é representado um número identificador.
Agora que temos os grupos, basta visualizá-los. Para isso, vá no menu Aparência > Nós > Partition > Modularity Class > Aplicar.
Com isso, cada valor da coluna criada será associado a uma cor, que facilitará a identificação dos nós e comunidades em nossa rede.
DESCOBRINDO OS NÓS MAIS POPULARES
Vamos dar um passo adiante em nossa análise.
Como falamos antes, o grau de entrada indica o número de arestas que um nó recebe. Em nosso exemplo, como vimos, uma aresta recebida por um nó significa que este canal foi citado/referenciado por outro. Em redes sociais, quando um nó recebe muitas arestas, ou seja, isso pode ser um sinal de sua popularidade no grafo.
Para conseguirmos visualizar isso no grafo do nosso tutorial, podemos aplicar a seguinte configuração para que o tamanho dos círculos sejam proporcionais ao seu grau de entrada: Aparência > Nós > Tamanho > Ranking > Grau de Entrada > Tamanho mínimo: 10 e Tamanho máximo: 30.
FILTRANDO O GRAFO
Nem sempre todos os nós de um grafo terão arestas. Por exemplo, no arquivo que geramos há canais que aparecem como resultado da busca, porém, não fazem parte de uma rede de canais pois não citam, nem são citados por nenhum outro. Se quisermos fazer o exercício de filtrar o grafo, para deixar apenas os nós que possuem alguma aresta, basta selecionar o menu Filtros > Atributos > Topologia > Intervalo de grau.
Você verá então um histograma (canto inferior direito da imagem abaixo) com a distribuição dos valores em questão e poderá definir os limitares mínimos e máximos. No nosso caso, queremos apenas nós com grau maior que 0 (ou seja, com alguma aresta), portanto, podemos colocar “1” como valor mínimo, dar ENTER e aplicar o filtro.
Agora que há menos nós no grafo, se quiser, você pode executar as distribuições novamente para obter uma visualização melhor.
GRAFO PRONTO, HORA DE EXPORTAR
Na janela Visualização, vá até o menu Configurações de visualização. Clique em Atualizar para que o grafo apareça pela primeira vez e, em seguida, explore e faça as alterações que deseja, atualizando o grafo após cada uma para ir verificando o resultado.
Quando você estiver satisfeita(o) com a visualização final, basta clicar em Exportação: SVG/PDF/PNG lá embaixo e exportar! Se você exportar e o conteúdo do grafo ultrapassar as margens do arquivo, tente exportar novamente com uma configuração diferente de margem. Por aqui, trocamos a % da largura de 4 para 20 e resolveu.
E assim ficou a imagem final gerada neste tutorial.
Agora, é sua vez: que tal usar este tutorial para fazer sua própria análise? Compartilhe nos comentários ou deixe sua dúvida em nosso Fórum.
Agradeço pelo Tutorial!
Muito didático seu tutorial! Parabéns pelo trabalho
Muito bom o tutorial, tornando a análise mais acessivel – muito obrigada
Alguém pode dar um tutorial sobre guerra cartigrafias com o gephi?
Olá, Manuela. Obrigada pela dica, vamos avaliar a viabilidade 🙂
Abraços!