Die Python-Sprache wird häufig für modernes machine learning und Datenanalyse verwendet. Man kann ein Bild erkennen, Sprache, kann sogar ein Objekt durch Python erkennen. Im Moment werden wir feststellen, ob der Text des Benutzers ein positives oder ein negatives Gefühl vermittelt, indem wir den Text als positiv, negativ oder neutral klassifizieren. Im Code werden Vader Sentiment Analysis und Tkinter verwendet. Tkinter ist eine Standard-GUI-Bibliothek zum Erstellen der GUI-Anwendung.

Erforderliche Installationen in Anaconda:

  • tkniter: Mit diesem Modul wird eine einfache GUI-Anwendung erstellt. Dieses Modul ist im Allgemeinen mit Python vorinstalliert. Um es extern zu installieren, geben Sie den folgenden Befehl in das Terminal ein.

    Mit dem Befehl conda.

    conda install -c anaconda tk
    

    Linux-Benutzer können auch den folgenden Befehl verwenden.

    sudo apt-get install python3-tk
    
  • nltk: Dieses Modul wird verwendet, damit Computer die natürliche Sprache verstehen. Um es zu installieren, geben Sie den folgenden Befehl in das Terminal ein.

    Mit conda.



    conda install -c anaconda nltk
    

    Mit pip.

    pip install nltk
    
  • numpy: Dieses Modul ist das grundlegende Paket für wissenschaftliches Rechnen mit Python. Um es zu installieren, geben Sie den folgenden Befehl in das Terminal ein.

    Mit conda.

    conda install -c conda-forge numpy
    

    Mit pip.

    pip install numpy
    
  • pandas: Dieses Modul wird zur Datenanalyse verwendet. Es bietet eine hochoptimierte Leistung, da der Back-End-Quellcode ausschließlich in C oder Python geschrieben ist. Um es zu installieren, geben Sie den folgenden Befehl in das Terminal ein.

    Mit conda

    conda install -c anaconda pandas
    

    Mit pip.

    Pip installieren Pandas
    
  • matplotlib: Dieses Modul ist eine erstaunliche Visualisierungsbibliothek in Python für 2D-Diagramme von Arrays. Matplotlib ist eine plattformübergreifende Datenvisualisierungsbibliothek, die auf NumPy-Arrays basiert. Um es zu installieren, geben Sie den folgenden Befehl in das Terminal ein.

    Mit conda.

    conda install -c conda-forge matplotlib
    

    Mit pip.

    pip install matplotlib
    

VADER-Stimmungsanalyse

VADER (Valence Aware Dictionary und sEntiment Reasoner) ist ein Lexikon und ein regelbasiertes Tool zur Stimmungsanalyse, das speziell auf die in sozialen Medien zum Ausdruck gebrachten Gefühle abgestimmt ist. VADER verwendet eine Kombination aus Ein Stimmungslexikon ist eine Liste von lexikalischen Merkmalen (z. B. Wörtern), die im Allgemeinen entsprechend ihrer semantischen Ausrichtung entweder als positiv oder negativ gekennzeichnet sind. VADER erzählt nicht nur über den Positivitäts- und Negativitätswert, sondern auch darüber, wie positiv oder negativ ein Gefühl ist.



Hinweis: Weitere Informationen finden Sie unter Python | Stimmungsanalyse mit VADER .

Unten ist die Implementierung.

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() 

Ausgabe:

Texterkennung positiv

Texterkennung-negativ