Você está na página 1de 52

FACULDADE FIA DE ADMINISTRAÇÃO E NEGÓCIOS

Fundação Instituto de Administração

Renato Azevedo Sant’Anna

SOLUÇÃO DE EXTRAÇÃO DE TÓPICOS DE TWEETS


COM TEXT MINING E TOPIC MODELING

São Paulo
2017
Renato Azevedo Sant Anna

SOLUÇÃO DE EXTRAÇÃO DE TÓPICOS DE TWEETS


COM TEXT MINING E TOPIC MODELING

Monografia apresentada à Faculdade FIA


de Administração e Negócios mantida pela
Fundação Instituto de Administração como
requisito para obtenção do certificado de
conclusão do curso de Pós-Graduação
Lato Sensu – MBA Analytics em Big Data.
Orientadora: Dra. Alessandra de Ávila
Montini.

São Paulo
2017
FOLHA DE APROVAÇÃO

Renato Azevedo Sant’Anna

SOLUÇÃO DE EXTRAÇÃO DE TÓPICOS DE TWEETS


COM TEXT MINING E TOPIC MODELING

/ /

Banca Examinadora:

Profº. Dr.
Orientador

Profº. Dr.

Profº. Dr.

Julgamento__________________________Assinatura______________________
'' ... na era da sobrecarga de
informação, a máxima luxúria é o significado
e o contexto.” (Louis Rossetto) – Fundador da
revista Wired.
RESUMO

O presente estudo aborda o uso da tecnologia de processamento de linguagem


natural (NLP) e de Topic Modeling (identificação de tópicos relevantes) a partir de
Tweets, de modo a extrair tópicos que contenham um valor semântico (significado) de
um resultado de busca de uma palavra-chave no Twitter. Poder comparar o resultado
dos agrupamentos de tópicos obtidos do texto dos tweets e o resultado dos
agrupamentos de tópicos obtidos das hashtags do mesmo conjunto de dados. Uma
vez que as técnicas de Topic Modeling descrevem documentos em um conjunto de
tópicos, e tópicos como um conjunto de palavras. A ideia é poder ter um entendimento
semântico da base de tweets em questão e poder fazer análises que podem ser
aplicadas a diferentes setores e situações.

Palavras-chave: NLP, Processamento de Linguagem Natural, Topic Modeling,


Modelagem de Tópicos, LDA, LSA, LSI, tweets, hashtags, text mining, Latent
Semantic Analysis, Latent Dirichlet Analysis, Latent Semantic Indexing, Gensim,
Python.
ABSTRACT

The present study addresses the use of Natural Language Processing (NLP)
technology and Topic Modeling (identification of relevant topics) from Tweets, in order
to extract topics that contain a semantic value (meaning) of a search result of a
keyword on Twitter. Compare the results of clusters of topics taken from the text of
tweets and the result of clusters of topics obtained from hashtags of the same set of
data. Due the fact that Topic Modeling techniques describe documents in a set of
topics, and topics as a set of words, the idea is to be able to have a semantic
understanding of the base of tweets and to be able to make analyzes that can be
applied to different sectors and situations.

Keywords: NLP, Natural Language Processing, Topic Modeling, LDA, LSA, LSI,
tweets, hashtags, text mining, Latent Semantic Analysis, Latent Dirichlet Analysis,
Latent Semantic Indexing, Gensim, Python.
SUMÁRIO

1 - INTRODUÇÃO ....................................................................................................... 1

2 - OBJETIVO ............................................................................................................. 6

3 - DESCRIÇÃO DAS VARIÁVEIS .............................................................................. 6

4 - ANÁLISE EXPLORATÓRIA .................................................................................. 8

4.1 - Variáveis Qualitativas ...................................................................................... 8

4.2 - Variáveis Quantitativas .................................................................................. 12

5 - MODELAGEM ...................................................................................................... 15

6 - TECNOLOGIAS ................................................................................................... 39

7 – CONCLUSÕES ................................................................................................... 41

8 - REFERÊNCIAS.................................................................................................... 42
1

1 - INTRODUÇÃO

Segundo o livro Introducing Data Science, “Big data é um termo que pode ser aplicado
para quaisquer conjuntos de dados que são tão grandes ou complexos que torna difícil
processá-los usando técnicas tradicionais de gerenciamento de bancos de dados”,
conhecidas também como base de dados relacionais.

Enquanto Data Science envolve usar técnicas estatísticas com o auxílio de métodos
da Ciência da Computação, para analisar quantidades massivas de dados, com o
objetivo de se extrair informações relevantes sobre sua estrutura, de modo a obter-se
conhecimento a partir desses dados. A diferença entre Big Data e Data Science é que
de que o primeiro envolve tratar os dados em sua forma crua e o segundo é a etapa
em que ocorre seu refinamento e extração de conhecimento. Interessante notar que
Data Science e Big Data evoluíram a partir da Estatística, mas são consideradas
disciplinas distintas”. 1

Modelo de Dados “define um conjunto de conceitos para a representação dos dados.


” Exemplo: Tabela. 2

Dados estruturados são dados que dependem de um modelo de dados e são


estruturados no formato de tabelas, formadas com linhas e colunas, e os exemplos
mais conhecidos são os arquivos de Excel. A linguagem SQL é a maneira preferencial
geralmente usada para a consulta de tabelas armazenadas em bancos de dados. ”3

E ao definir dados não estruturados, o livro Introducing Data Science cita que estes
“não são facilmente modelados em um modelo de dados devido ao fato do conteúdo
possuir contexto específico ou variante. ” 4 Alguns exemplos de dados não
estruturados são as mensagens de e-mails, postagens em redes sociais como
Facebook e Twitter, etc.

1
Fonte: Livro Introducing Data Science – p. 1,2
2
Fonte: http://www.inf.ufsc.br/~r.mello/ine5423/3-modeloRelacional.pdf
3 Livro Introducing Data Science – p. 4
4 Livro Introducing Data Science – p. 5,6
2

A dificuldade reside no fato de não existir padronização na forma de se dizer algo,


podendo conter por vezes erros gramaticais, variação no uso de expressões e da
escrita de palavras e uso de gírias, além da existência de diferentes idiomas e dialetos
regionais complicam ainda mais a tarefa de trabalhar com este tipo de dado.

