[Github] Uma análise dos discursos de Temer, Dilma e Lula.


Há algum tempo, escrevi aqui um post sobre um mini projeto que desenvolvi com o intuito de capturar da página do Itamaraty os discursos dos três últimos presidentes brasileiros. Neste novo post descrevo alguns resultados dessa pequena análise, onde foi preciso empregar técnicas de data cleaning, processamento de linguagem natural, algoritmos de classificação e de regressão linear.

Para ter uma primeira visão do conteúdo dos discursos, é interessante olhar para as palavras que mais de repetem. Podemos fazer isso de diversas maneiras, dentre elas por meio de uma nuvem de palavras. Considerando o conjunto de discursos de cada presidente (Temer, Dilma e Lula) como uma bag of words e após proceder com uma filtragem de stopwords (palavras sem significância, numa primeira aproximação) temos:

f1f2f3

Uma maneira alternativa, é recorrer ao chamado gráfico de frequências. Assim tomando as 20 palavras mais frequêntes, temos para os três presidentes:

 

f4f5f6

No entanto, olhar apenas para palavras individuais pode passar uma idéia bastante limitada da significação contextual de um dado texto. Um passo além é olhar para os n-gramas. Um n-grama pode ser definido como um conjunto de n palavras adjacentes dentro de um texto. Considerando bigramas, temos:

 

f7f8f9

Podemos, por exemplo, perceber que o Temer e a Dilma costumam usar a mesma saudação, “senhoras e senhores”. Além disso, Temer, “digamos assim”, parece estar bastante preocupado com “Congresso Nacional”, enquanto que a Dilma com o “desenvolvimento sustentável”, e Lula com a “américa do sul” e a “américa latina”.

Outra quantidade interessante a ser medida é a chamada diversidade lexical (DL). A DL pode ser definida como a razão entre o número de palavras únicas e o número total de palavras utilizadas num dado texto. Essa métrica pode ser interpretada como um indicativo da extensão do vacubulário de uma pessoa, num dado pronunciamento. Quanto maior o valor da DL, maior tende a ser o emprego de palavras únicas. Considerando ainda os discursos de cada preseidente como um todo, temos:

f10

Podemos notar que a DL dos discursos do Temer é de cerca de aproximadamente 20%, enquanto que nos discursos da Dilma e do Lula, temos uma DL de cerca de 15%, com uma leve vantagem para o Lula. Cabe ressaltar que não necessariamente é o próprio presidente quem escreve seus discursos. Muitas vezes existe um profissional destinado a esta função, chamado de speechwriter. Por exemplo, Jon Favreau foi o coordenador da equipe de speechwriters de Barack Obama: https://en.wikipedia.org/wiki/Jon_Favreau_(speechwriter).

É interessante olharmos também para as características de cada discurso de forma individual, ao invés de considerarmos apenas o todo. Considerando então cada discurso como uma entrada, temos as seguintes distribuições de probabilidade para a DL:

f11

Podemos notar na figura acima que os discursos de Temer possuem menor dispersão ao redor da média (linha vetical tracejada), se comparados aos discursos de Dilma e Lula.

Se tomarmos como variáveis aleatórias a DL e a contagem do número de palavras numa dada entrada (discurso), nossa intuição diz que, quanto maior o número de palavras num texto, menor tende a ser a DL do mesmo. Ou seja, essas duas variáveis parecem ser correlacionadas de forma significativa. Será que isso também ocorre nos discursos presidenciais? A resposta é sim:

f12

No gráfico de dispersão acima temos que a relação estatística entre as duas variáveis mencionadas parece ser linear, conforme as linhas de tendência ajustadas aos dados de cada presidente ajudam a enxergar. No canto inferior esquerdo temos os respectivos coeficientes de correlação linear, indicando que os dados do Lula são os mais fortemente correlacionados de forma linear.

Por fim, imagine que não sabemos de quem são os discursos proferidos pelo Temer, e queremos que um robô ou uma inteligência artificial os classifique como sendo da Dilma ou do Lula. O gráfico abaixo mostra o resultado desse procedimento de análise preditiva supervisionada obtido usando o algoritmo de regresão logística como modelo de classificação:

f13

Ou seja, o modelo utilizado classificou 71.2% dos discursos do Temer como sendo da Dilma, e os 28,8% restante, como sendo do Lula. Para ter uma idéia do quanto “em cima do muro” o modelo ficou, podemos olhar para as probabilidades inferidas pelo modelo preditivo. Levanto em conta que probabilidade igual a 0 foi definida como certeza que o discurso não é da Dilma (e, portanto é do Lula) e que probabiliade igual a 1 significa certeza de que o discurso é da Dilma (e, portanto, não é do Lula) , temos:

