Divertir-se com o seu Twitter usando Python!

Akshay Balakrishnan Blocked Desbloquear Seguir Seguindo 4 de janeiro

Eu peguei sua atenção com esse título de clickbaity?

Espero que sim, de qualquer maneira.

Hoje, vou mostrar algumas coisas aqui. Uma, a incrível capacidade de processar e derivar muitas informações do seu perfil no Twitter e como você pode usá-lo para melhorar ou aumentar sua presença online. Em segundo lugar, para mostrar algumas poderosas bibliotecas Python que podem ser usadas para fazer muitas coisas.

Então vamos apenas pular nele !

Por que o Twitter?

Recentemente eu estive em uma onda de tweets, porque é tempo de férias para mim e não tenho nada melhor para fazer. Então eu noto o Twitter, além de me deixar saber quantos likes e retweets eu recebo para cada tweet, me fale sobre algo chamado impressões e engajamentos .

Engajamentos: o número total de vezes que um usuário interagiu com os tweets que você enviou durante o período selecionado. As interações incluem retweets, respostas, segue, curtidas e cliques em links, cartões, hashtags, mídia incorporada, nome de usuário, foto de perfil ou expansão de tweet.

Impressões: o número de impressões em um tweet enviado no período selecionado. Uma impressão é o número de vezes que um tweet aparece para os usuários na linha do tempo ou nos resultados da pesquisa.

Ao contrário do Facebook (que oferece ótimas análises e informações para páginas do Facebook para serem justas), Instagram e outras mídias sociais, é mais fácil para mim obter um tesouro de dados do meu próprio perfil. Isso nem leva em conta a poderosa API do Twitter, que você pode utilizar para obter insights sobre os outros tweets!

Você pode perguntar, onde estão todos esses dados de que você fala?

O poderoso Twitter Analytics – como consegui meus dados!

Como aqueles que tentaram usar tweets para fins como análise de sentimentos e todos sabem, os tweets são uma fonte realmente útil de dados para realizar a manipulação e extrair informações. O mais óbvio, como mencionei antes, é a análise de sentimento – tentando determinar se um tweet é positivo por natureza, ou negativo, ou apenas neutro por natureza. É claro a partir do grande tráfego no site, a quantidade de pessoas que ativamente twitta diariamente, e o fato de que eles disponibilizam seus tweets em domínio público e podem ser puxados (você pode realmente tornar seu perfil privado, mas muito poucos fazem) que permitem que as pessoas usem esses tweets para entender muitas coisas. Ao utilizar a API do Twitter, você pode fazer consultas como extrair todos os tweets sobre um determinado tópico dentro de um período ou puxar os tweets não retweetados de um determinado usuário.

Há muitas maneiras de obter os tweets nessa fase de extração de dados . Você pode utilizar os tweets presentes na biblioteca NLTK . Você também pode usar a API do Twitter para extrair tweets, mas quero tornar essa fase menos trabalhosa. Então eu decidi apenas analisar meus próprios tweets, que eu posso extrair muito rapidamente porque o Twitter é muito legal para nós.

Então, primeiro vamos ver onde o Twitter armazenou essa informação para você!

Primeiro, vá para a seção Analytics no menu, conforme mostrado:

Ele redireciona você para uma página especial que mostra muitas informações já. Logo de cima, fornece o que você tem feito nos últimos 28 dias e como sua atividade é comparada com os 28 dias anteriores ao período de tempo atual levados em consideração:

Como você pode ver, eles também fornecem informações para cada mês e seus principais tweets, principais menções e um resumo das informações do mês.

Você também pode verificar como seus tweets se saíram, bem como gráficos de como seus tweets estão indo:

Agora, como extraímos informações disso de uma forma que podemos processá-lo usando suas ferramentas usuais do Python? Felizmente o Twitter tem essa coisa chamada 'dados de exportação', que convenientemente empacota todos esses dados em um arquivo CSV bacana e os distribui para o seu computador, onde você está livre para abrir a caixa e fazer o que quiser! Clique no botão Exportar dados que você vê lá, ele levará todos os tweets durante o período de tempo que você deseja analisar e enviará para você como um arquivo CSV.

