Eu li 3942 textos da New Order! Parte 01 — Tags

Veja aqui tudo o que eu aprendi enquanto me aventurava pelos posts da maior publicação brasileira do Medium!

Giovani Ferreira
Data Hackers
8 min readAug 14, 2020

--

Tá bom, tá bom, tá bom.
Preciso começar com um disclaimer: eu não li de verdade os textos.
Mas então, o que eu fiz?
(Além de colocar um título meio clickbait meio calabresa no texto)

Nos últimos anos venho estudando, por hobby mesmo, muitas técnicas de data science e tenho desenvolvido um interesse forte no trabalho de dados em cima de textos NLP (Natural Language Processing, ou Processamento de Linguagem Natural).

Como conheço a New Order há muitos anos (alguns dos quais participei como autor/colaborador), achei que seria interessante usar a publicação como base para um estudo onde eu pudesse colocar em prática o que tenho aprendido.

Utilizando web scraping e análise de…

Pera, web quem?

Web Scraping é o ato de coletar (raspar) informações (ou dados) da web.
O resultado são dados estruturados (pense numa planilha de excel) a partir de dados não estruturados (pense num post aqui no Medium).

Isso pode ser feito manualmente (abrir um post, selecionar o que quer saber sobre o texto, anotar isso numa planilha) ou automaticamente (um robô que entra em cada um dos links e salva as informações que eu escolhi). Não vou falar muito aqui sobre a parte técnica do Scraping. Já existem muitos bons artigos focados nesse assunto. Tá meio “na moda” scrapear o Medium.

Obtendo os dados da New Order — primeira publicação brasileira no Medium.

Utilizando web scraping eu coletei todos os textos da publicação junto com informações públicas sobre eles (como autor, data da publicação ou número de claps) desde sua origem em 2013 até Maio de 2020.

Esse é o primeiro post de uma série sobre a New Order e sobre análise de dados. A ideia principal é compartilhar com vocês técnicas de análise de dados que eu acho interessantes (todo o código utilizado está disponível no GitHub) e também apresentar um pouco sobre a publicação e sua história.

Afinal, a New Order é a primeira publicação em língua portuguesa por aqui (o Medium).

A sequência dessa série não é necessariamente a sequência com que se deu o meu processo de exploração dos dados coletados.

Optei por começar por uma parte que se alinha bem com o título.
Já que a proposta aqui é falar sobre a “leitura” dos 3942 textos, vamos começar analisando as Tags que os autores colocam em seus textos.

Tags carregam uma informação bastante útil: é a categoria com a qual o autor acredita que o texto dele se identifica.

Considerando os dados coletados, a primeira análise que podemos fazer é olhar para as Tags utilizadas com mais frequência.

Na nuvem de palavras acima vemos as 50 tags mais utilizadas com seu tamanho proporcional à frequência com que aparecem (palavras maiores são maiores porque foram usadas mais vezes).

Brasil, comportamento, medium-brasil, sociedade, cultura, política.

Mesmo se você nunca ouviu falar da New Order antes, a “cara” da publicação começa a aparecer, conseguimos com essa primeira imagem começar a entender do que se fala por aqui.

Uma outra forma de olhar para isso é em lista, ou rank:

Essas primeiras imagens revelam bastante sobre a publicação, mas não são suficientes para eu poder falar que li os 3942 textos.

Nem mesmo pra falar que li as 395 tags mais importantes!

Analisando a similaridade entre as Tags

Avançando mais nas descobertas do quê é possível fazer com esse tipo de dado, lembrei que há um tempo eu esbarrei nesse post do Medium Engineering:

Resolvi usar exatamente a mesma abordagem com as Tags da New Order:

  • Concatenar as 5 tags de cada post numa “frase”, por exemplo: “comportamento desenvolvimento-pessoal vida psicologia medo”);
  • Treinar um algoritmo de Word2Vec considerando cada “frase” como um documento para que ele aprenda as relações entre as tags.

As diferenças principais são que eles tinham muito mais Tags (o que pode ser melhor para o treinamento do algoritmo) e estavam usando Python (eu fico mais confortável no R).

O texto deles é mais técnico, então se você procura explicações mais profundas dá um pulo lá ou me chama pra um papo.
Eu aqui vou ter uma abordagem um pouquinho mais focada no resultado e menos na técnica.

Esse algoritmo de Word2Vec vai me ajudar a responder a seguinte pergunta, nesse caso específico: “qual tag normalmente vem acompanhada de qual outra tag?”, ou ainda, “quão similar essas tags são?”

Mas como?
Word2vec
“codifica” as palavras de um corpo textual (no caso as tags utilizadas em cada texto transformadas em “frases”) em um espaço vetorial multidimensional (aqui trabalhei com 300 dimensões).

O resultado dessa codificação é a uma representação espacial de 300 dimensões onde cada palavra tem um vetor da sua posição nesse espaço.

Eu sei. Parece incompreensível.

Nós, seres humanos tri-dimensionais, temos muita dificuldade em imaginar um espaço com dimensões além de Largura, Altura e Profundidade.
Mas eles existem na matemática, acredite em mim!

Na prática o resultado é uma tabela, onde temos uma linha para cada uma das 395 Tags, e 300 outras colunas, cada uma guardando a posição dessa Tag em um daqueles 300 eixos.

