Você está na página 1de 19

PROJETO CONSTRUÇÃO

BIG DATA

Equipe:

Engenheira de Dados – Viviane Fugiwara

Desenvolvedor – Safwan Aljbaae

Desenvolvedora – Isabela Garcia

Product Owner – Daniel Brito

Mentora Técnica e Funcional – Jhean Camargo


SUMÁRIO

1 INTRODUÇÃO........................................................................................................................................4
1.1 NOSSO OBJETIVO...............................................................................................................................5

1.2 OBJETIVOS ESPECÍFICOS....................................................................................................................5


1.3 METODOLOGIA..................................................................................................................................5
2 ESTUDO TEÓRICO.................................................................................................................................6
2.1 BIG DATA............................................................................................................................................6
2.2 MICROSOFT AZURE............................................................................................................................7
2.3 LGPD...................................................................................................................................................7
2.4 GPT-3..................................................................................................................................................7

2.5 MACHINE LEARNING..........................................................................................................................7


2.6 LEMATIZAÇÃO....................................................................................................................................8
2.7 VETORIZAÇÃO DE TEXTO...................................................................................................................8
3 DESENVOLVIMENTO.............................................................................................................................9
3.1 BASE SINTÉTICA.................................................................................................................................10
3.2 SOLUÇÃO DE CLASSIFICAÇÃO DE E-MAILS.......................................................................................12

3.2.1 FLUXO “AS IS”.................................................................................................................................12


3.2.2 FLUXO “TO BE”...............................................................................................................................14
3.2.2.1 ETAPA DO PROCESSO..................................................................................................................14
3.2.2.2 RESULTADO FINAL.......................................................................................................................15
3.3 ARQUITETURA BIG DATA...................................................................................................................15
3.3.1 ARQUITETURA GCP E AWS.............................................................................................................16

3.3.2 ARQUITERURA AZURE....................................................................................................................17


4 COMENTÁRIOS E SUGESTÕES..............................................................................................................18
5 REFERÊNCIAS........................................................................................................................................19
PREFÁCIO

A Send.Knowledge, nosso cliente, foi selecionada entre algumas Startups para fazer a
mineração de informações não estruturadas, relacionadas às vendas dentro da plataforma de
e-mails do seu cliente, uma instituição financeira. Para solucionar esta demanda de mercado,
a Send.Knowledge adotou a metodologia de Process Mining, uma das mais avançadas técnicas
de Ciência de Dados para descoberta, monitoramento e otimização de processos.
Para atingir o seu objetivo a Send.Knowledge incluiu em sua pipeline de algoritmos plataformas
pagas, e.g. a LUIS da Microsoft, que os possibilitou alcançar bons resultados.

O projeto da equipe da turma III (denominada FADO) foi o de desenvolvimento de um algoritmo


agnóstico às nuvens para substituição da plataforma LUIS da Microsoft.

O desafio proposto à nossa equipe (denominada Metaverso) foi a construção de um BIG DATA,
ou seja, analisar Custo X Benefício entre as principais nuvens existentes no mercado, construir
uma arquitetura, configurar os serviços da nuvem escolhida e implementar o algoritmo
desenvolvido pelo grupo FADO. Para isso, foi necessário realizar a melhoria desse algoritmo,
uma vez que ele não foi desenvolvido para executar um alto volume de dados, também foi
necessário o desenvolvimento da geração de dados sintéticos para simulação da massa de e-
mails, utilizando o GPT-3.

Durante o projeto os sócios da Send.Knowledge encerram a startup, e o Instituto D’Vinci3


absorveu o desafio proposto disponibilizando ambiente nuvem.

Palavras-chaves: Process Mining, Big data, base sintética GPT-3, NLP, Vetorização, Machine
Learning e Classificação.
1. Introdução
Estamos vivendo um momento em que o volume de dados gerados nunca foi tão alto, e será
essencial para todas empresas que tenham ou projetem um alto volume de dados em pequeno
ou médio prazo, se preocupar com o armazenamento, organização e tradução dos dados para
tomadas de decisões. Pensando nisso a Send.Knowledge propôs o desafio para nosso grupo
(denominado Metaverso) através do Instituto D’vinci3, de criar uma solução Big Data rodando
a solução do desafio da equipe da turma III (denominada FADO).

