Texterkennung mit Python
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])
()
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: