Um aplicativo simples para análise de sentimento de postagens do Instagram.
Nesta postagem, abordaremos como construir um aplicativo simples de aprendizado de máquina para análise de sentimento. Nosso foco aqui é classificar os comentários de uma postagem específica do Instagram. Presumo que você tenha um conhecimento básico de programação em Python e nas bibliotecas Flask, scikit-learn e NLTK. Se você quiser pular para o código imediatamente, dê uma olhada no meu GitHub aqui.
1-Baixe os dados A escolha do banco de dados é uma tarefa crítica. As palavras presentes nas postagens do Instagram devem estar bem representadas no conjunto de dados que usamos para treinar nosso modelo. Infelizmente, não consegui encontrar um banco de dados contendo postagens do Instagram, então decidi usar um banco de dados baseado em postagens do Twitter, pois ambos são redes sociais.
Baixe os dados em Sentiment140 Details ou Google Drive e coloque-os dentro da pasta /data.
Detalhes do conjunto de dados ( Dataset)
- target: a polaridade do tweet (0 = negativo, 2 = neutro, 4 = positivo)
- ids: o id do tweet (2087)
- date: a data do tweet (sábado, 16 de maio, 23:58:44 UTC de 2009)
- flag : a consulta (lyx). Se não houver consulta, este valor é NO_QUERY.
- user: o usuário que tweetou (robotickilldozr)
- text: o texto do tweet (Lyx é legal)
2-Pré-processar / carregar os dados
Nosso conjunto de dados é baseado em postagens de tweeters, o que significa que veremos muitos emojis, apelidos de usuários e menções. A função preprocess_sentence contém funções básicas para remover blocos HTML, tags do usuário, links HTTP e converter emojis para seus nomes correspondentes.
Depois de finalizar nossa função de pré-processamento, podemos carregar os dados. Para isso, desenvolvi a função load_data que irá abrir os dados, atribuir os nomes das colunas correspondentes e reatribuir os rótulos corretos. A função load_train_test é uma função auxiliar que carrega os dados e os serializa.
Depois de finalizar nossa função de pré-processamento, podemos carregar os dados. Para isso, desenvolvi a função load_data que irá abrir os dados, atribuir os nomes das colunas correspondentes e reatribuir os rótulos corretos. A função load_train_test é uma função auxiliar que carrega os dados e os serializa.
3-Treinar o modelo
Queremos classificar os comentários presentes no Instagram em negativos ou positivos, ou seja, será uma classificação binária. Para esta tarefa, é possível escolher modelos complexos e modernos como LSTM com incorporação, mas para este tutorial, optei pelo classificador Naive Bayes com recursos TFIDF, porque é simples e não precisa de uma GPU poderosa para ser treinado.
Na recuperação de informações, tf – idf ou TFIDF, abreviação de frequência de frequência inversa de documento de termo(term frequency–inverse document frequency), é uma estatística numérica que se destina a refletir a importância de uma palavra para um documento em uma coleção ou corpus. Wikipédia.
A função fit_naivebayes obtém os recursos TFDF e se ajusta ao modelo usando partial_fit para treinar o classificador usando blocos de dados. Eu escolhi partial_fit em vez de usar a função fit para evitar problemas de memória.
4-Executando o servidor
O app.py contém todas as funções para construir a API e executar o servidor com base na estrutura Flask. Se você não está familiarizado com o frasco, sugiro que dê uma olhada neste tutorial. A função predict_sentiment_post usa o instaloader da biblioteca para baixar os comentários de uma única postagem. Posteriormente, precisamos aplicar o mesmo pré-processo usado em nossos dados de treinamento e, em seguida, retornar ao usuário o resultado que contém as informações sobre os comentários negativos e positivos. Armazenaremos essas informações em um dicionário denominado conteúdo e as passaremos para nossa página index.html, que exibirá todas as informações.
5-Solicitações diretas
Outra forma de usar nossa API é apenas fazer uma requisição POST. Para isso, podemos usar a biblioteca request. Primeiro, você precisa passar as informações necessárias para um dicionário. Neste caso, as variáveis são o short_code, representando o código de uma postagem do Instagram e os max_comments, representando o número máximo de comentários analisados. O servidor produzirá um dicionário que contém cada comentário com um rótulo associado indicando um sentimento negativo ou positivo.
6 – Conclusão
Neste post, você pode ver um pouco de PNL e análise de sentimento para a mídia social. Muitas melhorias podem ser feitas, como alterar o modelo para abordagens de aprendizado profundo ou apenas executar o hiper parâmetro do modelo Naive Bayes. Além disso, o TFIDF poderia ser melhorado apenas com o uso da metodologia n-gram. Finalmente, se você quiser fazer uma implantação real, dê uma olhada neste tutorial.
Referências
https://github.com/abhinavsagar/machine-learning-deployment
https://www.kaggle.com/mistryjimit26/twitter-sentiment-analysis-basic
https://www.kaggle.com/paoloripamonti/twitter-sentiment-analysis
https://en.wikipedia.org/wiki/Tf%E2%80%93idf