Acho que esses números não significam nada pra você.
Certamente não significam muita coisa pra mim!

A graça é que uma vez que as palavras estão codificadas em vetores, álgebra linear pode ser aplicada a elas para, dentre muitas outras coisas, entender quão próximas estão.

Por exemplo, eu mantive durante muito tempo lá na New Order a coluna Rapidinhas onde escrevia sobre tecnologia, arte, design, fotografia e coisas…

Essa #035 é a mais vista até hoje e nela eu usei as tags:

A Rapidinha Temática — Minimalismo é a com mais palmas e nela usei as seguintes tags:

O que acontece quando eu pergunto pro meu modelo Word2Vec quais são 10 sinônimos de “Rapidinhas” (dentro do contexto das tags da New Order)?

data-visualization; tech; design; arte; tecnologia

Parece que ele aprendeu bem sobre o que as Rapidinhas eram.

Agora que testei com uma tag que eu conheço, vamos ver os sinônimos de “Coronavírus”:

Interessante os primeiros 2, oscar-2017 me surpreende um pouco, mas fake-news estar entre os 10 primeiros também faz sentido.

Bem legal, mas eu não quero entender uma tag em particular, eu quero conseguir enxergar aquele espaço vetorial multidimensional e procurar relações entre todas as tags.

A gente já concordou que não somos muito bons em visualizar mais de três dimensões, que dirá 300!
Seria ótimo se tivéssemos duas.
X, Y.

Usando PCA para análise de grupamentos

Foi aqui que eu lembrei daquela aula de estatística que falava de Análise de Componentes Principais (ou Principal Component AnalysisPCA), um procedimento matemático que, numa simplificação absurda (falei que o texto não ia ser técnico, né?), possibilita a redução de dimensionalidade.
Hum.

Também lembrava de ter visto algo sobre um algoritmo de redução de dimensionalidade que se adequava melhor a esse caso, o t-SNE, nesse artigo e resolvi testar.

Ahhhhhh!
É isso!

Aqui a gente consegue ver as 395 tags principais utilizadas pelos autores da New Order, em um espaço bi-dimensional (ufa!) separadas em 25 grupos (usei para o agrupamento ou clustering um algoritmo de agrupamento hierárquico).

É importante lembrar que apesar de termos algumas “ilhas” bem evidentes, com separações muito claras (hiv, aids, precisamosfalarsobrehiv — por exemplo), para a maioria dos grupos essas bordas são subjetivas e uma palavra pode estar separada em um grupo (cor) mas estar também fortemente relacionada ao grupo ao lado (por exemplo redes-sociais, em laranja, no meio de um grupo verde com youtube, influencers, midias-sociais e facebook)

Nem todos os grupos deixam bem claro sobre o que falam, mas alguns deixam. Com essas categorias, é possível começar a identificar algumas “editorias” dentro da publicação.
Vamos assim entendendo mais a publicação e nos aproximando do objetivo de “ler sem ler” todos os posts da revista.

Por exemplo, dentro da editoria “13” (t02neworder, saúde-mental, depressão) o post com maior número de palmas únicas:

Já na editoria 23, (PrecisamosFalarSobreHIV) o post com maior número de palmas únicas:

Me conta nas respostas se você quer saber mais sobre alguma editoria específica e eu prometo responder.

O que esperar dos próximos posts:

  • A próxima técnica em NLP que vou demonstrar é Topic Modelling para exploração dos assuntos dos textos.
    Aqui um algoritmo vai “ler” os textos e tentar agrupá-los em “tópicos” (podendo cada texto ser composto por diversos tópicos).
    Vou expandir as observações para além das tags, para olhar para os textos propriamente ditos. É dessa etapa que saiu a ideia do título da série.
  • Depois vou focar nos outros dados coletados, não textuais, e entender um pouco os outros números que tenho da publicação.
  • Por fim vou tentar estabelecer uma métrica de sucesso (uma combinação de Palmas Totais, Únicas e Respostas) e procurar correlações entre os dados coletados e essa métrica de sucesso. Mais do que tentar prever a probabilidade de sucesso de determinado texto, vamos explorar quais variáveis mais contribuem para esse sucesso.

Em 2019 o projeto Burn That Ad, campanha para o Burger King onde atuei como Diretor de Tecnologia e Diretor (duplando com o genial Luiz Evandro), ganhou Grand Prix WAVE Festival, 9 Cannes Lions (1 Gold, 3 Silver e 4 Bronze) e 3 Clio Awards (1 Silver, 2 Bronze).

Na vzlab eu lidero e conecto um time bastante diverso e talentoso de mais de 15 desenvolvedores com stakeholders internos e externos e também com outros times (atendimento, operações, projetos, ux/cx, criação, arte, redação, pesquisa, analytics e dados).

Nesse time trabalhamos com R&D & Pipeline, Sistemas Internos, Web (Front and Backend), WebGL/WebAR, Unity/Real Time, Processing/Creative Coding/IoT.

Eu falo negócios, mas também programação, arte, design, dados.

Vamos papear!
Linkedin. Twitter.GitHub.

--

--

Giovani Ferreira
Data Hackers

Innovation & New Tech team leader, data hobbyist art driven photographer.