f14

Portanto, como os resultados estão bastante dispersos ao redor do valor central possível (0,5), podemos dizer que o modelo até que foi bem convicto, não tendo ficado muito em cima do muro 🙂

O código fonte utilizado nesta análise encontra-se publicado no repositório https://github.com/lasleandro/presidential-speeches_classifier.

Quaisquer dúvidas e sugestões, fique livre para escrever!

[memo note] Livro: Introduction to Information Retrieval


Class-tested and coherent, this groundbreaking new textbook teaches web-era information retrieval, including web search and the related areas of text classification and text clustering from basic concepts. Written from a computer science perspective by three leading experts in the field, it gives an up-to-date treatment of all aspects of the design and implementation of systems for gathering, indexing, and searching documents; methods for evaluating systems; and an introduction to the use of machine learning methods on text collections. All the important ideas are explained using examples and figures, making it perfect for introductory courses in information retrieval for advanced undergraduates and graduate students in computer science. Based on feedback from extensive classroom experience, the book has been carefully structured in order to make teaching more natural and effective. Although originally designed as the primary text for a graduate or advanced undergraduate course in information retrieval, the book will also create a buzz for researchers and professionals alike.

 

 

 

 

 

 

 

 

 

[Eventos] Workshop “Um novo mundo de dados”, FGV SP, 29/08/17


No dia 29/08/17 acontece na FGV SP (unidade da Rua Rocha, na região da Paulista) o workshop “Um novo mundo de dados”: http://direitosp.fgv.br/evento/novo-mundo-de-dados

Informações do site:

Continuar lendo

[Github] Análise exploratória aplicada ao ensino


Acredito que o professor, além de lecionar, deve procurar entender também os fatores que afetam o desempenho dos estudantes em suas disciplinas. Ou seja, é preciso também utilizar o lado pesquisador na própria atividade didática com o intuito de aperfeiçoar e, na medida do possível, adequar as técnicas de ensino às especificidades dos alunos.

Continuar lendo

Ciência de dados e Big Data: meus dois centavos.


Na maioria das vezes é mais fácil começar a descrever algo dizendo o que este “algo” não é. E, definitivamente, ciência de dados – ou usando o nome popularizado em inglês, Data Science –  não é uma corrida no Kaggle para ver quem aplica o maior número de algoritmos de aprendizado de máquina (ou machine learning, como bastante difundido  por terras tupiniquins também) em menos tempo, obtendo a maior acurácia possível. Continuar lendo

Probabilidade e Estatística


Este semestre estou ministrando a disciplina de Introdução à Probabilidade e Estatística. No link https://sites.google.com/site/ipe20172ufabcprofleandro/ é possível encontrar uma série de materiais como slides usados em aula, sugestões de livros-texto e livros de divulgação, exercícios e alguns artigos interessantes, como um que discute o famoso problema de Monty Hall, que pode ser resolvido usando o teorema de Bayes.

[Github] Análise de sentimentos – Rotten Tomatoes


Publiquei recentemente um repositório no Github contendo um código Python cuja função é fazer uma análise de sentimentos utilizando algoritmos de classificação tendo como base um dataset com reviews de filmes do site Rotten Tomatoes. Este dataset é disponibilizado em dois arquivos:  um contendo reviews positivos, e outro contendo reviews negativos.

Como os dados estão limpos e balanceados, torna-se mais fácil lidar com eles e aplicar os típicos algoritmos de classificação.

Segue o link do repositório: https://github.com/lasleandro/sentiment_analysis

[memo note] Livro: Statistical Mechanics of Learning


 

Learning is one of the things that humans do naturally, and it has always been a challenge for us to understand the process. Nowadays this challenge has another dimension as we try to build machines that are able to learn and to undertake tasks such as datamining, image processing and pattern recognition. Continuar lendo

[Dataset] Dados abertos – prefeitura de São Paulo


A prefeitura de São Paulo disponibiliza uma série de datasets bastante interessantes na página http://dados.prefeitura.sp.gov.br/dataset.   Segundo descrição no próprio site: Continuar lendo

[Dataset] [Github] Discursos de presidentes brasileiros.


Publiquei recentemente no GitHub, um código escrito em Python que tem como função extrair da página do Itamaraty (Ministério das Relações Exteriores, http://www.itamaraty.gov.br/) os discursos proferidos pelos presidentes Michel Temer, Dilma Rousseff e Lula da Silva. O código faz o scraping dos discursos, identificando automaticamente a data em que foi realizado e o respectivo presidente, e exporta o dataset de cada presidente para um arquivo .csv e para um arquivo .xlsx.

Continuar lendo