Detección de texto usando Python

El lenguaje Python se usa ampliamente para el aprendizaje automático moderno y el análisis de datos. Uno puede detectar una imagen, un discurso, incluso puede detectar un objeto a través de Python. Por ahora, detectaremos si el texto del usuario da una sensación positiva o negativa clasificando el texto como positivo, negativo o neutral. En el código, se utilizan el análisis de sentimientos de Vader y Tkinter . Tkinter es una biblioteca GUI estándar para crear la aplicación GUI.

Instalaciones Requeridas en Anaconda: 

  • tkinter: este módulo se utiliza para crear una aplicación GUI simple. Este módulo generalmente viene preinstalado con Python, pero para instalarlo externamente, escriba el siguiente comando en la terminal. 
    Usando el comando conda.
conda install -c anaconda tk

Los usuarios de Linux también pueden usar el siguiente comando. 

sudo apt-get install python3-tk
  • nltk: este módulo se utiliza para hacer que las computadoras entiendan el lenguaje natural. Para instalarlo, escriba el siguiente comando en la terminal.
    Usando conda.
conda install -c anaconda nltk

Usando pipa. 

pip install nltk
  • numpy: este módulo es el paquete fundamental para la computación científica con Python. Para instalarlo, escriba el siguiente comando en la terminal.
    Usando conda.
conda install -c conda-forge numpy

Usando pipa. 

pip install numpy
  • pandas: este módulo se utiliza para el análisis de datos. Proporciona un rendimiento altamente optimizado con código fuente back-end escrito exclusivamente en C o Python. Para instalarlo, escriba el siguiente comando en la terminal.
    usando conda
conda install -c anaconda pandas

Usando pipa. 

pip install pandas
  • matplotlib: este módulo es una increíble biblioteca de visualización en Python para gráficos 2D de arrays. Matplotlib es una biblioteca de visualización de datos multiplataforma construida sobre arrays NumPy. Para instalarlo, escriba el siguiente comando en la terminal.
    Usando conda.
conda install -c conda-forge matplotlib

Usando pipa. 

pip install matplotlib

Análisis de sentimiento VADER

VADER (Valence Aware Dictionary and sEntiment Reasoner) es una herramienta de análisis de sentimientos basada en reglas y léxico que está específicamente en sintonía con los sentimientos expresados ​​en las redes sociales. VADER usa una combinación de Un léxico de sentimientos es una lista de características léxicas (por ejemplo, palabras) que generalmente se etiquetan según su orientación semántica como positivas o negativas. VADER no solo informa sobre el puntaje de positividad y negatividad, sino que también nos informa sobre qué tan positivo o negativo es un sentimiento.

Nota: Para obtener más información, consulte Python | Análisis de Sentimiento usando VADER .

A continuación se muestra la implementación.

Python3

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():
     
    # Main function in program
    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):
         
        #calculated comments in vader analysis
        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:
             
            # print(sentence)
            ss = sid.polarity_scores(sentence)
             
            if ss['compound'] >= 0.05 :
                self.normalLabel.configure(text =
                                           " you typed positive 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):
        # Create main window
        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)
  
        # addition item on window
        self.label1 = Label(text = "type a text here :")
        self.label1.pack()
  
        # Add a hidden button Enter
        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()
         
# Driver code
myanalysis = analysis_text()
mainloop()

Producción:

text-detection-positivetext-detection-negative

Publicación traducida automáticamente

Artículo escrito por newsgebrehiwot2 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *