A linguagem Python é amplamente usada para machine learning moderno e análise de dados. Pode-se detectar uma imagem, fala, pode até detectar um objeto por meio do Python. Por enquanto, detectaremos se o texto do usuário dá um sentimento positivo ou negativo, classificando o texto como positivo, negativo ou neutro. No código, a análise de sentimento de Vader e o Tkinter são usados. Tkinter é uma biblioteca GUI padrão para criar o aplicativo GUI.

Instalações necessárias no Anaconda:

  • tkniter: Este módulo é usado para criar um aplicativo GUI simples. Este módulo geralmente vem pré-instalado com Python, mas para instalá-lo externamente digite o comando abaixo no terminal.

    Usando o comando conda.

    conda install -c anaconda tk

    Os usuários do Linux também podem usar o comando abaixo.

    sudo apt-get install python3-tk
  • nltk: Este módulo é usado para fazer com que os computadores entendam a linguagem natural. Para instalá-lo, digite o comando abaixo no terminal.

    Usando conda.



    conda install -c anaconda nltk

    Usando pip.

    pip install nltk
  • numpy: este módulo é o pacote fundamental para a computação científica com Python. Para instalá-lo, digite o comando abaixo no terminal.

    Usando conda.

    conda install -c conda-forge numpy

    Usando pip.

    pip install numpy
  • pandas: este módulo é usado para análise de dados. Ele fornece um desempenho altamente otimizado com o código-fonte de back-end totalmente escrito em C ou Python. Para instalá-lo, digite o comando abaixo no terminal.

    Usando conda

    conda install -c anaconda pandas

    Usando pip.

    pip instalar pandas
  • matplotlib: este módulo é uma biblioteca de visualização incrível em Python para gráficos 2D de matrizes. Matplotlib é uma biblioteca de visualização de dados multiplataforma construída em arrays NumPy. Para instalá-lo, digite o comando abaixo no terminal.

    Usando conda.

    conda install -c conda-forge matplotlib

    Usando pip.

    pip instalar matplotlib

Análise de sentimento VADER

VADER (Valence Aware Dictionary and SEntiment Reasoner) é uma ferramenta de análise de sentimento baseada em regras e léxico que é especificamente sintonizada com os sentimentos expressos nas redes sociais. VADER usa uma combinação de Um léxico de sentimento é uma lista de características lexicais (por exemplo, palavras) que geralmente são rotuladas de acordo com sua orientação semântica como positivas ou negativas. VADER não só fala sobre a pontuação de positividade e negatividade, mas também nos fala sobre o quão positivo ou negativo é um sentimento.



Observação: para obter mais informações, consulte Python | Análise de sentimento usando VADER .

Abaixo está a implementação.

import time 
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
from tkinter import *
import tkinter.messagebox 
from nltk.sentiment.vader import SentimentIntensityAnalyzer 
   
      
class analysis_text(): 
      
    
    def center(self, toplevel): 
        toplevel.update_idletasks() 
        w = toplevel.winfo_screenwidth() 
        h = toplevel.winfo_screenheight() 
        size = tuple(int(_) for _ in 
                     toplevel.geometry().split('+')[0].split('x')) 
        x = w/2 - size[0]/2
        y = h/2 - size[1]/2
        toplevel.geometry("%dx%d+%d+%d" % (size + (x, y))) 
   
    def callback(self): 
        if tkinter.messagebox.askokcancel("Quit", 
                                          "Do you want to leave?"): 
            self.main.destroy() 
   
    def setResult(self, type, res): 
        
        if (type == "neg"): 
            self.negativeLabel.configure(text = 
                                         "you typed negative comment : "
                                         + str(res) + " % \n"
        elif (type == "neu"): 
            self.neutralLabel.configure( text = 
                                        "you typed  comment : "
                                        + str(res) + " % \n") 
        elif (type == "pos"): 
            self.positiveLabel.configure(text  
                                        = "you typed positive comment: "
                                         + str(res) + " % \n") 
          
   
    def runAnalysis(self): 
        sentences = [] 
        sentences.append(self.line.get()) 
        sid = SentimentIntensityAnalyzer() 
        for sentence in sentences: 
                  ss = sid.polarity_scores(sentence) 
                if ss['compound'] >= 0.05 
                self.normalLabel.configure(text = 
                                           " you typed postive statement: "
       elif ss['compound'] <= - 0.05 
                self.normalLabel.configure(text = 
                                           " you typed negative statement"
       else 
             self.normalLabel.configure(text = 
                                        " you normal typed  statement: "
            for k in sorted(ss): 
                self.setResult(k, ss[k]) 
        print() 
          
   
    def editedText(self, event): 
        self.typedText.configure(text = self.line.get() + event.char) 
          
   
    def runByEnter(self, event): 
        self.runAnalysis() 
   
  
    def __init__(self): 
      self.main = Tk() 
        self.main.title("Text Detector system") 
        self.main.geometry("600x600") 
        self.main.resizable(width=FALSE, height=FALSE) 
        self.main.protocol("WM_DELETE_WINDOW", self.callback) 
        self.main.focus() 
        self.center(self.main) 
 
        self.label1 = Label(text = "type a text here :") 
        self.label1.pack() 
 
        self.line = Entry(self.main, width=70) 
        self.line.pack() 
 self.textLabel = Label(text = "\n", 
                               font=("Helvetica", 15)) 
        self.textLabel.pack() 
        self.typedText = Label(text = "",  
                               fg = "blue"
                               font=("Helvetica", 20)) 
        self.typedText.pack() 
 self.line.bind("<Key>",self.editedText) 
        self.line.bind("<Return>",self.runByEnter) 
   
 self.result = Label(text = "\n"
                            font=("Helvetica", 15)) 
        self.result.pack() 
        self.negativeLabel = Label(text = "",  
                                   fg = "red", 
                                   font=("Helvetica", 20)) 
        self.negativeLabel.pack() 
        self.neutralLabel  = Label(text = "", 
                                   font=("Helvetica", 20)) 
        self.neutralLabel.pack() 
        self.positiveLabel = Label(text = "", 
                                   fg = "green", 
                                   font=("Helvetica", 20)) 
        self.positiveLabel.pack() 
        self.normalLabel =Label (text ="", 
                                 fg ="red", 
                                 font=("Helvetica", 20)) 
        self.normalLabel.pack() 
          
myanalysis = analysis_text() 
mainloop() 

Resultado:

detecção de texto positiva

negativo de detecção de texto