Um modelo é uma abstração da realidade que provê indicações e insights sobre as


características de um fenômeno. 5

“Machine Learning é um campo de estudo da Inteligência Artificial que é muito


relacionado com a Matemática Aplicada e Estatística. ” 6 . Em português, o termo
poderia ser traduzido para Aprendizado de Máquina e “envolve dar aos computadores
a habilidade de aprender sem serem explicitamente programados para isso. “ 7.

De modo a se atingir este objetivo, “algoritmos de aplicação geral são desenvolvidos


e podem ser usados em vários tipos de problemas. Ao se desejar solucionar uma
tarefa específica, dados também mais específicos devem servir de entrada para o
algoritmo” 8 , de modo que o modelo aprenda pelos exemplos inseridos. “Um
computador poderá usar os dados de entrada do algoritmo e comparar seus dados de
saída com os dados desejados de saída, e ir se corrigindo. “9

“Dados de Linguagem Natural são um tipo especial de dado não estruturado, pois
requerem domínio de técnicas específicas de Data Science e Linguística. ” 10
Exemplos de aplicações são por exemplo o reconhecimento de tópicos, completar
palavras em frases e análise de sentimento. É um tipo de dado ambíguo, modelos
treinados para uma área de domínio não desempenham bem em outros. Entre as
linguagens de programação mais usadas atualmente para Machine Learning que
podem ser usadas para o processamento de linguagem natural estão o R e o Python.
Ambas possuem pacotes que tratam disso, como no caso do Python, podemos citar
a NLTK (Natural Language Toolkit) que é usada para análise de texto. 11

5 Livro Introducing Data Science – p. 58, 59


6 Livro Introducing Data Science – p. 5,6
7 Livro Introducing Data Science – p. 58, 59
8 Livro Introducing Data Science – p. 58, 59
9 Livro Introducing Data Science – p. 59,60,61
10 Livro Introducing Data Science – p. 59,60,61
11 Livro Introducing Data Science – p. 59,60,61
3

Dataset é um conjunto de dados e geralmente corresponde ao conteúdo de uma


tabela de um banco de dados. Nesse conjunto de dados cada coluna da tabela
representa uma variável em particular e cada linha corresponde a um membro desse
conjunto de dados. Pode também ser empregado para designar uma coleção de
dados de tabelas relacionadas, que se referem a um evento em particular. Na área de
Big Data, geralmente o dataset é dividido (split) em dois, um para servir de base de
treino e outro como base de testes para o modelo preditivo. Adicionalmente para
validar o modelo pode ser utilizado uma base de validação. 12
Feature é uma propriedade individual mensurável de um fenômeno sendo observado.
A importância da escolha de features que sejam informativas, discriminantes e
independentes são passos cruciais para a efetividade dos algoritmos usados em
Machine Learning. O conceito de “feature” é relacionado ao da variável exploratória
usada em técnicas estatísticas de regressão.13

Para que um texto possa ser trabalhado com técnicas de Machine Learning, pode ser
empregada uma técnica chamada de Bag of Words (nuvem de palavras), que apesar
de ser uma das mais simples, é amplamente usada em técnicas de NLP
(Processamento de Linguagem Natural). Consiste em “contar o número de
ocorrências de cada palavra que aparece no texto e inserir uma coluna no dataset
com a contagem de cada palavra”. 14

Na maioria dos casos ao se construir a nuvem de palavras para o dataset, escolhemos


“colocar somente as palavras que mais ocorrem, dessa forma são estas que acabam
tendo uma coluna adicionada na tabela. Podemos também ter uma outra coluna que
incluirá a informação de contagem das demais palavras não selecionadas, que
ajudam a dar uma ideia do tamanho de texto fora da seleção das palavras que mais
ocorrem”15.

Para evitar que palavras que são muito frequentes, mas que não são de grande
utilidade para a análise de texto, como artigos, preposições e conjunções não

12 Fonte: https://en.wikipedia.org/wiki/Data_set; https://en.wikipedia.org/wiki/Test_set


13
Fonte: https://en.wikipedia.org/wiki/Feature_(machine_learning)
14 Fonte: Livro Real World Machine Learning – p. 114, 115, 116
15 Fonte: Livro Real World Machine Learning – p. 114, 115, 116
4

atrapalhem, são normalmente apagadas do texto antes que se faça a contagem das
palavras que mais ocorrem que formarão a nuvem de palavras. Essas palavras que
são apagadas nesse processo são chamadas de “stop words”. 16

Uma característica desta técnica é que o dataset da nuvem de palavras rapidamente


cresce e se torna largo e esparso. Muitas features, em sua maioria acabam sendo
preenchidas com zeros, pois existem muitas palavras que não aparecem em todos os
textos. É interessante que o algoritmo de Machine Learning possa lidar bem com
dados esparsos, sem exigir muita memória para armazenar os vários zeros.17

Em um problema que envolva as 100 maiores ocorrências de palavras, cada palavra


representa uma feature do modelo. 18
Bag of Words é uma maneira interessante de se iniciar a abordagem de um problema
que envolve textos e serve de base para outras técnicas mais avançadas. 19

Um dos problemas do método de Bag of Words é sua natureza de simplesmente de


contar palavras. Se uma certa palavra (não uma stop word) é comum em um conjunto
de documentos objeto de estudo, mas que não é de relevância para este estudo, pode
acabar não trazendo valor para quem analisa. Se ao contrário, procurarmos focar em
palavras relativamente raras que são mais altamente preditivas do resultado dos
tópicos extraídos para esse conjunto de tweets, poderemos ter mais sucesso em
nossa busca. 20

Topic Modeling é um conjunto de técnicas que permitem descrever documentos em


um conjunto de tópicos, e tópicos como um conjunto de palavras. 21

16 Livro Real World Machine Learning – p. 114, 115, 116


17
Livro Real World Machine Learning – p. 115, 116
18
Livro Real World Machine Learning – p. 115, 116
19
Livro Real World Machine Learning – p. 147,148
20
Livro Real World Machine Learning – p. 147,148
21
Livro Real World Machine Learning – p. 152
5

