Eu li 3942 textos da New Order! Parte02 — Topic Modelling

Veja aqui tudo o que eu aprendi enquanto me aventurava por eles!

Giovani Ferreira
Sep 13 · 7 min read
Image for post
Image for post

Não leu a Parte 01? Comece aqui:

Leu, mas precisa de uma relembrada? Vem comigo:
Na primeira parte dessa série eu contei um pouco sobre meu interesse em dados e como eu coletei os textos da revista para análise.

Lá eu optei por começar a análise investigando quais são as Tags mais utilizadas pelos colaboradores da New Order.

Num segundo momento utilizei um algoritmo para entender a relação entre as tags e tentar responder a pergunta “quais tags normalmente estão acompanhadas de quais tags?” (gráfico ali de cima)

A busca dessa série é por aplicar métodos estatísticos e de aprendizado de máquina para compreender o conteúdo do corpus (textos da revista) sem necessariamente ler todos.

Se na primeira parte a gente “leu” todas as tags, nessa vamos “ler” os textos;

Lá eu fui um pouco menos técnico, nessa eu me aprofundo um pouco mais no algoritmo utilizado antes de chegar no resultado final.
Se você está interessado no resultado da análise, role a página até encontrar a parte “Nomear os Tópicos”.

Esse é um texto sobre um técnica de aprendizado de máquina que busca responder outra pergunta: quantos assuntos (tópicos) diferentes existem nesse corpus e quão associado a cada tópico cada texto está.

Para quem tiver interesse no código, todos os scripts de R que utilizei estão no meu Git Hub. Gosto de acreditar que são “auto-explicativos”, mas se não forem e quiser conversar, entra em contato!

É claro que a trajetória não foi tão linear quanto eu descrevo aqui e envolveu muita exploração, testes com diferentes técnicas e bibliotecas, muita leitura e perguntas no twitter, muitos testes com parâmetros diferentes, muitas “refações”.

O primeiro passo foi criar um com as informações que eu precisava.

Image for post
Image for post

Nesse data.frame eu tenho:

  • 3689 linhas, sendo uma para cada texto utilizado no treinamento (contra os 3942 textos que eu — a diferença vem de alguns filtros como textos com poucas palavras ou sem nenhuma Tag);
  • 5 colunas, uma para cada informação que preciso dos textos: ID, para cruzar com outras informações sobre os textos mais tarde; Dia em que o texto foi publicado, sendo 1 para os textos do primeiro dia, 2 para os do segundo e assim sucessivamente; A primeira Tag que o autor utilizou no texto (são possíveis 5 hoje, antigamente o Medium permitia apenas 3, porém optei por utilizar somente a primeira pois nem todos os textos têm mais de 1 Tag e isso reduziria ainda mais o corpus); E, por fim, o texto propriamente dito.

O segundo passo é descobrir quantos tópicos diferentes são bons/ótimos/suficientes para entendermos os textos.
Não existe uma ciência exata para definir essa variável (número de tópicos).

Aqui é um monte de tentativa e erro, estatística e conhecimento do corpus…
O fato de eu ser leitor da revista ajudou bastante!
Treinei 40 diferentes modelos variando o número de tópicos (4, 8, 12, 16, 20, 21, 22, 23, … , 44, 45, 46, 50, 54, 58, 62, 66, 70, 74, 78 e 82) para escolher com qual modelo trabalhar.

Eu comecei a estudar treinamento e avaliação de está muito bem explicado aqui:

O importante é que no final decidi (e essa parte é levemente arbitrária) que o modelo de 24 tópicos era o que melhor explicava os textos.

Decidido que esse seria o modelo, o terceiro passo é explorar o resultado desse modelo.

Para esse estudo escolhi o algoritmo STM ().
Esse algoritmo segue os mesmos princípios do LDA (

  • Cada texto é constituído por múltiplos tópicos e;
  • Cada tópico é uma mistura de múltiplas palavras.

Além desses dois princípios, o STM traz para o LDA a possibilidade de usar “metas” (outras informações além do texto em si, aquelas que separei no meu ) para a compreensão dos tópicos.

Tanto o LDA quanto o STM nos dá dois resultados importantes β (“beta”) e γ (“gamma”):

Com essa informação sabemos quais são as palavras mais predominantes em cada tópico (sobre o que fala cada tópico).

Cruzando essas duas informações, conseguimos entender a prevalência dos tópicos e quais palavras contribuem para casa tópico.

Assim:

Image for post
Image for post

Também conseguimos visualizar a distribuição dessas palavras dentro de cada tópico, assim:

Image for post
Image for post

Estamos mais próximos de conseguir descrever o conteúdo da publicação.

O quarto passo é:

Nomear os Tópicos!

Especialmente para você que pulou as partes anteriores e escrolou até aqui, vamos direto ao ponto.

Esses são os 24 tópicos que descrevem a New Order, ordenados por prevalência e acompanhados dos nomes que dei para cada um deles.

Image for post
Image for post

Se compararmos os nomes com as palavras que contribuiram para cada tópico (gráfico anterior parecido com esse) encontraremos similaridades e também algumas diferenças.

A seguir explico como cheguei nesses nomes e quais informações colaboraram.

Começando pelo mais fácil, para nomear os tópicos o pacote que utilizei para essa análise conta com uma função .
Essa função gera uma série de palavras que descrevem cada tópicos. Para isso ela usa diversos algoritmos de nomeação:

  • :Palavras com maior probabilidade em cada tópico;
  • : Palavras que são ao mesmo tempo frequentes e exclusivas, identificando palavras que ajudam a distinguir tópicos;
  • Score (do pacote ) e Lift (do pacote ).

O resultado dessa função é uma lista como essa, mas para cada um dos tópicos:

Image for post
Image for post

Uma outra função,, cujo resultado são os textos mais representativos de um determinado tópico, se mostrou bastante útil.

Com ela gerei essa longa lista dos 5 textos mais representativos de cada tópico, que coloquei num post separado, aqui:

Munido das palavras e do link para os textos mais representativos foi fácil criar aqueles nomes.
A maioria deles é uma combinação das palavras dos diferentes algoritmos de nomeação com as palavras da URL. Em alguns casos eu li parte dos textos para validar o nome que eu tinha atribuído.

Por fim, um último gráfico que podemos analisar para entender a publicação.

Image for post
Image for post

A correlação entre os tópicos indica quais tópicos comumente são discutidos nos mesmos documentos.

É mais ou menos assim que a gente pode ler o gráfico acima:

Começando com qualquer um dos 5 isolados lá em cima. São assuntos que normalmente acontecem sozinhos.

Agora Política Nacional, no canto inferior direito.
Acho interessante como política se conecta com Cidades/Centros Urbanos, com Sociedade/Economia mas também com Jornalismo e Fake News (intimamente ligado com Redes Sociais)

Fica bastante evidente também que os assuntos conectados a amor, bem estar e saúde mental estão todos bem “emaranhados” , interconectados, no lado esquerdo.

Se você nunca leu nenhum texto da revista agora já tem uma imagem bem clara do que encontraria nela. Tem ainda uma lista de assuntos com os textos mais relevantes em cada um deles, caso queira ler um pouco mais.

No fim, conseguimos resumir e explicar um corpus de 3942 textos!

O que esperar dos próximos posts:

  • Na próxima parte vou cruzar os tópicos extraídos aqui com os outros dados coletados, não textuais, para entender um pouco mais sobre a publicação. Desde prevalência de tópicos ao longo do tempo até a relação entre engajamento e assuntos.
  • 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 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.

Data Hackers

Blog oficial da comunidade Data Hackers

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store