A startup nos deu autonomia para escolher a nuvem para implementar o Big Data, e após
realizarmos diversas pesquisas, orçamento, alinhamentos com mentores, chegamos à
conclusão de que a Azure da Microsoft seria a melhor nuvem para trabalharmos nesse projeto.

Durante o projeto identificamos a necessidade de melhorar a solução FADO para rodar em


nosso ambiente, uma solução que tinha outro proposito, não foi desenvolvida para executar
um alto volume de dados, para isso utilizamos as técnicas de lematização, vetorização e
classificação ML.

A Send.Knowledge informou que não tem cenários (massa de dados de e-mails) para nos
fornecer para as validações, e que também sofriam com essa deficiência, como e-mails são
dados sigilosos, não é possível mostrá-los por conta do risco de vazamento de dados
confidenciais que esses e-mails podem conter, e pela violação da LGPD não podem utilizar os
dados do atual cliente, e consequentemente não conseguem apresentar o produto para
prospecção de novos clientes. Para testarmos nosso ambiente, desenvolvemos em linguagem
python uma base de dados de e-mails sintética utilizando o GPT-3, baseado em Machine
Learning, que é capaz de gerar dados extremamente parecidos com a realidade.
1.1. Nosso Objetivo
Desenvolver uma solução Big Data na nuvem Azure da Microsoft para suportar o
armazenamento e processamento de alto volume de dados, implementando nesse ambiente a
solução FADO, com melhorias no código para atender a volumetria de dados, e assim, melhorar
o desempenho e assertividade da solução. E para testes e validações, tanto da arquitetura da
nuvem quanto da solução FADO criar uma solução de geração de base sintética de e-mail.

1.2. Objetivo específicos


Abaixo listamos os pontos para atingirmos o nosso objetivo final neste projeto:

 Analisar principais nuvens do mercado;


 Criar e implementar arquitetura da nuvem escolhida (Azure);
 Compreender, melhorar e implementar código FADO na Azure;
 Criar solução de geração de dados sintéticos.

1.3. Metodologia
Para atingirmos o nosso objetivo, buscamos analisar a dor de nosso cliente e alinhar as
possibilidades de soluções, para assim fechar toda a cadeia de processos que nos daria uma
trajetória para a adoção dos algoritmos necessários. Fizemos isso através de:

 Entrevistas com o cliente para contextualização;


 Desk Research para entendimento do problema e buscar alternativas de soluções;
 Preenchimento do Canvas da proposta de valor (ver Fig. 1) por toda a equipe, reunindo
a compreensão de cada membro e buscando o ponto de vista a partir da visão do perfil
do cliente através da identificação das suas dores, seus ganhos e suas tarefas, definindo
assim o foco do problema.
Figura 1: Proposta de valor

Concluímos que a maior dor da Send.Knowledge é a impossibilidade de demonstrar seu


produto, o que dificulta a prospecção de vendas. Por esta razão, a solução proposta pela equipe
foi criar um ambiente em nuvem escalonável, e também a geração de dados sintéticos.

2. Estudo teórico

2.1. Big data


Big data é um termo que descreve grandes volumes de dados (estruturados e não
estruturados), sendo difíceis ou impossíveis de processar usando métodos tradicionais, que
inundam as empresas no dia-a-dia. Mas não é apenas o tipo ou a quantidade de dados que
importa, é o que as organizações fazem com os dados. Big data pode ser analisado para insights
que melhoram as decisões e dão confiança para fazer movimentos estratégicos de negócios.
Ao combinar big data com análises de alto desempenho, podemos realizar tarefas relacionadas
aos negócios, como: determinar as causas-raiz de falhas, problemas e defeitos quase em tempo
real, detectar anomalias com mais rapidez e precisão do que o olho humano, entre outras.
2.2. Microsoft Azure