Existe uma técnica de Topic Modeling probabilística chamada de Latent Dirichlet


Analysis (LDA), em que suposições específicas sobre a distribuição dos tópicos são
feitas. A ideia de que um documento pode ser descrito a partir de um pequeno
conjunto de tópicos e que qualquer termo (palavra) pode ser atribuída para um tópico.
Dois parâmetros que podem ser escolhidos são o número de tópicos a serem
utilizados pelo algoritmo LDA e o número de palavras para cada tópico.

O algoritmo do LDA irá determinar quais palavras compõem cada tópico de forma
probabilística, o que significa que cada vez que for rodado o algoritmo ele poderá
produzir resultados um pouco diferentes entre si.

Para efeito de comparação, será usado um outro algoritmo de Topic Modeling


chamado LSA (Latent Semantic Analysis), também conhecido como LSI (Latent
Semantic Indexing) que produz resultados similares ao LDA, com a diferença de
produzir pesos com probabilidades positivas e negativas para cada palavra de cada
tópico gerado, que pertencem ao mesmo Espaço Latente Semântico, ou seja, como
se para cada tópico houvesse um pólo positivo e um negativo e as palavras são
distribuídas ao longo desse espectro em que o valor da probabilidade positiva ou
negativa, representasse uma coordenada desse espectro. A biblioteca Gensim do
Python pode ser utilizada para implementar os algoritmos LDA e LSA.
6

2 - OBJETIVO

Este trabalho tem como objetivo mostrar que é possível extrair significado de uma
base de tweets de modo a ter aplicabilidade em situações de monitoramento de
grandes eventos e da repercussão de acontecimentos de grande impacto na
sociedade, empresas e governos.

Através da utilização da linguagem Python e algumas bibliotecas que trabalham com


NLP (Processamento de Linguagem Natural), o trabalho tem por objetivo dado um
resultado de busca de uma palavra-chave no Twitter, poder checar todas as outras
hashtags e palavras relacionadas com esta busca, de modo a podermos extrair as
palavras e hashtags que tem mais ocorrência e com auxílio de técnicas mais
avançadas como a LDA (Latent Dirichlet Analysis) e a LSA (Latent Semantic Analysis)
poder extrair tópicos que tenham um valor semântico desses tweets.

Uma vez que as técnicas de Topic Modeling descrevem documentos em um conjunto


de tópicos, e tópicos como um conjunto de palavras. A ideia é poder ter um
entendimento semântico da base de tweets em questão e poder fazer análises que
podem ser aplicadas a diferentes setores e situações, como em casos de crises de
imagem de empresas, monitoramento nas redes sociais da cobertura de grandes
eventos como a Copa do Mundo, Olimpíadas, shows de rock, torneios esportivos, e
da repercussão de notícias de última hora de grande impacto, etc. A princípio todo e
qualquer fluxo de tweets relacionado a algum tema de alta repercussão poderia se
aproveitar desse estudo.

3 - DESCRIÇÃO DAS VARIÁVEIS

A base original continha 17 colunas, que podemos entender como 17 features que
podem ser usadas no modelo de Machine Learning.

Entre as variáveis estão:

Segue abaixo print da tela da base original usada para a palavra-chave “Machine
Learning”, que foi extraída no período de 10 de março até 17 de março de 2017.
7

ID – variável qualitativa nominal que identifica o tweet de maneira única.


User Name – variável qualitativa nominal que idêntica o nome do usuário do autor
do tweet.
Universal Time Stamp – variável quantitativa contínua que identifica o horário do
tweet em relação ao fuso horário universal GMT.
Local Time Stamp – variável quantitativa contínua contendo o horário com fuso
horário local do tweet.
Text – variável qualitativa nominal contendo o texto do tweet. Nos textos dos tweets
também vêm inclusos as hashtags.
Language – variável qualitativa nominal que contém a informação do idioma do
tweet.
Profile Image – variável qualitativa nominal que contém a url do site do profile image.
Source – variável qualitativa nominal que contém a informação de referência de
source usada em Web Analytics para identificar a origem.
Location – variável qualitativa nominal com a informação da localização física da
pessoa que é o autor do tweet.
Time Zone – variável qualitativa nominal com a identificação do local do fuso horário.
Geo – variável qualitativa nominal contendo informação geográfica.
Hashtags – variável qualitativa nominal contendo as hashtags do respectivo tweet.
Urls – variável qualitativa nominal contendo a url do site contida no tweet.
User Mentions – variável qualitativa nominal contendo os usuários do Twitter
mencionados no tweet.
Media – variável qualitativa nominal contendo links para urls que continham imagens
do tweet.
Follower Count – variável quantitativa contínua contendo o número de seguidores
do autor do tweet.
Name – variável qualitativa nominal que contém o nome do autor do tweet.
8

Imagem de Print da base de tweets para a palavra-chave “Machine Learning”

4 - ANÁLISE EXPLORATÓRIA
Para o dataset de tweets para a palavra-chave “Machine Learning”, a análise de texto
geralmente é utilizada com a técnica Bag of Words, que utiliza a contagem das
palavras com mais ocorrência no conjunto de dados. Segue abaixo a análise das
variáveis qualitativas e quantitativas que foram obtidas diretamente do site do Tweet
Archivist.

4.1 - Variáveis Qualitativas

Top Words COUNT

MACHINELEARNING 16,185

AI 10,567

DATA 6,617

ML 4,218

BIGDATA 4,158

GOOGLE 3,658
9

Top Words COUNT

VIA 3,366

TECH 3,104

DATASCIENCE 3,040

DEEPLEARNING 2,526

USING 2,185

FINTECH 2,135

ANALYTICS 1,975

INTELLIGENCE 1,802

CLOUD 1,735

IOT 1,708

ARTIFICIAL 1,665

PYTHON 1,613

DL 1,568

ALGORITHMS 1,497

STARTUP 1,450

MARKETING 1,434

COMPETITION 1,401

SCIENCE 1,353

ARTIFICIALINTELLIGENCE 1,326
10

A nuvem de palavras para as hashtags da base:

Hashtags COUNT

#machinelearning 17,328

#ai 8,682

#bigdata 4,513

#ml 4,034

#datascience 3,138

#tech 2,875

