Neuronale Sprachverarbeitung (NLP): Textklassifizierung mit Python | von Nitali | Juli 2023

0
22


Dies ist eigentlich eine Komplettlösung für mein Miniprojekt in meinem NLP-Kurs.

Bitte hinterlassen Sie einen Applaus oder einen Kommentar, wenn Sie diesen Artikel nützlich fanden, er hilft mir sehr!

Der Zweck dieses Projekts besteht darin, einen Textklassifikator zu erstellen, um vorherzusagen, ob eine Eingabebewertung des Produkts positiv oder negativ ist.

Zu wissen, dass das Produkt optimistic oder adverse Bewertungen von Kunden erhält, ist wichtig für die geschäftliche Entscheidung, ob man das Produkt behält, darauf verzichtet oder es verbessert. Wenn es Millionen von Bewertungen zu einem Produkt gibt, können wir Menschen nicht sitzen bleiben und uns jede einzelne Bewertung ansehen, um eine Entscheidung zu treffen. Es ist wirklich zeitaufwändig. Hier kommt die Textklassifizierung ins Spiel und hilft dabei, schneller zu erkennen, ob die Bewertung positiv oder negativ ist, als wenn dies von Menschen vorgenommen würde.

Daher ist die Textklassifizierung in diesem Fall wirklich wichtig.

Dieses Projekt verwendet einen vorgegebenen Korpus an Produktbewertungen als Datensatz. Das Korpus besteht aus 2 Textdateien:

  • positive-reviews.txt enthält 22.936 Zeilen positiver Bewertungen (eine Zeile professional Ansicht) mit 2.006 positiven Wörtern (positive-words.txt) in einer separaten Datei
  • und negative-reviews.txt enthält 22.932 Zeilen negativer Bewertungen mit 4.783 negativen Wörtern (negative-words.txt) in einer separaten Datei.
Destructive Bewertungen
Constructive Bewertungen

Die oberen 80 % der Zeilen positiver und negativer Bewertungen werden als Trainingssatz verwendet, während der Relaxation als Testsatz verwendet wird.

Datei lesen
Zugtestaufteilung

Zunächst erfolgt eine Tokenisierung der Bewertungen. Anschließend werden aus jeder Bewertung 8 Merkmale extrahiert.

Diese Funktionen sind:

Anzahl positiver Wörter: ist wichtig, da es die insgesamt optimistic Stimmung im Textual content zum Ausdruck bringt.

Anzahl der negativen Wörter: ist wichtig, weil es auf das Vorhandensein einer negativen Stimmung hinweist.

Zählen Sie 1, wenn die Bewertung das Wort „Nein“ enthält, andernfalls 0: Das Wort „Nein“ leitet oft eine Verneinung ein, die das im Textual content zum Ausdruck gebrachte Gefühl umkehrt.

Anzahl der 1. und 2. Pronomen („ich“, „ich“, „mein“, „du“, „dein“): kann Einblicke in die persönliche Perspektive und das Engagement des Gutachters geben. Diese Pronomen können auf subjektive Erfahrungen und Emotionen hinweisen, die für die Stimmungsklassifizierung related sein können.

Zähle 1, wenn ‚!‘ ist in der Rezension zu finden oder 0 andernfalls: Das Vorhandensein eines Ausrufezeichens in einer Rezension weist häufig auf Aufregung, Betonung oder eine starke Stimmung hin. Durch die Einbeziehung dieser Funktion kann das Modell solche Fälle erfassen, in denen die Stimmung besonders positiv oder negativ sein kann.

Protokoll (Länge der Rezension): Die Verwendung des Logarithmus der Rezensionslänge hilft, die Funktion zu normalisieren und den Einfluss der Rezensionslänge auf die Stimmungsklassifizierung zu reduzieren. Längere Rezensionen haben möglicherweise nicht unbedingt eine höhere Stimmung, daher kann die Anwendung des Logarithmus dabei helfen, den Effekt der Rezensionslänge auszugleichen.

