Prévia do material em texto
Links dos scripts utilizados: https://www.kaggle.com/code/testes1000/analise-de-sentimentos-com-pyspark-ml https://www.kaggle.com/code/testes1000/utiliza-o-do-modelo-pyspark-sentimentos https://www.kaggle.com/code/testes1000/analise-de-sentimentos-com-pyspark-ml https://www.kaggle.com/code/testes1000/utiliza-o-do-modelo-pyspark-sentimentos Na primeira etapa do projeto foi definido como objetivo identificar o sentimento dos clientes de uma empresa pelos tweets postados. Muitos empreendedores têm dúvidas sobre a eficácia do Twitter para as empresas, afinal, a rede apresentou queda no número de usuários desde o “boom” inicial. Mas o fato é que ainda vale a pena investir em uma estratégia no Twitter. Essa é uma rede excelente para divulgar os conteúdos que você produz (em blog ou canal de YouTube, por exemplo) para gerar tráfego no seu site. Também é útil para apostar no relacionamento com o consumidor, já que se trata de uma rede social com interações rápidas. O Twitter anunciou o balanço do quarto trimestre de 2018, fechando o período com 908 milhões de dólares de receita. De acordo com o relatório, o período também contou com 126 milhões de pessoas utilizando a rede diariamente contra 124 milhões em 2017. Em relação ao número de usuários, houve uma queda: foram 321 milhões no quatro trimestre de 2018 contra 330 milhões ao fim de 2017. No entanto, de acordo com as tendências do Twitter, a plataforma ainda é uma mídia interessante para as empresas. Segundo o Twitter, 74% das pessoas que seguem pequenas e médias empresas fazem isso para obter atualizações sobre produtos futuros. Já 47% dos usuários que seguem marcas estão propensas a visitarem os sites delas. Ou seja: independentemente da queda do número de usuários, o Twitter permanece como uma rede social relevante. A plataforma permite a comunicação direta com seus clientes, e por ser uma interação pública, a imagem da sua empresa será bem-vista. Assim, o Twitter torna mais fácil para os clientes chegarem às marcas e fornecerem seus comentários, ou pedirem ajuda. Portanto, a sua empresa pode utilizar essa oportunidade para coletar feedbacks que vão melhorar seus produtos, além de fornecer o suporte que seus clientes precisam. Um exemplo aqui é o Netflix, que criou uma conta no Twitter dedicada para fornecer suporte em vários idiomas. Dessa forma, a empresa também coleta feedbacks para promover uma melhor experiência do usuário, e repassar à equipe de pesquisa. Na segunda etapa foi feita a Seleção dos dados. O conjunto de dados utilizado será o Sentiment140 dataset with 1.6 million tweets ideal para análise de Big Data. Link: https://www.kaggle.com/datasets/kazanova/sentiment140 https://blog.contaazul.com/como-montar-uma-estrategia-de-venda-campea-para-pequenas-empresas https://blog.contaazul.com/empresa-pode-ganhar-dinheiro-no-youtube https://g1.globo.com/economia/tecnologia/noticia/2019/02/07/com-foco-em-manter-rede-livre-de-abusos-twitter-teve-primeiro-lucro-anual-em-2018.ghtml https://visual.ly/twitter-follower/ https://visual.ly/twitter-follower/ Contexto Este é o conjunto de dados sentiment140. Ele contém 1.600.000 tweets extraídos usando a API do Twitter. Os tweets foram anotados (0 = negativo, 4 = positivo) e podem ser usados para detectar sentimentos. Conteúdo Ele contém os seguintes 6 campos: alvo: a polaridade do tweet (0 = negativo, 2 = neutro, 4 = positivo) ids: O id do tweet (2087) data: a data do tweet (sábado, 16 de maio 23:58:44 UTC 2009) sinalizador: A consulta (lyx). Se não houver consulta, esse valor será NO_QUERY. usuário: o usuário que twittou (robotickilldozr) text: o texto do tweet (Lyx é legal) O framework utilizado será o apache spark através da biblioteca pyspark do python. O projeto foi desenvolvido na plataforma KAGGLE, uma das mais especializadas em Ciência de Dados. Por isso é indicado para experimentar os modelos e códigos testados, que seja criado uma conta gratuitamente na plataforma. Inicialmente é carregado todas as bibliotecas necessárias para o projeto: Em seguida é iniciada a sessão do Spark Agora carregamos os dados da fonte mencionada anteriormente e exibimos É necessário renomear as colunas para facilitar o entendimento dos dados Na terceira fase é realizado a limpeza dos dados entre várias etapas. Nesta fase é verificado se há valores nulos ou duplicados para exclusão: É detalhado um resumo estatístico do conjunto de dados Eliminamos colunas desnecessárias: Existem apenas dois valores distintos na coluna de destino. 0 para "Negativo" e 4 para "Positivo" de acordo com a descrição dos dados. Então foi alterado o valor Positivo de 4 para 1. Pré-processamento de texto Nesta parte do tratamento dos dados é removido palavras desnecessárias, pontuações, links e delimitadores nos textos. A função stopwords remove as “stop words” que são palavras que aparecem com frequência na maioria dos textos, e que não nos acrescentam informações. Visualizamos no gráfico o resultado até então dos sentimentos negativos e positivos mais recorrentes: Positivos: Negativos: Preparação dos dados para construção do modelo A tokenização é o tratamento que consiste em dividir uma frase em palavras ou tokens individuais. Percebemos que antes, os elementos estavam todos dentro da lista como uma única frase, agora, as palavras estão separadas por vírgulas como elementos individuais dentro da lista. CountVectorizer é usado para transformar um determinado texto em um vetor com base na frequência (contagem) de cada palavra que ocorre em todo o texto. Isso é útil quando temos vários desses textos e desejamos converter cada palavra em cada texto em vetores (para usar em análises de texto posteriores). TF-IDF é uma maneira de extrair recursos para qualquer dado textual. É calculado usando o termo frequência e frequência inversa do documento. onde N representa a frequência de uma palavra em um documento. A pontuação IDF nos diz o quão importante é uma determinada palavra em todo o corpus. Por exemplo, se uma palavra estiver aparecendo em cada documento, a pontuação do IDF será zero para isso. Nesta parte é selecionada as colunas e dividido os dados em treino e teste para o processamento posteriormente. Na quarta etapa é realizado a aplicação das técnicas de mineração, com dois algoritmos escolhidos: Regressão Logística e Naive Bayes. A regressão logística é um modelo estatístico usado para determinar a probabilidade de um evento acontecer. Ele mostra a relação entre os recursos e, em seguida, calcula a probabilidade de um determinado resultado. No caso o modelo foi salvo localmente para ser reutilizado em próximas execuções. Exibindo resultados assertivos: Atualmente, o algoritmo se tornou popular na área de Aprendizado de Máquina (Machine Learning) para categorizar textos baseado na frequência das palavras usadas, e assim pode ser usado para identificar se determinado e-mail é um SPAM ou sobre qual assunto se refere determinado texto, por exemplo. Por ser muito simples e rápido, possui um desempenho relativamente maior do que outros classificadores. Além disso, o Naive Bayes só precisa de um pequeno número de dados de teste para concluir classificações com uma boa precisão. A principal característica do algoritmo, e o motivo de receber “naive” (ingênuo) no nome, é que ele desconsidera completamente a correlação entre as variáveis (features). Ou seja, se determinada fruta é considerada uma “Maçã” se ela for “Vermelha”, “Redonda” e possui “aproximadamente 10cm de diâmetro”, o algoritmo não vai levar em consideração a correlação entre esses fatores, tratando cadaum de forma independente. No caso o modelo foi salvo localmente para ser reutilizado em próximas execuções. Na quinta etapa é realizado a validação dos resultados obtidos. Pela área da curva ROC que segue os parâmetros: • Um valor abaixo de 0,5 indica um modelo muito pobre. • Um valor de 0,5 significa que o modelo não é melhor do que prever um resultado do que uma chance aleatória. • Valores acima de 0,7 indicam um bom modelo. • Valores acima de 0,8 indicam um modelo forte. • Um valor de 1 significa que o modelo prevê perfeitamente os membros do grupo que experimentarão um determinado resultado e aqueles que não. É possível perceber que o modelo obteve um bom resultado. É detalhado sua boa acurácia e precisão, e em seguida é avaliado de maneira mais clara os acertos através da matriz de confusão onde é descrito os valores afirmados como verdadeiros e falsos e que realmente estavam corretos e o inverso. Os mesmos procedimentos foram repetidos para o algoritmo Naive Bayes. O resultado da curva ROC não foi tão satisfatório como no primeiro modelo assim como sua acurácia e precisão foram inferiores. Para facilitar ainda mais a visualização dos dados, utilizamos a biblioteca plotly para verificar a quantidade e porcentagem de resultados preditos pelo melhor modelo (Regressão Logística). Na próxima parte na implementação do modelo utilizaremos outro script para carregar dados quando necessário e fazer as predições com os algoritmos salvos anteriormente. *Nota: É necessário possuir uma conta com autenticação por telefone para ativar a internet e realizar o download das bibliotecas necessárias. É instalado as dependências necessárias, no caso a biblioteca pyspark. É carregado as bibliotecas e criada a sessão. Foi carregado uma base de dados de teste com um pedaço do dataframe utilizado para teste e treinamento dos modelos, mas também pode ser utilizado outras bases de dados com as mesmas semelhanças: uma coluna apenas de texto com tweets em inglês. Na sequência aplicamos as mesmas técnicas de limpeza descritas anteriormente, só que agora com os modelos salvos já treinados. Utilizamos agora o modelo de melhor precisão (Regressão Logística) para predizer os resultados para este conjunto de dados proposto. Em sequência plotamos os gráficos para visualizar os resultados obtidos: Juntando os resultados obtidos com os previamente carregados, salvamos os dados para utilização externa posteriormente. Esta planilha salva pode ser baixada facilmente. Na última etapa de utilização das informações, com os resultados obtidos é possível encaminhar, por exemplo, estas imagens de gráficos para os diretores da companhia, que assim, podem avaliar a qualidade das relações atuais e auxiliados pelo setor operacional, ou de marketing possam identificar possíveis estratégias que possam melhorar as opiniões dos clientes, buscando cada vez mais engajamento e retornos positivos da clientela. Diagrama do Modelo Seleção dos dados Carregamento Visualização Renomear Colunas Limpeza dos Dados Valores Ausentes Duplicatas Eliminar Colunas Ajustar Atributos Eliminar palavras Tokenizar Vetorizar texto Calcular IDF Dados para treino e teste Aplicação das técnicas de mineração Treinando o Modelo Regressão Logística Naive Bayes Avaliação dos resultados obtidos Regressão Logística Naive Bayes areaUnderROC Matriz de Confusão Plotando gráficos Regressão Logística areaUnderROC Utilização das informações Imagens Dataset Considerações Finais O projeto proposto foi de grande aprendizado na área de mineração de dados, sendo necessário diferentes recursos para estruturação dos dados em Big Data. O twitter apesar de um certo declínio de uso nos últimos anos ainda se prova como ferramenta útil para ser utilizada na exploração da opinião dos consumidores de uma empresa com um produto ou serviço. Passando por todas as etapas descritas, foram selecionados os dados ideais, fornecendo tratamento prévio e buscando o melhor modelo que se aproximasse da realidade. Depois de obtido os resultados com a visualização dos dados obtidos, é possível identificar um panorama das conexões com o público, buscando vários insights e estratégias que podem ser direcionadas a melhorar a qualidade da relação da empresa com os clientes acionando diferentes setores estratégicos que integrados, podem alavancar os retornos da companhia no longo prazo. REFERENCIAS https://hubify.com.br/social-media/twitter-para-empresas/ Citação: Go, A., Bhayani, R. e Huang, L., 2009. Classificação de sentimento do Twitter usando supervisão distante. Relatório do Projeto CS224N, Stanford, 1(2009), p.12. https://blog.contaazul.com/twitter-para-empresas https://acervolima.com/usando-countvectorizer-para-extrair-recursos-de- texto/#:~:text=CountVectorizer%20%C3%A9%20uma%20%C3%B3tima%20ferramenta,ocorre%20em%20tod o%20o%20texto. https://www.alura.com.br/artigos/spark-nlp-linguagem-natural-forma-otimizada https://towardsdatascience.com/tf-idf-calculation-using-map-reduce-algorithm-in-pyspark-e89b5758e64c) https://www.tibco.com/pt-br/reference-center/what-is-logistic-regression https://www.organicadigital.com/blog/algoritmo-de-classificacao-naive-bayes/ https://towardsdatascience.com/different-metrics-to-evaluate-binary-classification-models-and-some-strategies- to-choose-the-right-911ef72a107b