A análise de sentimentos é surpreendentemente precisa e você pode criar este aplicativo Tkinter simples para experimentá-lo.
A análise de sentimento é uma técnica para determinar o tom emocional de um texto. Ele usa processamento de linguagem natural, análise de texto e linguística computacional. Usando isso, você pode classificar o tom em positivo, neutro ou negativo. Isso ajuda as empresas a analisar o feedback dos clientes nas mídias sociais, avaliações e pesquisas.
Com base nesses dados, eles podem criar estratégias para seus produtos e campanhas com mais eficiência. Saiba como você pode criar um aplicativo que detecta sentimentos usando Python.
O módulo Tkinter e vaderSentiment
Tkinter permite que você crie aplicativos de desktop. Ele oferece uma variedade de widgets como botões, rótulos e caixas de texto que facilitam o desenvolvimento de aplicativos. Você pode usar o Tkinter para construir um aplicativo de dicionário em Python ou para crie seu próprio aplicativo de notícias que atualiza histórias por meio de uma API.
Para instalar o Tkinter, abra um terminal e execute:
pip instalar tkinter
VADER (Valence Aware Dictionary and sEntiment Reasoner) é uma ferramenta de análise de sentimento baseada em regras e léxico. É pré-construído e amplamente utilizado em Processamento de linguagem natural. O algoritmo tem um conjunto de palavras predefinidas que representam diferentes sentimentos. Com base nas palavras encontradas na frase, esse algoritmo fornece uma pontuação de polaridade. Usando essa pontuação, você pode identificar se a frase é positiva, negativa ou neutra.
Para instalar o pacote vaderSentiment em Python, execute este comando de terminal:
pip install vaderSentiment
Como detectar sentimentos usando Python
Você pode encontrar o código-fonte deste programa de amostra em seu Repositório GitHub.
Comece importando os módulos VADER e tkinter necessários:
de vaderSentiment.vaderSentiment importar SentimentIntensity Analyzer
de tkinter importar *
Em seguida, defina uma função, limpar tudo(). Sua finalidade é limpar os campos de entrada, o que você pode fazer usando o excluir() método a partir de um índice inicial de 0 ao índice final, FIM.
deflimpar tudo():
camponegativo.delete(0, FIM)
neutralField.delete(0, FIM)
campopositivo.delete(0, FIM)
globalField.delete(0, FIM)
textArea.delete(1.0, FIM)
Defina uma função, detect_sentiment(). Use o método get para buscar a palavra digitada no textArea widget e crie um objeto de SentimentIntensity Analyzer aula. Use o polarity_scores no texto que você buscou e aplique o algoritmo de análise de sentimento VADER.
defdetectar_sentiment():
frase = textArea.get("1.0", "fim")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (frase)
Extraia a pontuação de sentimento negativo ('neg') e convertê-lo em uma porcentagem. Insira o valor obtido no camponegativo partindo da posição 10. Repita o mesmo processo para a pontuação de sentimento neutro ('neu') e a pontuação de sentimento positivo ('pos').
string = str (sentiment_dict['neg'] * 100)
camponegativo.insert(10, corda)string = str (sentiment_dict['neu'] * 100)
neutralField.insert(10, corda)
string = str (sentiment_dict['pos'] * 100)
campopositivo.insert(10, corda)
Extraia o valor da chave composta que contém o sentimento geral da frase. Se o valor for maior ou igual a 0,05, a sentença é positiva. Se o valor for menor ou igual a -0,05, a sentença é negativa. Para valores entre -0,05 e 0,05, é uma afirmação neutra.
se sentiment_dict['composto'] >= 0.05:
string = "Positivo"
elif sentiment_dict['composto'] <= - 0.05:
string = "Negativo"
outro:
string = "Neutro"
Insira o resultado no campo geral da 10ª posição:
globalField.insert(10, corda)
Inicialize uma janela de interface gráfica do usuário usando o Tkinter. Defina a cor de fundo, o título e as dimensões da janela. Crie cinco etiquetas. Um que pede ao usuário para inserir uma frase e os outros quatro para os diferentes sentimentos. Defina o elemento pai no qual deseja colocá-lo, o texto que deve ser exibido e os estilos de fonte que deve ter junto com a cor de fundo.
Defina um widget de Texto para receber a frase do usuário. Defina o elemento pai no qual deseja colocá-lo, sua altura, largura, estilos de fonte e a cor de fundo que ele deve possuir. Defina três botões. Um para realizar a análise de sentimento, um para limpar o conteúdo após o uso e outro para sair do aplicativo. Defina sua janela pai, o texto que deve exibir, sua cor de fundo, estilos de fonte e o comando que deseja executar quando clicado.
se __nome__ == "__principal__":
gui = Tk()
gui.config (background="#A020f0")
gui.título("Analisador de sentimentos VADER")
gui.geometria("400x700")
enterText = Rótulo (gui, text="Digite sua frase: ",fonte="arial 15 negrito",bg="#A020f0")
negativo = Rótulo (gui, text="Porcentagem negativa: ", fonte="arial 15",bg="#A020f0")
neutral = Label (gui, text="Porcentagem neutra: ", fonte="arial 15",bg="#A020f0")
positivo = Rótulo (gui, text="Porcentagem positiva: ", fonte="arial 15",bg="#A020f0")
geral = Rótulo (gui, texto ="A sentença geral é: ", fonte="arial 15",bg="#A020f0")
textArea = Texto (gui, altura =5, largura=25, fonte="arial 15", bg ="#cf9fff")
check = Button (gui, text="Verificar sentimento", bg ="#e7305b", fonte=("arial", 12, "audacioso"), comando=detectar_sentiment)
clear = Button (gui, text="Claro", bg ="#e7305b", fonte=("arial", 12, "audacioso"), comando=limparTudo)
Sair = Botão (gui, text="Saída", bg ="#e7305b", fonte=("arial", 12, "audacioso"), comando=sair)
Defina quatro campos de entrada para os diferentes sentimentos e defina sua janela pai e estilos de fonte.
camponegativo = Entrada (gui, fonte="arial 15")
neutralField = Entrada (gui, fonte="arial 15")
campopositivo = Entrada (gui, fonte="arial 15")
globalField = Entrada (gui, fonte="arial 15")
Use uma grade composta por 13 linhas e três colunas para o layout geral. Coloque os vários elementos, como rótulos, campos de entrada de texto e botões em várias linhas e colunas, conforme ilustrado. Adicione o preenchimento necessário sempre que necessário. Colocou o pegajoso opção para "C" para alinhar à esquerda os textos dentro de sua célula.
enterText.grid (linha=0, coluna=2, pady=15)
textArea.grid (linha=1, coluna=2, padx=60, pady=10, pegajoso=W)
check.grid (linha=2, coluna=2, pady=10)
negativa.grid (linha=3, coluna=2, pady=10)
neutral.grid (linha=5, coluna=2, pady=10)
Positive.grid (linha=7, coluna=2, pady=10)
global.grid (linha=9, coluna=2, pady=5)
camponegativo.grid (linha=4, coluna=2)
neutralField.grid (linha=6, coluna=2)
PositiveField.grid (linha=8, coluna=2)
globalField.grid (linha=10, coluna=2, pady=10)
clear.grid (linha=11, coluna=2, pady=10)
Exit.grid (linha=12, coluna=2, pady=10)
O circuito principal() A função diz ao Python para executar o loop de eventos Tkinter e escutar os eventos até que você feche a janela.
gui.mainloop()
Junte todo o código e você poderá usar o pequeno programa resultante para detectar sentimentos.
A saída da detecção de sentimentos usando Python
Ao executar este programa, a janela VADER Sentiment Analyzer é exibida. Quando testamos o programa em uma sentença positiva, ele a detectou com uma precisão de 79%. Ao tentar uma declaração neutra e negativa, o programa foi capaz de detectar com 100% e 64,3% de precisão, respectivamente.
Alternativas para análise de sentimento usando Python
Você pode usar o Textblob para análise de sentimento, marcação de fala e classificação de texto. Ele tem uma API consistente e um classificador de polaridade de sentimento integrado. NLTK é uma biblioteca NLP abrangente que contém uma ampla variedade de ferramentas para análise de texto, mas possui uma curva de aprendizado acentuada para iniciantes.
Uma das ferramentas mais populares é o IBM Watson NLU. É baseado em nuvem, oferece suporte a vários idiomas e possui recursos como reconhecimento de entidade e extração de chave. Com a introdução do GPT, você pode usar a API OpenAI e integrá-la aos seus aplicativos para obter opiniões precisas e confiáveis dos clientes em tempo real.