Agora vai chegar de tal maneira:

Observe que há muitos parâmetros ou colunas que não são visíveis aqui, como no de likes, retweets, taxa de engajamento e assim por diante. Mas o ponto é que, para muitas atividades, obter um bom conjunto de dados é um desafio, mas o Twitter nos deu esses dados organizados e organizados para usarmos. Então adere ao Twitter nessa frente!

Vamos trazer o Python para isso!

Eu estaria mentindo se eu dissesse se sou algum tipo de especialista 🙁 spoiler, eu não sou! ). Mas vou apenas fazer algumas coisas aqui, o que mostra que qualquer um pode realmente fazer algo com os tweets que temos no meu perfil (tente também com o seu próprio perfil, mas tenha certeza que você tem tweets suficientes para analisar!). Uma coisa é que só vou ver o tipo de tweets que estou enviando, sejam eles positivos, negativos ou neutros usando uma biblioteca Python chamada textblob . A outra coisa que vou fazer é ver quais palavras eu uso com muita frequência e são proeminentes nos meus tweets. Para adicionar um pouco de diversão para o mesmo, eu posso representar visualmente os resultados de uma forma legal usando algo chamado 'nuvem de palavras'. Você verá no final porque estou entusiasmado com isso. Então vamos começar!

Pré-requisitos:

Eu usei o Spyder (Anaconda) para escrever meus scripts aqui, mas você sempre pode usar o próprio shell Python ou escrever o código e executar o arquivo (estou usando o Python3 em todos os exemplos aqui, porque não).