Uppercase_count: Großbuchstaben werden oft verwendet, um bestimmte Wörter hervorzuheben oder starke Emotionen auszudrücken. Durch die Erfassung der Anzahl der Wörter in Großbuchstaben kann das Modell möglicherweise Fälle identifizieren, in denen die Stimmung betont oder intensiviert wird, und so zur Stimmungsklassifizierung beitragen.

  • Stopword_count: Das Zählen der Anzahl der Stoppwörter in einer Rezension kann dabei helfen, die Bedeutung nicht informativer Wörter zu verstehen und möglicherweise zwischen sentimentalen Wörtern und gängigen Sprachkonstrukten zu unterscheiden. Das Vorhandensein einer höheren Anzahl von Stoppwörtern kann auf eine neutralere Stimmung hinweisen, während eine niedrigere Anzahl auf eine stärkere Stimmung in der Rezension hinweisen kann.
Dieser Code liest den Inhalt von zwei Textdateien und erstellt aus diesen Dateien Sätze positiver und negativer Wörter. Diese Sätze können dann zur weiteren Analyse oder Verarbeitung in einer textbasierten Anwendung verwendet werden.
Merkmalsextraktion

Die in diesem Projekt verwendeten Modelle sind

  • Neurales Netzwerk
  • Logistische Regression
  • Assist-Vektor-Maschine.

Neurales Netzwerk: Die Scikit-Be taught-Bibliothek wird mit Alpha = 0,1, der Größe der verborgenen Ebene (12, 12, 2) mit maximaler Iteration = 3000 und dem Löser „adam“ verwendet.

Logistische Regression: Ich verwende die Scikit-Be taught-Bibliothek, um zu trainieren und Vorhersagen zu treffen.

  • Assist-Vektor-Maschine: Genau wie bei der logistischen Regression wird die Scikit-Be taught-Bibliothek zum Trainieren und Treffen von Vorhersagen verwendet. Erwähnenswert ist auch, dass der Kernel linear verwendet wird.
Der Code erstellt ein Ziel-Label-Array (y_train) für eine binäre Klassifizierungsaufgabe. Es weist den Wert zu 1 zu den Proben in der train_positive Datensatz und der Wert 0 zu den Proben in der train_negative Datensatz. Das resultierende Array kann als Zielvariable für das Coaching eines maschinellen Lernmodells verwendet werden.
Neurales Netzwerk
Logistische Regression
Unterstützt Vektormaschine

Die verwendete Bewertungsmetrik ist die Genauigkeitsbewertung, um zu vergleichen, welches Modell die beste Leistung erbringt.

Bewerten Sie anhand des Genauigkeitswerts

Daraus lässt sich erkennen, dass alle drei Algorithmen eine ähnliche Genauigkeitsbewertung liefern. Allerdings schneidet das neuronale Netzwerk im Vergleich zu den beiden anderen Modellen mit einem Genauigkeitswert von 0,7511 für das neuronale Netzwerk, 0,7485 und 0,7469 für die Assist-Vektor-Maschine sowie der logistischen Regression am besten ab.

Darüber hinaus werden auch zwei verschiedene Eingabeüberprüfungen mithilfe des besten gefundenen Algorithmus vorhergesagt, nämlich eines neuronalen Netzwerks mit verborgener Schichtgröße (12, 12, 2).

Hier sind die Enter-Bewertungen:

– „Dieses Produkt hat meine Erwartungen übertroffen. Ich liebe es!“

– „Dieses Produkt übertrifft meine Erwartungen. Ich hasse es!“.

Das Ergebnis ergab, dass es richtig vorhergesagt hat, was ist positiv für die 1. Eingabebewertungen und Negativ für die 2. Enter-Bewertungen.

Das ist alles von mir. Vielen Dank, dass Sie sich die Zeit genommen haben, diesen Artikel zu lesen! 🙂

Wenn Sie Zweifel haben oder mehr über das Projekt besprechen und mehr darüber erfahren möchten, wenden Sie sich bitte an mich Hiergerne besprechen!



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here