#deeplearning 2,559

#fintech 2,123

#dl 1,602

#iot 1,493

#artificialintelligence 1,438

#rt 1,436
11

Hashtags COUNT

#data 1,136

#marketing 1,047

#analytics 976

#python 774

#startups 675

#abdsc 601

#healthcare 566

#google 562

#martech 544

#cloud 458

#algorithms 456

#blockchain 441

#startup 408
12

4.2 - Variáveis Quantitativas

Top Users Follower Count

TechCrunch 8,507,379

wef 3,029,055

Entrepreneur 2,884,761

BBCClick 2,440,380

pantip_kratoo 2,439,484

sciam 2,296,167

FastCompany 2,228,576

FortuneMagazine 2,189,705

ericschmidt 1,771,229

TheNextWeb 1,767,323
13

Top Users Follower Count

verge 1,741,738

firstpost 1,614,766

dna 1,580,106

KEEMSTAR 1,350,810

awscloud 1,154,900

arstechnica 1,119,973

klout 720,141

VentureBeat 685,394

expansioncom 668,832

pressecitron 658,826

techreview 657,516

frenchweb 642,468

physorg_com 588,273

nikkalsi 587,140

dez_blanchfield 581,704
14

Abaixo os dados referentes ao volume de tweets enviados a cada dia da semana que
foi feita o monitoramento da palavra-chave “Machine Learning”.
15

5 - MODELAGEM

Segundo o livro Python: Real World Machine Learning da Editora Packt Publishing,
o algoritmo LDA utiliza de aprendizado de máquina não supervisionado para modelar
os tópicos de um documento, baseado em exemplos textuais. Internamente, constrói
as categorias de saída, ou seja, os tópicos e sua composição (conjunto de palavras
para cada tópico).

Um exemplo de uso é para se entender do que se trata um documento ou no caso de


tweets, quais assuntos estão relacionados ao conjunto de tweets.

Ao manusear o algoritmo de LDA, conseguimos estabelecer quantos tópicos


queremos para aquele conjunto de dados e quantas palavras terão cada tópico. Para
cada tópico o algoritmo consegue determinar qual o “peso” de cada palavra para
aquele tópico. A seguir veremos as nuvens-de-palavras para cada tópico e o
correspondente gráfico de Pareto, com a plotagem das palavras de cada tópico em
ordem decrescente de importância.
16

Nesse grupo de palavras, podemos identificar palavras relacionadas a Machine