Você também precisará de algumas bibliotecas para começar (não se importe com as definições, elas são principalmente apontadores baseados em documentação:

uma. textblob: TextBlob é uma biblioteca Python (2 e 3) para processamento de dados textuais. Ele fornece uma API simples para mergulhar em tarefas comuns de processamento de linguagem natural (NLP), como marcação de parte da fala, extração de frase de substantivo, análise de sentimento, classificação, tradução e muito mais.

b. matplotlib: Matplotlib é uma biblioteca de plotagem 2D em Python que produz números de qualidade de publicação em uma variedade de formatos impressos e ambientes interativos entre plataformas. O Matplotlib pode ser usado em scripts Python, nos shells do Python e do IPython , no notebook Jupyter , nos servidores de aplicativos da Web e em quatro kits de ferramentas de interface gráfica do usuário.

c. pandas: pandas é uma biblioteca open source, licenciada pela BSD, que fornece estruturas de dados de alto desempenho e fáceis de usar e ferramentas de análise de dados para a linguagem de programação Python .

d. wordcloud: Como o nome sugere, você pode criar uma nuvem de nomes, com as palavras mais usadas sendo destacadas mais.

Para usuários do Ubuntu, você pode usar o pip ou o pip3 para instalar todos esses pacotes do Python, o que eu fiz: (nome-do-pacote substituído pelo pacote relevante)

 pip install nome do pacote 

Tempo de Análise do Sentimento!

Não é mais tão difícil configurar seu próprio programa para fazer isso! Com os tweets sendo organizados ordenadamente, tudo que eu tive que mudar do arquivo original foi alterar a coluna na seção Tweets para adicionar um sublinhado entre as duas palavras (Tweet_text) para evitar erros no espaço do programa.

Importe as bibliotecas necessárias:

 importar pandas como pd 
da importação do wordcloud WordCloud, STOPWORDS
import matplotlib.pyplot como plt

Agora, importe o arquivo que você precisa, que deve estar na mesma pasta que o arquivo Python no qual você está escrevendo, usando a função read_csv fornecida pelos pandas para lê-lo em uma variável chamada df. Você pode usar esquemas de codificação diferentes.

 df = pd.read_csv (r "tweet_activity_metrics_TheCoolFanBoi_20181208_20190105_en.csv", encoding = "latin-1") 
 comment_words = ' ' #We will be appending the words to this var 
 stopwords = set(STOPWORDS) #Finds all stop words in the set of tweets. 
 for val in df.Tweet_text: 
  val = str(val) #convert all tweet content into strings 
  tokens = val.split() #Split all strings into individual components 
  for i in range(len(tokens)): 
  tokens[i] = tokens[i].lower() #Converts all the individual strings to lower case. 
 for words in tokens: 
  comment_words = comment_words + words + ' ' 

Finalmente, é aqui que entra a parte do WordCloud:

 wordcloud = WordCloud (largura = 1000, altura = 1000, background_color = 'azul', stopwords = stopwords, min_font_size = 10) .generate (comment_words) 
# Tudo isso é uma única linha

Sinta-se livre para explorar todos os parâmetros da função WordCloud e ajustá-la conforme o seu desejo.

Finalmente, vamos exibir isso como saída, usando a biblioteca matplotlib:

 plt.figure (figsize = (10,10), facecolor = nenhum) 
plt.imshow (wordcloud)
plt.axis ("off")
plt.tight_layout (pad = 0)
 plt.show () 

Isto é o que eu obtive quando salvei este arquivo e o executei no Python:

Evidentemente, não a melhor cor de fundo, mas você pode ver muitas palavras destacadas com fontes diferentes. Sinta-se livre para analisar minha personalidade a partir das palavras que eu uso nos meus tweets. Embora eu diga apenas palavras como 'joelvzach', 'picklehari', 'pallavibiriyani' e 'guyandtheworld' são todas as alças do Twitter 🙂

Jogando com análise de sentimentos

Eu não vou levar muito tempo aqui, porque eu sou um noob neste apenas como vocês. Mas não é tão difícil de começar, novamente devido ao grande trabalho feito pelos programadores no desenvolvimento de bibliotecas eficientes que tornaram mais fácil começar com isso.

Tudo o que você precisa fazer é isto:

 importar pandas como pd 
da importação de textblob TextBlob
df = pd.read_csv (r "tweet_activity_metrics_TheCoolFanBoi_20181208_20190105_en.csv", encoding = "latin-1")
 # comment_words = '' 
# stopwords = set (STOPWORDS)
print ('Tweet | Polaridade | Subjetividade')
para val em df.Tweet_text:
sentimentos = TextBlob (val)
impressão('---------------')
print (val, end = '')
print ('', end = '')
print (sentiments.polarity, end = '')
print ('|', end = '')
print (sentiments.subjectivity)

E você obtém essa saída:

Então, esses são os tweets que tenho, bem como a classificação dos meus tweets de -1 (mais negativos) a 1 (mais positivos) em relação ao meu sentimento. Também mostra como minhas afirmações são subjetivas de uma escala de 0 a 1.

Você deve estar pensando e sentado aqui, Processamento de Linguagem Natural? Pfft. Eu poderia fazer isso.

Mas aqui está a pegadinha: nós apenas brincamos com isso de uma maneira abstrata e de alto nível. Consideramos como calculamos o sentimento ou a subjetividade de um tweet? Qual algoritmo usamos para passar pelo texto? E assim por diante.

Esta é a maravilha da biblioteca textblob. Se você quiser aprofundar isso, não estou adicionando isso ao artigo, mas verifique este artigo como parte da documentação do textblob que nos informa como a função funciona e como ela utiliza o algoritmo Naive-Bayes para análise de sentimento.

Isso conclui o meu breve artigo fornecendo uma prévia do que eu tenho feito ultimamente (não é bom, como está claro). Confira meu Twitter (já que mostrei muito) e me pegue lá enquanto continuo twittando, porque não, certo? Código aqui.

Também graças à documentação de todas as bibliotecas usadas, bem como ao GeeksForGeeks por me fornecer um bom material para fazer este artigo acontecer.

Obrigado por ler isso até o fim!