Microsoft Azure é uma plataforma em cloud que concentra toda a plataforma de nuvem da
Microsoft, desde a infraestrutura de cloud computing para hospedar sistemas empresariais, até
ferramentas e recursos que expandem a capacidade produtiva de negócios em todos os
setores. Ela funciona como apoio tecnológico ao negócio, sua capacidade de lidar com big data,
data mining e data lake se torna uma ótima oportunidade para o projeto.

2.3. LGPD

A Lei Geral de Proteção de Dados Pessoais (LGPD), Lei n° 13.709/2018, foi promulgada para
proteger os direitos fundamentais de liberdade e de privacidade e a livre formação da
personalidade de cada indivíduo. A Lei fala sobre o tratamento de dados pessoais, dispostos
em meio físico ou digital, feito por pessoa física ou jurídica de direito público ou privado,
englobando um amplo conjunto de operações que podem ocorrer em meios manuais ou
digitais.

2.4. GPT-3

A GPT-3 é um algoritmo que utiliza deep learning treinado por textos de milhares de livros para
unir palavras e frases. Foi construída pela OpenAI e lançado em 2020. Possui capacidade de
imitar texto escrito por humanos com grande realismo.

2.5. Machine Learning

Machine Learning é a ciência (ou a arte) de programar computadores para que possam
aprender com os dados (Géron, 2019, p. 6), hoje em dia, está em todos os lugares:
nos filtros de spam dos e-mails, sistemas de recomendações, detecção de doenças, em carros
autônomos, entre outros. Esta técnica é ótima em conseguir simplificar problemas complexos
e possui excelentes ferramentas para classificação (Géron, 2019, p. 28) tanto supervisionada,
quanto não supervisionada. Alguns exemplos de algoritmos são kNN (k-Nearest Neighbors),
Random Forest, redes neurais.

2.6. Lematização

A lematização é o processo de deflexionar uma palavra para determinar o seu lema (as flexões
chamam-se lexemas). Por exemplo, as palavras “gato”, “gata”, “gatos”, “gatas” são todas
formas do mesmo lema: “gato”. Igualmente, as palavras “tiver”, “tenho”, “tinha”, tem são do
mesmo lema “ter”. E “bom”, “melhor” e “ótimo” são lexemas do lema “bom”. A lematizção é
útil quando queremos ver os usos de palavras em contextos sem importância das flexões. Por
exemplo, para a criação e uso de índices ou na investigação linguística. (Salviati, M. E., 2017).

2.7. Vetorização de Texto

A vetorização de textos consiste na representação de um texto na forma de um vetor de


termos. A forma mais comum é associar cada termo com uma frequência, onde cada
documento é representado por um vetor de termos e cada termo possui um valor associado
que indica o grau de importância (denominado peso) desse no documento. Portanto cada
documento possui um vetor associado que é constituído por pares de elementos na forma
(palavra 1, peso 1), (palavra 2, peso 2),(palavra n, peso n). Ele considera os pesos próximos de
um (1) extremamente importantes e, os próximos de zero (0), irrelevantes e podem ser
calculados de diversas formas, mas esses métodos geralmente se baseiam na contagem do
número de ocorrências dos seus termos, a frequência. (Fredigo Hack, 2013).
3. Desenvolvimento

3.1. Base Sintética


