Queridos Cientistas de Dados brasileiros: Por favor, entendam por que Word Cloud é horrível para Análise de textos e tentem TF-IDF + Word N-Grams
2019 Oct 11Eu sei que o título ficou meio bait, então relevem pois aqui o tom sempre será de moderação.
Eu ja cometi esse erro no passado (essa thread mostra isso bem que como uma fênix burra e teimosa eu continuo fazendo isso), e confesso que quando vemos aquelas nuvens de palavras temos a sensação que somos os melhores analistas do mundo, pois podemos explicar de maneira direta e simples para as pessoas mais leigas no assunto. Afinal quem não gostaria de ser conhecido por ser um excelente storyteller, não é mesmo?
Apesar disso, nessas linhas mal escritas eu vou tentar fazer o meu ponto do por que Word Cloud é um instrumento péssimo para análise de textos/discursos que além de ser falho por usar apenas frequência absoluta das palavras esse método dá muita margem para o que eu chamo de “saltos interpretativos” que mais parecem delírios da cabeça de quem está analisando do que análise propriamente dita.
O problema…
Vira e mexe sempre quando chegam as eleições, ou mesmo algum tipo de pronunciamento de alguém importante via discurso a primeira coisa que vemos é a famosa Word Cloud (i.e. ou Nuvem de Palavras ou Tag Cloud).
Eu mesmo adoro usar Word Cloud em alguns discursos presidenciais como podem ser vistos na minha conta no Github em que eu usei esse método em todos os discursos presidenciais que eu consegui encontrar no Itamaraty, os quais vocês podem ver as vergonhosas imagens abaixo:
Word Cloud dos discursos do ex-presidente FHC
Word Cloud dos discursos do ex-presidente Lula
Word Cloud dos discursos do ex-presidente Dilma
Word Cloud dos discursos do ex-presidente Temer
Word Cloud dos discursos do presidente Bolsonaro
(PS: eu sei que o código está medonho, mas o dia-dia está massacrante e eu não tive tempo de tirar do ar ainda, mas se alguém quiser continuar só dar o fork e “do it yourself”)
Alguns exemplos do péssimo uso recorrente de Word Cloud podem ser vistos na BBC em relação aos discursos dos presidentes brasileiros na ONU, na Revista Época que fez a mesma coisa, na Folha de São Paulo que fez uma nuvem de palavras com os discursos da ex-presidente da republica Dilma Rousseff e no Estado de Minas que fez o mesmo em relação ao discurso de diplomação do presidente da republica Jair Bolsonaro.
Sempre bom quando temos o Jornalismo de Dados (Data Journalism) (Nota do Autor [1]: Desde o inicio dos tempos eu sempre pensei que todo o jornalismo sempre era baseado em dados, mas isso fica para outro post. Vivendo e aprendendo.) usando ferramentas quantitativas para análise desses dados. Porem, o recurso de Word Cloud diz muito pouco dentro de um contexto geral e da espaço para “saltos interpretativos” que fariam inveja ao Tarot e a Astrologia em termos de picaretagem subjetividade.
Um exemplo claro desses saltos interpretativos pode ser visto neste artigo do Linkedin chamado “Nuvem de palavras: nossos candidatos por eles mesmos” no qual o autor colocou mais aspectos pessoais do que ele achava do que ater-se unicamente ao que foi dito de fato.
No blog do Tarcízio Silva no post “O que se esconde por trás de uma novem de palavras” ele fala de alguns recursos de análise que são interessantes do ponto de vista de análise do discurso, contudo, quando falamos de linguística computacional e recuperação de informação a Word Cloud revela muito pouco chegando a ser até mesmo ser enganosa dependendo do caso e eu vou mostrar isso mais adiante.
Em NLP Semântica e Sequência não são tudo, mas são 99%…
Entretanto, quando falamos de Natural Processing Language (NLP) o uso de Word Cloud mostra bem pouco dado que como esse método é baseado apenas na combinação Frequência de Palavras + Remoção de Stopwords, e com isso dois principais aspectos da análise de texto são perdidos que são:
a) A Semântica em relação ao que está sendo dito e como isso se relaciona no corpus como um todo e não baseado em interpretação livre (e.g. A palavra “manga” pode ter diferentes significados se usados em diferentes contextos como em frutas ou de roupas); e
b) A sequência no qual sem ela perde-se a chance de entender a probabilidade das palavras aparecerem dentro de um encadeamento lógico em relação ao que está sendo colocado (e.g. Se tivermos as palavras “bebe”, “mata”, “fome” podemos gerar as sequencias “bebê, mata, fome” ou “fome, mata, bebê” o que são fatos absolutamente diferentes).
Penso que esses dois exemplos simples fizeram o meu ponto de que o Word Cloud por si só não diz muita coisa e para piorar deixa muito espaço para “saltos interpretativos”.
Vamos ver adiante uma forma simples de fazer uma análise textual usando duas técnicas que são TF-IDF e o Word N-Grams.
TF-IDF + Word N-Grams = Melhor interpretação = Melhores insights
Basicamente quando usamos Term Frequency–Inverse Document Frequency (TF-IDF) ao invés de realizarmos simplesmente uma análise da frequência das palavras, estamos colocando um determinado nível de semântica na análise do texto dado que, se ao mesmo tempo consideramos a frequência das palavras (TF), também consideramos a frequência inversa do documento (IDF) em que essa combinação entre TF e IDF vai medir a relevância da palavra de acordo com o grau de informação que ela trás para o texto como um todo.
Ou seja, o TF-IDF faz essa relação de ponderação de ocorrência relativa e grau de informação das palavras dentro de um corpus. Esse gráfico do post “Process Text using TFIDF in Python” do Shivangi Sareen mostra bem o que seria o TF-IDF em relação a um corpus.
Fonte: Process Text using TF-IDF in Python
Essa questão da coocorrência relativa de palavras vai ficar mais clara no exemplo prático que será falado depois.
Ao passo que o Word Cloud não se preocupa com a sequencia o Word N-Grams vem suprir esse ponto dado que não somente as palavras importam, mas também a probabilidade da sequencia dessas palavras dentro de um determinado contexto linguístico e/ou encadeamento semântico. (Nota do Autor [2]: eu sei que vão ter pessoas me cornetando pelo fato de ser n-Grams apenas, mas este conceito de Word n-Grams eu estou emprestando do Facebook FastText que tem um ótimo paper chamado “Bag of Tricks for Efficient Text Classification” que fala sobre essa implementação de usar sequências locais de palavras (_i.e._que vão nos dar pequenos contextos locais concatenados) ao invés de letras para classificação de textos, mas isso é papo para outro post. A propósito eu escrevi sobre o FastText aqui a algum tempo.).
Esse post não tem nenhuma pretensão de ser uma referência em TF-IDF/Word-NGrams mas eu recomendo fortemente o que eu considero a bíblia do NLP que é o livro “Neural Network Methods for Natural Language Processing” do Yoav Goldberg.
Dito isto, vamos para um exemplo prático de o porquê usar TF-IDF e Word N-Grams mostram muito mais do que Word Cloud e como você pode usar em sua análise de textos.
Exemplo prático: Análise de textos de alguns autores do Instituto Mises Brasil
A algum tempo eu venho acompanhando a política brasileira da perspectiva de ensaístas de vertentes ligadas ao libertarianismo, anarcocapitalismo, secessão, autopropriedade e assuntos correlatos; e um fato que me chamou bastante a atenção foi a mudança editorial que vem acontecendo de forma lenta em um dos principais Think tanks liberais do Brasil que é o Instituto Mises Brasil (IMB). (Nota do Autor [3]: Eu penso que a editoria ficou ruim ao longo do tempo e o instituto virou apenas uma parodia sem graça voltada ao desenvolvimentismo, financismo bancário com a redução do foco na liberdade.)
Minha hipótese é que devido à diferenças editoriais sobre assuntos ligados à secessão houve uma ruptura entre o Hélio Beltrão e os Chiocca Brothers (Christiano e Fernando) com a consequente mudança de diretoria editorial no IMB e com a fundação do Instituto Rothbard. Os detalhes podem ser encontrados aqui.
Eu estou trabalhando em alguns posts adicionais sobre isso, mas para apenas mostrar o meu ponto sobre Word Cloud eu vou usar como exemplo alguns textos de um autor do IMB chamado Fernando Ulrich.
Olhando rapidamente a linha editorial do Fernando Ulrich podemos ver que ele fala majoritariamente sobre 3 assuntos: Moeda, Bitcoin e Sistema Bancário. E ate mesmo um leitor que começou deste autor ontem sabe disto.
Contudo, gerando uma simples Word Cloud com os textos deste autor temos o seguinte resultado:
Word Cloud de todos os posts do Fernando Ulrich
Podemos ver que as palavras que aparecem mais são: Mercado, ano, Governo, Economia, e com Bitcoin, Moeda e Dinheiro com uma frequência menor (Nota do Autor [4]: Eu intencionalmente não usei nenhum tipo de steeming ou lemmatization pois eu queria ter mais interpretabilidade nessa análise).
Entretanto, vamos olhar agora os mesmos textos usando TF-IDF:
TF-IDF com os textos do Fernando Ulrich
Vejam que usando as top 30 palavras com o maior TF-IDF score podemos ver que as palavras Bitcoin, Bancos, Bacen, e Moeda aparecem com um TF-IDF score muito superior do que as palavras do Word Cloud (lembrando: Mercado, ano, Governo, Economia); e como leitor dos artigos do Fernando Ulrich fica claro que ele fala sobre esses assuntos com uma frequência muito maior, fato este que pode ser visto nos vídeos dele em seu excelente canal no Youtube.
Agora dentro da perspectiva de mapear as sequencias locais dos textos usando Word NGrams, temos o seguinte resultado com os textos do IMB que o Fernando Ulrich escreveu:
Word N-Grams dos textos do Fernando Ulrich (n=3)
Podemos ver aqui que os temas convergem para assuntos como bancos centrais, sistema bancário, e questões relativas ao sistema de reservas fracionadas, o que converge também com as temáticas do seu canal do Youtube e que todo leitor mais antigo desse autor sabe.
Conclusão
Como vimos acima, quando vamos realizar a análise de textos de forma a dar uma interpretação sobre o que foi dito e/ou a temática do que está sendo falado, o uso de Word Cloud definitivamente não é o melhor e que a combinação TF-IDF + Word N-Grams geram resultados que representam muito melhor a realidade devido ao fato que essas trazem um nível maior mais semântica e encadeamento das palavras que são na pratica aspectos que representam melhor a realidade do que a frequência propriamente dita.
Notas Finais
Nota Final [1]: Amiguinhos intolerantes dos extremos de ambos os espectros, segurem a emoção nos comentários pois eu tenho um pipeline bem grande de coisas que eu estou fazendo nesse sentido para desagradar muita gente ainda.
Mesmo em 2019 esse tipo de aviso é importante: Analisar os textos das pessoas não significa estar em linha com o que elas falam ou mesmo algum tipo de endosso das opiniões delas.
Acreditem ou não, existe uma serie de pessoas que têm um modelo mental suficientemente robusto para conseguir ler desde a biografia bilionário que é usado em Fanfic empresarial de palco até conseguir entender a luta de pessoas que mesmo sendo 50,94% de uma população dado o seu grupo racial, essas pessoas não têm um único representante de peso na sociedade como um CEO de multinacional ou alguém de relevância poder executivo e judiciário.
Nota Final [2]: Eu sei que tem código envolvido e eu vou compartilhar até o final da próxima semana (ao menos o database eu solto). Eu não compartilhei ainda dado que eu tenho que colocar em um nível mínimo de legibilidade para que as pessoas não pensem que eu chicoteei um macaco até ele conseguir digitar todo o script.
Nota Final [3]: Tem um monte de erro gramatical, semântico e lógico nesse post e todos eles são meus e eu vou ajustar um dia. Aos poucos eu vou corrigir dado além do fato de que eu fui alfabetizado no Brasil no ensino publico durante os anos 90, tenho como fatores agravantes de que eu estou digitando esse texto em um teclado austríaco (ba dum tss) com um corretor ortográfico em… Alemão. Então, relevem.