Learning como (“ai”, “machinelearn”, “bigdata”, “analyt") e palavras que remetem a
Mercado (“market”, “industri”), área de serviços (“servic”) e aplicações na área da
Saúde (“healthcare”, “human”), etc.
17

Ao analisarmos os diferentes grupos de palavras por tópico, podemos notar uma


superposição de alguns grupos de palavras como (“learn”, “machin”, “machinelearn”)
e que por coincidência se referem ao termo de busca contido na base que era
“machine learning”.

Mas mesmo assim podemos identificar, como neste exemplo das palavras do Top
Tweets - Tópico 01, algumas palavras relacionadas com Machine Learning como
(“unsupervis”, “supervis”) para denominar Aprendizado de Máquina Supervisionado e
Não-Supervisionado, palavras como (“analyt”, “deep”, “python”, “algorithm”, “predict”)
relacionadas com técnicas e tecnologias utilizadas na área de Big Data e de Analytics
como por exemplo a técnica de Deep Learning (que utiliza várias camadas de redes
neurais) e a linguagem Python.
18

Considero o Tópico 02 dos Top Tweets como tendo baixo valor semântico, em virtude
da dificuldade de interpretação desse conjunto de dados. Ao analisarmos o conjunto,
tirando as palavras em superposição aos tópicos anteriores de (“machin”, “learn”,
“machinelearn”), ver que existem algumas palavras relacionas com carros (“car”,
“fuel”), outras com dados e pesquisa (“data”, “find”), de posse (“owner”), e suporte
(“support”), que poderíamos supor serem relacionadas com o uso de machine learning
no mercado automotivo.
19

Já ao analisarmos o Tópico 03 dos Top Tweets, além daquelas que estão superpostas
às demais derivadas de Machine Learning, traz algumas palavras interessantes que
nos ajudam a entender esse agrupamento, vemos por exemplo a existência de
palavras relacionadas com o mercado de startups (“startup”, “uber”, “opportun”,
“competit”), outras sobre o mercado de cloud computing e seus participantes (“cloud”
para Cloud Computing e “googl” para designar o Google, que é um importante
empresa desse mercado).
20

Ao analisar os vários agrupamentos de palavras para cada tópico do Top Hashtags,


podemos perceber uma mudança qualitativa das palavras de cada tópico, sendo a
superposição dos assuntos menor que aquelas dos Top Tweets.

Nesse agrupamento de Top Hashtags – Tópico 00, podemos notar palavras


relacionadas com segurança da informação e cybercrime (“cybersecur”, “secur”,
“cybercrim”, “infosec”), palavras relacionadas com Cloud Computing e Big Data (como
“cloud” para Cloud Computing, “googl” para Google, “stratahadoop” para designar uma
conferência do mercado de Big Data), palavras relacionadas com inovação e ensino
21

(como “learn”, “innov” para inovação, “sxsw” que é um importante festival que ocorre
no Texas nos EUA, “design”, “edtech” para designar startups do mercado de
educação, “elearn” para ensino à distância por computador).

No agrupamento das Top Hashtags – Tópico 01, percebemos palavras relacionadas


com mercado de trabalho (“job”, “hire”), mercado de tecnologia (“digit”, “tech”, “cio”),
Marketing Digital (“seo” para designar otimização de resultados de busca), Data
22

Science e Visualização de Dados (“datascientist”, “dataviz” para designar visualização


de dados) e Cloud Computing e participantes desse mercado (“cloud”, “googl”,
“facebook”) e Big Data (“machinelearn”, “cognit” para designar “tecnologia de
computação cognitiva”).

Nota-se como nas anteriores, uma superposição de derivações de Machine Learning


como (“machinelearn”), mas o que difere este grupo são assuntos relacionados com
Big Data, Cloud Computing e Internet das Coisas (“ai”,“bigdata”, “datasci”,
“predictiveanalyt”, “deeplearn”, “iot”, “cloud”), startups do mercado financeiro e
tecnologias disruptivas relacionadas (“fintechs”, “blockchain” para designar tecnologia
23

usada na moeda virtual Bitcoin), assim como palavras também relacionadas com
aplicações na área da saúde (“healthcare”) e mercado (“market”) .

O agrupamento de palavras formadas pelo Top Hashtags – Tópico 03 podemos


perceber palavras relacionadas com startups (“startup”, “enterpreneur”, “market”,
“busi” para designar negócios), palavras relacionadas às áreas de Big Data e Data
Science (“machinelearn”, “datasci”, “tech”, “python”, “technolog”, “robot”, “api”, “googl”,
“tensorflow” para designar tecnologia de deep learning criada pelo Google,
24

“microsoft"), assim como palavras relacionadas com Growth Hacking e Marketing


Digital (“growthhack”, “video”, “news").

Para compararmos os resultados, vou utilizar um outro algoritmo conhecido como LSA
(Latent Semantic Analysis) no mesmo conjunto de dados, utilizando o mesmo número
de tópicos e de palavras para cada tópico. O LSA também é conhecido pela sigla LSI
(Latent Semantic Indexing) e é um método de aprendizado de máquina não
supervisionado.

Essa técnica também permite escolher a quantidade de tópicos e quantidade de


palavras para cada tópico, retornando um resultado similar aos dos tópicos gerados
pela técnica LDA. A diferença pode ser percebida nos valores de peso de cada palavra
para formar cada tópico, que podem ser tanto um valor com probabilidade positiva
quanto um valor de probabilidade negativa, o que pode acarretar em uma maior
dificuldade de interpretação.

Um efeito colateral que percebi ao fazer a nuvem de palavras para esses tópicos
gerados pelo LSA, foi de que somente aparecem as palavras para o tópico que
contribuíram positivamente para aquele tópico, ou no caso em que todos os valores
são negativos, são plotadas as palavras com valores de peso menos negativas (mais
perto do zero) em maior tamanho.

O LSA é bem mais rápido para executar que o LDA, visto que o LDA percorre o mesmo
conjunto de dados várias vezes, para poder criar seu conjunto de tópicos. A opção
“passes” no LDA controla o número de vezes que o conjunto de dados será percorrido
pelo algoritmo. No meu caso, utilizei o valor com o valor 25, o que fazia com que para
executar o mesmo levasse algo em torno de 40 minutos.

Já o LSA levou algo perto de um minuto para executar, o que para efeitos práticos é
muito melhor, mas temos de pesar os prós e os contras de cada algoritmo, se
procuramos velocidade de execução ou se preferimos um que nos traga maior
capacidade de interpretarmos aquela informação.
25

O LSA, a dificuldade potencial está justamente em perceber a eventual ambiguidade


dos resultados apresentados, mas notei que este fato pode ser extremamente útil em
termos semânticos, pois ao me aprofundar na pesquisa desse algoritmo, vi que
probabilidades negativas nos pesos das palavras, não significam que não
contribuíram para a formação do tópico.

Verifiquei que a técnica LSA usa um conceito chamado de Espaço Semântico Latente,
em que as palavras processadas para gerar cada tópico podem conter pesos positivos
e negativos, sendo que os vetores de documentos que contém estas palavras acabam
recebendo "coordenadas" para serem representadas nesse espaço semântico
lantente. Segundo o livro Real World Machine Learning, o algoritmo do LSA
implementa a noção de “conceito”, que é um padrão de termos similares no corpo do
documento, que tenta correlacionar quais palavras estão de alguma forma
relacionadas com outras, e que os tópicos são considerados “latentes” ou
“escondidos” nos dados.

Segundo o livro “Handbook of Research on Text and Web Mining Technologies”,


algumas palavras com pesos negativos ficarão em uma ponta do espectro desse
espaço, e outras com pesos positivos ficarão na ponta oposta do mesmo espectro, de
modo a caracterizarem formas contrastantes, como um pólo positivo e um pólo
negativo, e poderem representar todo o conjunto de dados ao longo do espectro do
espaço semântico latente.

Palavras com alto valor de peso associado em cada tópico gerado, sejam elas de
probabilidade positiva ou negativa, tendem a possuir maior valor semântico pois estão
associdadas a um maior conjunto de documentos no espaço semântico latente. De
modo a facilitar a interpretação desse conjunto de dados para análises semânticas
usando a técnica LSA, podemos associar as palavras geradas para cada tópico que
contenham conteúdo similares e desassociar aquelas com conteúdos que não sejam
similares entre si.

Para a leitura dos dados por meio dos gráficos de Pareto, fica bem mais fácil fazer
estando os gráficos de probabilidade positiva e negativa um de baixo do outro, para
entendermos todo o espectro de palavras, e “ler” o primeiro gráfico (de pesos
26

positivos) da esquerda (pólo positivo) para a direita (até o zero), e em seguida o de


baixo (de pesos negativos) da direita (do zero) para a esquerda (pólo negativo), desse
modo “lemos” do pólo positivo (gráfico de cima) até o pólo negativo no gráfico logo
abaixo.

Para o agrupamento de palavras do Tópico 00, não houveram valores de “peso”


negativo. Pode-se perceber a presença das palavras relacionadas com Cloud
Computing (“cloud”), mercado de startups (“startups”, “market”) e de tecnologias de
Big Data e Deep Learning (“deep”, “big data”, “analyt”, “python”).
27
28

Para o agrupamento de palavras do Top Tweets - Tópico 01, podemos ver a pouca
quantidade de palavras de peso positivo e a grande quantidade de palavras de peso
negativo. Pode-se perceber a presença de palavras com peso positivo relacionadas
com carga de trabalho (“workload”) e suporte (“support”).

E com peso negativo palavras relacionadas a Data Science, Big Data e IoT
(“machinelearn”, “ai”, “bigdata”, “ml”, “datasci”, “deeplearn”, “artificialintellig”, “analyt”,
“iot”, “algorithm”), outras relacionadas com tecnologia de Cloud Computing (“cloud”),
e outras com referência a mercado, startups do setor financeiro conhecidas como
fintechs e área de serviços de saúde (“market”, “fintechs” e “healthcare”). No caso,
percebo que as de peso negativo possuem maior valor semântico para a definição
desse tópico.
29

Ao analisarmos o agrupamento de palavras do Top Tweets – Tópico 02 para o LSA,


cujos os valores de peso são positivos percebemos várias palavras relacionadas a
área de Big Data e Data Science como (“ai”, “deep” para designar deep learning, “ml”
abreviação de machine learning, “analyt” para Analytics, “artifici” para Inteligência
Artificial, “iot” para Internet das Coisas, “predict”, “python”) e para os cujo os valores
possuem peso negativo podemos ver palavras relacionadas com Startups, Venture
Capital e Cloud Computing (“googl”, “startup”, “vcs” para designar venture capital no
plural, “cloud”, “opportun”, “investor”, “launch”) e relacionada com Big Data temos
(“kaggl” para designar o site Kaggle famoso por competições de machine learning e
que foi comprado pelo Google, “api”).
30
31

O agrupamento de palavras do Top Tweets - Tópico 03 para as palavras cujos valores


de peso são positivos estão relacionados com Big Data e Data Science (“unsupervis”
para designar Aprendizado de Máquina Não-Supervisionado, “supervis” para designar
Aprendizado de Máquina Supervisionado, “datasci”, “big data”, “python” e “algorithm”),
outras relacionadas com mercado automotivo como (“car”, “owner”).

As palavras de peso negativo para este tópico podemos identificar algumas


relacionadas com Inteligência Artificial, Cloud Computing e startups (“ai”, “ml”, “googl”
para Google, “cloud” para Cloud Computing, “vcs” para Venture Capital, “partner”).
32

A plotagem dessa nuvem de palavras aconteceu algo interessante, como todos os


valores gerados eram negativos, as palavras que apareceram com maior tamanho,
foram as que tinham os valores de probabilidade menos negativos, ou seja, mais
próximos de zero.

O agrupamento de palavras do Top Hashtags - Tópico 00 para as palavras cujos


valores de peso são todos negativos possuem um grande grupo relacionadas com Big
Data, Data Science e Inteligência Artificial (“big data”, “datasci”, “ml”, “deeplearn”,
“machinelearn”, “artificialintellig”, “analyt”), e outras relacionadas com tecnologias de
cloud computing, Internet das Coisas, startups, fintechs, mercado de aplicações de
saúde (“tech”, “iot”, “fintech”, “startup”, “googl”, “market”, “healthcare”, “cloud”).
33
34

O agrupamento de palavras do Top Hashtags - Tópico 01 para as palavras cujos


valores de peso são positivos existem algumas palavras relacionadas com Machine
Learning, Data Science e Analytics (“machinelearn”, “datasci”, “analyt” e “python),
outras relacionadas com Startups, Transformação Digital, E-commerce (“startup”,
“digitaltransform”, “investor”, “ecomerc”).

As palavras de peso negativo para este tópico podemos identificar algumas


relacionadas com Inteligência Artificial, Big Data e Internet das Coisas (“ai”, “ml”, “iot”,
“deeplearn”, “bigdata”, artificialintellig”) e outro grupo muito interessante relacionado
com tecnologias disruptivas como Realidade Aumentada, Realidade Virtual,
Blockchain, Martech, Chatbots (“ar” para designar augmented reality, “vr” para
designar virtual reality, “blockchain”, “martech” para designar tecnologia aplicada ao
marketing, “chatbot, “bot”).
35

O agrupamento de palavras do Top Hashtags - Tópico 02 para as palavras cujos


valores de peso são positivos apresentam alguma superposição com os tópicos
gerados anteriormente, como para as palavras relacionadas com Big Data e Data
Science (“bigdata”, “datasci”, “analyt”, “iot”), interessante notar que termos
relacionados com tecnologias disruptivas como Realidade Aumentada, Realidade
Virtual, Blockchain (“ar”, “vr”, “blockchain”) que no tópico anterior apareciam como
tendo peso negativo, aqui aparecem com peso positivo. Ocorre a presença de grupo
de palavras relacionadas com transformação digital, aplicações em saúde, com o
mercado de startups financeiras e do mercado de seguros (“digitaltranform”,
“healthcare”, “fintech”, “insurtech”) e interessante também notar palavras relacionadas
36

com a área de sistemas operacionais, Cloud Computing e visualização de dados


(“linux", “dataviz” para designar Técnicas de Visualização de Dados, “hadoop”).

Para as palavras de peso negativo para este tópico podemos identificar também
alguma superposição com os anteriores para as relacionadas com Machine Learning
e Inteligência Artificial (“machinelearn”, “ai”, “artificialintellig”), assim com um grupo de
palavras relacionadas com Cloud Computing (“googl” para Google, “cloud” para Cloud
Computing”) e outro grupo relacionado com Startups, mercado de inovação, varejo e-
commerce (“startup”, “market", “sxsw” para designar evento de inovação, “innov” para
designar inovação, “vc” para Venture Capital, “martech” para designar tecnologia
aplicada ao marketing, “investor”, “ecomerc” e “retail”).
37

O agrupamento de palavras do Top Hashtags - Tópico 03 para as palavras cujos


valores de peso são positivos apresentam menor superposição com os tópicos
gerados anteriormente, e podemos identificar palavras relacionadas com Machine
Learning e Internet das Coisas (“ml”, “iot”, “artificialintellig”), outras palavras
relacionadas com Fintechs e mercado de startups (“fintech”, “startup”, “market”) e
palavras relacionadas com Computação Cognitiva, tecnologias disruptivas e
cybersegurança (“cognitivecomput”, “martech”, “technolog”, “cybersecur”).

Para as palavras de peso negativo para este tópico podemos identificar também
alguma superposição com os anteriores para as relacionadas com Inteligência
Artificial e Data Science (“ai”, “datasci”, “machinelearn”), a existência de palavras
38

relacionadas com tecnologias de Big Data e Cloud Computing como (“python”,


“algorithm”, “neuralnetwork”, “azur” para designar a plataforma Azure da Microsoft de
computação em nuvem), assim como um grupo de palavras relacionadas com
aplicações de tecnologia na área da saúde e atendimento (“healthcare”, “bot”,
“chatbot”).

Os resultados gerados pelo modelo LSA para a base utilizada provaram serem um
pouco mais complicados para analisar, mas com maior qualidade semântica dos
resultados para os casos como por exemplo análise de tweets, mas não podemos
dizer o mesmo para o caso da análise das hashtags. Notei uma menor superposição
dos tópicos gerados para os tweets usando o LSA em relação ao LDA, e em forma
contrastante o LSA apresentou maior superposição dos tópicos gerados com a base
de hashtags em relação ao LDA. Resumindo, indicaria o uso do LSA para a análise
de coluna de texto de tweets e o LDA para a análise de coluna de Hashtags.

Aplicações similares da tecnologia de Topic Modeling, podem ser vistas por exemplo
em artigo do site: https://techxplore.com/news/2017-06-twitter-monitoring-riots-quicker-police.html
Nesse artigo é demonstrado como o monitoramento de tweets pode ajudar a prevenir
manifestações que se transformem em baderna e antes que sejam reportadas à
polícia. O monitoramento desses tweets exigiria uma tecnologia adicional de
monitoramento em tempo real dos tweets, para que automaticamente fosse feito o
processamento desses tweets com tecnologia de NLP (Processamento de Linguagem
Natural). São usadas informações de quando foi postado, localização e seu conteúdo
para a análise e detecção desses acontecimentos.

Exemplos adicionais temos por exemplo na utilização conjunta com a análise de


Análise de Sentimento ou de Favorabilidade de posts em redes sociais como
Facebook ou Twitter como exemplo do livro Python: Real World Machine Learning.
Primeiro identifica-se os termos com mais relevância e pode-se analisar sua valência
se neutra, positiva ou negativa.
39

6 - TECNOLOGIAS

Para a realização da extração da base inicial de tweets foi utilizado o site Tweet
Archivist, que pode ser acessado em www.tweetarchivist.com e por meio de uma
assinatura mensal, é possível se monitorar até 3 palavras-chave e são fornecidas
estatísticas de nuvem de palavras, de hashtags, de volume no tempo de tweets, top
influencers.

A base inicial contém cerca de 50 mil tweets com a palavra-chave “Machine Learning”.
Entre as técnicas iniciais que podem ser aplicadas a uma base de tweets é a chamada
Bag of Words das palavras que mais ocorrem nos tweets e das hashtags, que
inicialmente já foi fornecida pelo próprio site onde foi extraída a base, mas sem a
remoção das “Stop Words”.

O passo seguinte é a remoção das “Stop Words” com a utilização de técnicas de NLP
(Processamento de Linguagem Natural) em Python utilizando a biblioteca NLTK. Essa
biblioteca oferece suporte para diversos idiomas.
40

Passos adicionais envolvem o uso da técnica LDA (Latent Dirichlet Analysis) e a


comparação com os resultados obtidos com a técnica LSA (Latent Semantic Analysis)
que em Python podem ser implementadas com a biblioteca Gensim.

Para comparar as metodologias de ambas as técnicas, defini o uso de 4 tópicos, cada


um contendo 50 palavras e para efetuar a visualização dos dados, plotei uma nuvem
de palavras para cada tópico gerado pelos algoritmos LDA e LSA e para a análise fiz
um gráfico de Pareto dos Top Tweets e das Top Hashtags para cada tópico gerado,
sendo que o LSA fiz um gráfico de Pareto para as palavras com peso positivo e outro
para as palavras com peso negativo para a formação de cada tópico.

Para o caso específico da técnica LSA, há casos em que o número de palavras


geradas contendo probabilidade com peso positivo ou negativo é inexistente ou muito
inferior a uma das duas opções de probabilidade geradas pelo algoritmo, gerando por
isso apenas uma das visualizações das palavras que formam o tópico ou uma
visualização com apenas algumas palavras.

A biblioteca Gensim começou como uma coleção de scripts em Python para a


Biblioteca Checa de Matemática Digital em 2008. Gensim é uma abreviação de (gere
um similar em inglês). Em 2010 foi publicado um paper que descreve o seu
funcionamento. É otimizado para a modelagem semântica não supervisionada de
texto.

Em 2011, o autor do pacote Gensim publicou o seu código na plataforma aberta


Github. É licenciada pela GNU LGPL v2.1.

Uma aplicação muito interessante seria a utilização na área de Bibliometria, de modo


a compilar um conjunto grande de publicações no meio acadêmico.
41

7 – CONCLUSÕES

Para este trabalho, foi utilizada base de dados de tweets relacionadas ao resultado de
busca das palavras-chave “machine learning” e de modo a fazer uma comparação da
eficácia e qualidade dos tópicos gerados pelo modelo LDA com o modelo LSA,
aplicados tanto para a coluna de texto dos tweets e para a coluna de hashtags, que
também trazem palavras relacionadas ao tweets.

Podemos constatar ao longo deste trabalho, a maior qualidade semântica


(assertividade) na formação do agrupamento de tópicos e palavras gerados a partir
do uso da coluna de Hashtags quando comparados os resultados gerados a partir da
coluna de texto dos tweets. Isso pode ser atribuído ao menor número de “resíduos”
de texto que existem na coluna de hashtags, que para atingirmos resultado similar ao
usarmos a coluna de texto dos tweets, exige-se um maior “esforço” para limpar a base
dos resíduos de texto sem significado, com o uso de “stop words”.

O modelo LDA tem o mérito de ser mais facilmente representado em uma nuvem de
palavras, por não apresentar pesos com valores negativos de probabilidade gerada
para o tópico e ter uma interpretação mais fácil de ser explicada. O modelo LSA
indicaria o seu uso quando temos uma base com maior presença de “resíduos” de
texto de menor valor semântico, de modo a facilitar a identificação daqueles que
possuem maior relevância. Por isso, que indiquei ao final da análise dos resultados
obtidos, que indicaria o uso do LSA para a análise de coluna de texto de tweets e o
LDA para a análise de coluna de Hashtags.

No final, houve alguma similaridade nos resultados apresentados pelos algoritmos


LDA e LSA, entre os tópicos gerados, mas percebi que o uso conjunto das duas
técnicas para a mesma base que contém a coluna de tweets e a coluna de hashtags,
permitiu encontrar uma maior variedade de palavras associadas a cada um dos
tópicos gerados e discernir qual técnica é melhor para cada coluna de dados da base.

Para trabalhos futuros, seria interessante comparar a evolução das palavras geradas
para cada tópico no tempo e seus respectivos “pesos”, assim como para o
monitoramento de tweets em tempo real, desenvolver um sistema classificador de
42

tweets que fizesse a entrada e carga de dados de forma automática, que pudesse
fazer a categorização e classificação das palavras das hashtags e dos textos dos
tweets em tópicos previamente catalogados com uma base de treino e a identificação
de novos tópicos relevantes, para em seguida verificarem a valência (positiva, neutra
ou negativa) de cada texto ou hashtag, para identificar o grau de favorabilidade dos
mesmos e permitir uma visão sistêmica e com maior profundidade do monitoramento
em curso.

8 - REFERÊNCIAS

Livros:

Brink, Richards, Fetherolf - Real World Machine Learning - Manning Publications


Co - 2017.

Cielen, Meysman, Ali - Introducing Data Science - Manning Publications Co - 2016

Documentos eletrônicos:

Alvarez-Melis, D.; Saveski, M. - Topic Modeling in Twitter:


Aggregating Tweets by Conversations - Massachussetts Institute of Technology -
Cambrige, MA, Estados Unidos - 2016 -
Disponível em:
<http://www.aaai.org/ocs/index.php/ICWSM/ICWSM16/paper/download/13162/12778
>. Acesso em 09/10/2017.

Blei, David; Lafferty, John - TOPIC MODELS - Disponível em:


<http://www.cs.columbia.edu/~blei/papers/BleiLafferty2009.pdf >. Acesso em
09/10/2017.

Chuang, J.; Wilkerson, John; Weiss, R.; Tingley, D.; Stewart, B.; Roberts, M.;
43

Poursabzi-Sangdeh, F.; Grimmer, J.; Findlater, L.; Boyd-Graber, J.; Heer, J. -


Computer-Assisted Content Analysis: Topic Models for Exploring Multiple Subjective
Interpretations - 2014 - Disponível em: <
https://scholar.princeton.edu/sites/default/files/bstewart/files/nipshpml2014.pdf >.
Acesso em 09/10/2017.

Ebert, Sebastian - Unsupervised Learning - Junho, 2015 - Disponível em:


< http://www.cis.uni-muenchen.de/~davidk/ap/lectures/11.pdf >. Acesso em
09/10/2017.
Hong, L.; Davison, B. - Empirical Study of Topic Modeling in Twitter
- Departamento de Ciências da Computação e Engenharia - Lehigh University -
Bethlehem, PA - Estados Unidos -
Disponível em: < http://snap.stanford.edu/soma2010/papers/soma2010_12.pdf >.
Acesso em 09/10/2017.

Kloo, Ian. - Textmining: Clustering, Topic Modeling, and Classification - Agosto, 2015
- Disponível em: < http://data-
analytics.net/cep/Schedule_files/Textmining%20%20Clustering,%20Topic%20Modeli
ng,%20and%20Classification.htm >. Acesso em 09/10/2017.

Linshi, Jack - Personalizing Yelp Star Ratings: a Semantic Topic Modeling Approach -
Yale University - Disponível em:
<https://www.yelp.com/html/pdf/YelpDatasetChallengeWinner_PersonalizingRatings.
pdf >. Acesso em 09/10/2017.

News classification with topic models in gensim - Artigo publicado no GitHub -


<
https://markroxor.github.io/gensim/static/notebooks/gensim_news_classification.html
#topic=0&lambda=1&term= >. Acesso em 09/10/2017.

Perrier, Alexis - Topic Modeling of Twitter Followers - Setembro, 2015 - Disponivel em:
< http://alexperrier.github.io/jekyll/update/2015/09/04/topic-modeling-of-twitter-
followers.html >. Acesso em 09/10/2017.
44

Perrier, Alexis - Segmentation of Twitter Timelines via Topic Modeling - Setembro,


2015 - Disponível em: <
http://alexperrier.github.io/jekyll/update/2015/09/16/segmentation_twitter_timelines_ld
a_vs_lsa.html >. Acesso em 09/10/2017.

Rare Technologies - FAQ do pacote Gensim sobre a técnica LSI no GitHub -


Disponível em: < https://github.com/RaRe-Technologies/gensim/wiki/Recipes-&-
FAQ#q4-how-do-you-output-the-u-s-vt-matrices-of-lsi >. Acesso em 09/10/2017.

Rehurek, Radim - Tutorial do Modelo LDA - Latent Dirichlet Allocation - 2009 -


Disponível em: < https://radimrehurek.com/gensim/models/ldamodel.html >. Acesso
em 09/10/2017.

Rehurek, Radim - Tutorial do Modelo LSI - Latent Semantic Indexing - 2009 -


Disponível em:
< https://radimrehurek.com/gensim/models/lsimodel.html >. Acesso em 09/10/2017.

Rehurek, Radim - Latent Semantic Analysis - 2009 - Disponível em:


< https://radimrehurek.com/gensim/wiki.html#latent-semantic-analysis >. Acesso em
09/10/2017.

Wang, S.; Chen, Z.; Fei, G.; Liu, B.; Emery, S. - Targeted Topic Modeling for Focused
Analysis - University of Illinois - Agosto, 2016 - Chicago, IL, Estados Unidos -
Disponível em: <http://www.kdd.org/kdd2016/papers/files/rfp0017-wangA.pdf >.
Acesso em 09/10/2017.

Wikepedia - Definição de Data Set em Inglês – Disponível em:


< https://en.wikipedia.org/wiki/data_set >. Acesso em 09/10/2017.

Wikepedia - Definição de Test Set em Inglês - Disponível em:


< https://en.wikipedia.org/wiki/Test_set >. Acesso em 09/10/2017.
45

Wikepedia - Definição de Feature de Machine Learning em Inglês -


Disponível em:
< https://en.wikipedia.org/wiki/Feature_(machine_learning) >. Acesso em
09/10/2017.