Neste projeto, como uma continuação natural do projeto da equipe da turma III (denominada
FADO), vamos contribuir com a Send.Knowledge desenvolvendo um algoritmo capaz de lidar
com big data, dados não estruturados na forma de e-mails, usando uma das tarefas
fundamentais em Processamento de Linguagem Natural (NLP) para extrair insights. Uma das
tarefas mais desafiadoras para o desenvolvimento foi encontrar uma base de e-mails, devido à
sensibilidade das informações que esses e-mails podem conter. Ao desenvolver métodos de
Machine Learning, é muito útil testá-los em dados sintética (falsos) e dados reais. Testar em
dados falsos é útil porque assim você conhece a resposta “verdadeira” e pode verificar o
procedimento em condições ideais. Se o seu método não funcionar quando os dados forem
projetados para a tarefa, é improvável que funcione em condições reais. Dados falsos também
permitem que você teste a robustez do seu método quando as condições não são perfeitas –
por exemplo, tente adicionar alguns outliers desagradáveis e veja se o método ainda funciona.
Com dados falsos, você pode gerar quantas amostras precisar, garantindo assim que o que você
vê é real (estatisticamente significativo). Outra vantagem dos dados falsos é que qualquer
pessoa pode reproduzir seu trabalho e verificar (ou estender) seus resultados. Às vezes, dados
reais não podem ser distribuídos devido a restrições impostas pelo proprietário dos dados. Mas
nunca há restrições sobre dados falsos. Você só precisa explicar o processo de geração de dados
com clareza suficiente para que outras pessoas possam replicar o que você fez. O teste em
dados reais é útil porque fornece alguma indicação de se o seu método será útil na realidade e
não apenas na teoria.

Utilizamos a tecnologia GPT-3 Open AI (https://openai.com/) para criar 1500 e-mails sintéticos.
O uso restrito desta ferramenta foi baseado em três contas gratuitas criadas por membros do
nosso grupo. A sigla GPT (Generative Pre-trained Transformer) representa esse uma tecnologia
que, baseada em Machine Learning, é capaz de processar a linguagem natural humana e
produzir textos de forma preditiva. O GPT-3 é um programa de inteligência artificial focado na
produção de texto, que se baseia no conceito de uma rede neural. A partir de um parágrafo
com determinada ideia podemos interpretar a ideia e gerar novo textos com a linha de
raciocínio usando vários algoritmos estatísticos. A seguir apresentamos um exemplo dos
resultados estimados por GPT-3:

palavra-chave Texto

Inserimos Prezado Cliente,


boleta
retroativa
Informamos que a boleta referente ao título (informar número do título) está
disponível para visualização e impressão no nosso site.

Acesse o link (informar o link) e faça o login com seus dados cadastrais. Em
seguida, acesse a opção “Boletas” e localize a boleta desejada.

Caso tenha alguma dúvida, entre em contato conosco através do telefone


(informar o número) ou do e-mail (informar o e-mail).

Atenciosamente,

(Informar o nome da empresa)

3.2. Solução de classificação de e-mails

3.2.1. Fluxo “As Is”


A solução da equipe FADO consiste na construção de um algoritmo, construído em linguagem
Python, que possibilita a leitura e tratamento de e-mails. Foi utilizado o fluxo “As is”, que utiliza
infraestrutura de cloud e o algoritmo desenvolvido baseado em NLP, usando a técnica de
Process Mining. Os comandos que possibilitam seu bom funcionamento são a tokenização
(regula o texto, separa palavras, números ou pontuação), lematização (reduz uma palavra à sua
forma base e agrupa diferentes formas da mesma palavra, por exemplo, verbos no tempo
passado são alterados para presente), tageamento, remoção de “Stop Words” (separa palavras
irrelevantes na pesquisa, como artigos e preposições), remoção da pontuação e classificação
estatística (frequência ou contagem de palavras). Após este tratamento, a descoberta e a
classificação dos processos se baseiam em:
 Process_id - Sender, Recipients;
 Subject - Body, Process;
 TimeStamp - Subject Tags, Body Tags, Recomendação - Ações, Boleta Retroativa, Novo
Fechamento, Classification e Correct.
Por fim, os resultados foram armazenados em um banco de dados orientado a grafo, que indica
as interações das pessoas relacionadas no e-mail.

O algoritmo usado na solução proposta pelo grupo FADO fornece classes básicas para
representar dados relevantes para o processamento da linguagem natural. No gráfico a seguir,
apresentamos os detalhes deste algoritmo:

Figura 2: Diagrama do algoritmo da solução FADO

Executamos o algoritmo localmente com os dados criados pelo GPT-3. A tabela abaixo resume
os testes realizados utilizando diversos volumes de dados.

Teste 1 Teste 2 Teste 3 Teste 4


Nº e-mails 30 40 60 100
Precisão (%) 96.7 92.5 88.3 80.0
Tempo de execução 00:00:40 00:01:50 00:05:29 00:25:58
(h:m:s)

Nota-se que a precisão deste código reduz consideravelmente, e o tempo de execução


aumenta exponencialmente com o número de e-mails.
3.2.2. Fluxo “To be”

Iniciamos o fluxo “To be” iniciando com um estudo aprofundado da solução FADO, entendendo
seu fluxo, e a partir dele criamos uma versão avançada, utilizando a técnica de lematização para
remoção de caracteres especiais, e como melhoria foram incluídos no algoritmo a técnica de
vetorização para converter dados do tipo texto para dados numéricos, e também a técnica de
regressão Naiva Bayes, algoritmo ML mais adequado para grandes volumes de dados.

Figura 3: Diagrama do algoritmo da solução FADO após melhorias

3.2.2.1. Etapa do processo


Realizamos em 4 etapas a execução da melhoria (fluxo “to be”) até chegarmos no resultado
final:

1º ETAPA – Análise exploratória do treinamento


Iniciamos com um total de 1.500 e-mails criados usando GPT 3. Dividimos aleatoriamente esses
dados, onde 1.000 e-mails foram utilizados para treinamento do algoritmo, e os outros 500 e-
mails para testar a precisão final de nossa solução. Foram enviadas 11 palavras chaves,
consideramos cada palavra-chave como uma classe para o agrupamento dos e-mails.
No gráfico a seguir, apresentamos o resultado da distribuição dos 1.000 e-mails selecionados
para treinamento e suas respectivas classes.

Figura 3: Distribuição das classes (palavras chaves).

Podemos concluir que o conjunto de dados não está balanceado, precisaremos aplicar
técnicas de balanceamento de dados como SMOTE, um método de reamostragem bem
conhecido para superamostras, gerando instâncias de classe minoritária sintética (Nitesh et
al. 2022). Na primeira etapa de nosso trabalho, devido à restrição de tempo, não aplicamos
nenhuma técnica de balanceamento de dados. No entanto, planejamos aplicá-lo na próxima
etapa deste projeto.

2º ETAPA - Pré-processamento de texto


Nessa etapa realizamos o pré-processamento do nosso conjunto de dados, removendo
pontuação e caracteres especiais, limpando testos e removendo stop words, aplicando a
lematização.

Abaixo listamos alguns dos processos comuns de limpeza de texto:

 Remoção de pontuações, caracteres especiais, URLs e hashtags;


 Remoção de espaços/tabs extras;
 Correção de erros de digitação e abreviaturas;
 Remoção de stop words: Podemos remover uma lista de palavras de parada genéricas
do vocabulário em português usando NLTK (Natural Language Toolkit). Algumas dessas
palavras são 'eu', 'você', 'a', 'o', 'ele', 'qual' etc.

3º ETAPA – Vetorização
Para trabalhar com Machine Learning é preciso converter dados do tipo texto em dados
numéricos bem definidos, essa conversão é chamada de vetorização ou no mundo NLP Bag-
of-words (BoW) e Word Embedding (Word2Vec). Aplicamos a biblioteca Sklearn para esta
parte da solução.

4º ETAPA – Classificação usando ML


Usamos dois algoritmos de classificação de ML, Regressão logística (Dalpiaz et al. 2021) e a
Regressão Naive Bayes (Piryonesi and El-Diraby 2020). Dividimos o conjunto de dados em
duas partes: treinamento e validação. A Regressão logística gerou uma precisão de 98%,
enquanto a Regressão Naive Bayes gerou a precisão de 94%. Mesmo com precisão menor de
94%, a Regressão Naive Bayes é a mais adequada para alto volume de dados, pois considera
cada recurso independentemente, calcula a probabilidade de cada categoria e prevê a com a
maior probabilidade. Esse classificador probabilístico faz o uso do Teorema de Bayes, uma
regra que usa probabilidade para fazer previsões baseadas no conhecimento prévio de
condições que possam estar relacionadas.

Para mais detalhes sobre as etapas técnicas de nossa solução, indicamos ao leitor diversos
Tutoriais de PNL para Classificação de Texto em Python disponíveis na internet, os links nas
referências.
3.2.2.2. Resultado Final
Como resultado final, utilizamos nossa solução para classificar 500 e-mails criados pelo GPT-3.
Nossa solução atinge uma precisão final de cerca de 99%, com um tempo de execução cerca
de 20 segundos.

Figura 4: Resultado final da melhoria do algoritmo FADO

Para melhorar nossos resultados usando maiores volumes de dados, podemos criar um
processo para adicionar a classificação errada detectada aos dados de treinamento, desta
forma, quando o código for executado novamente, nosso algoritmo aprenderá com os dados,
e a classificação correta de e-mails semelhantes.

3.3. Arquitetura Big Data


A Send.knowledge nos deu autonomia para escolha da nuvem para implementação da Big
data, dessa forma escolhemos umas das três maiores nuvens do mercado para comparar o
melhor custo-benefício, essas foram Azure da Microsoft, GCP da Google e AWS da Amazon.
Através de diversas pesquisas, reuniões internas e com mentores, e alinhamento com a
Send.Knowledge escolhemos a AZURE da Microsoft.

Optamos por essa nuvem por vários motivos, mas os principais foram os listados abaixo:
 Solução FADO estava hospedada em nuvem Microsoft;
 A ferramenta Databricks utilizada nas maiores nuvens do mercado é da Microsoft,
sendo assim o custo é menos;
 Ao comparar orçamento geral entre as nuvens, a Azure foi a de menor custo.

3.3.1. Arquitetura GCP e AWS


Antes de decidirmos qual nuvem iriamos implantar a solução BIG DATA, tivemos que construir
a arquitetura da GCP e AWS para comparar.

GCP da Google

Figura 5: Arquitetura GCP


AWS da Amazon

Figura 6: Arquitetura AWS

3.3.2. Arquitetura Azure


Inicialmente iriamos utilizar uma conta free da Azure, aonde é fornecido um crédito de $ 100
dólares, instalamos o Data Factore, Data Lake e Data Bricks nesse ambiente, portando esse
tipo de conta tem a permissão para criar cluster para rodarmos o código FADO no Data Bricks.

Após o encerramento da startup Send.Knowledge, o Instituto D’vinci assumiu o desafio, e irá


nos disponibilizar um diretório na Azure para finalizamos o projeto.
Azure da Microsoft

Figura 7: Arquitetura Azure

4. Comentários e sugestões

Devido o encerramento da Send.knowledge e não disponibilização do ambiente Azure não


temos evidências do resultado final da Cloud para apresentação desse sumario executivo.
5. Referências

 Nitesh V. Chawla, Kevin W. Bowyer, Lawrence O. Hall, and W. Philip Kegelmeyer. Smote: Synthetic
minority over-sampling technique. J. Artif. Int. Res., 16(1):321–357, June 2002
 Dalpiaz, et al.: Applied Statistics with R, STAT 420. University of Illinois at Urbana-Champaign,
(2021) https://daviddalpiaz.github.io/appliedstats/
 Piryonesi, S.M., El-Diraby, T.: Data analytics in asset management: Cost-effective prediction of
the pavement condition. J. Infrastruct. Syst. (2020). https://doi.org/10.1061/(ASCE)IS.1943-
555X.0000512

 https://stackabuse.com/text-classification-with-python-and-scikit-learn/
 https://towardsdatascience.com/machine-learning-nlp-text-classification-using-scikit-learn-
python-and-nltk-c52b92a7c73a
 https://github.com/kk7nc/Text_Classification

 Lei Geral de Proteção de Dados Pessoais (LGPD), Ministério da cidadania. Disponível em:
https://www.gov.br/cidadania/pt-br/acesso-a-informacao/lgpd. Acesso em dia 14 de ago. de
2022.

 Géron A., Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. O’Reilly Media,
2019, 1109
 Fredigo Hack, A. Text Mining. 2013 – Universidade Federal de Santa Catarina
 Manual do Aplicativo Iramuteq. Maria Elisabeth Salviati. 2017

Você também pode gostar