Die Stimmungsanalyse ist eine beliebte Technik der Verarbeitung natürlicher Sprache (NLP), mit der die in einem bestimmten Textual content zum Ausdruck gebrachte Stimmung oder Meinung ermittelt wird. In diesem Blogbeitrag werden wir untersuchen, wie man mit der Programmiersprache Julia und dem Filmrezensionsdatensatz IMDb eine Stimmungsanalyse für Filmrezensionen durchführt.
Bevor wir uns mit dem Code befassen, stellen Sie sicher, dass Julia auf Ihrem System installiert ist. Sie können Julia von der offiziellen Web site herunterladen https://julialang.org/downloads/ und befolgen Sie die für Ihr Betriebssystem spezifischen Installationsanweisungen.
Um zu beginnen, müssen wir einige Pakete installieren, die für unsere Stimmungsanalyseaufgabe erforderlich sind. Öffnen Sie Julias interaktiven Modus oder starten Sie ein Julia-Skript in Ihrem bevorzugten Editor und geben Sie die folgenden Befehle ein:
utilizing Pkg
Pkg.add("TextAnalysis")
Pkg.add("MLJ")
Pkg.add("DataFrames")
Pkg.add("CSV")
Pkg.add("Random")
Pkg.add("StatsBase")
Diese Befehle installieren die erforderlichen Pakete, einschließlich TextAnalysis
zur Textvorverarbeitung, MLJ
für Modelle des maschinellen Lernens, DataFrames
Und CSV
zur Datenmanipulation und Random
Und StatsBase
für Randomisierung und statistische Funktionen.
Der IMDb-Filmrezensionsdatensatz enthält eine Sammlung von Filmrezensionen, die als positiv oder negativ gekennzeichnet sind. Wir werden diesen Datensatz verwenden, um unser Stimmungsanalysemodell zu trainieren. Laden Sie den Datensatz über den folgenden Hyperlink herunter: https://ai.stanford.edu/~amaas/data/sentiment/.
Nachdem Sie den Datensatz heruntergeladen haben, extrahieren Sie ihn in ein Verzeichnis Ihrer Wahl. Der extrahierte Ordner sollte zwei Unterordner enthalten: practice
Und take a look at
jeweils mit positiven und negativen Filmkritiken.
Um den Datensatz in Julia zu laden, können wir verwenden CSV
Paket. Angenommen, Sie haben den Datensatz in einen Ordner namens „imdb“ extrahiert, verwenden Sie den folgenden Codeausschnitt:
utilizing CSV
utilizing DataFramestrain_positive = CSV.File("imdb/practice/pos/").Knowledge
train_negative = CSV.File("imdb/practice/neg/").Knowledge
test_positive = CSV.File("imdb/take a look at/pos/").Knowledge
test_negative = CSV.File("imdb/take a look at/neg/").Knowledge
train_data = vcat(train_positive, train_negative)
test_data = vcat(test_positive, test_negative)
train_labels = vcat(ones(size(train_positive)), zeros(size(train_negative)))
test_labels = vcat(ones(size(test_positive)), zeros(size(test_negative)))
Im obigen Codeausschnitt laden wir die positiven und negativen Bewertungen aus den Trainings- und Testsätzen separat. Wir kombinieren sie dann zu train_data
Und test_data
bzw. Die Bewertungen werden mit 1 für positiv und 0 für negativ bewertet. train_labels
Und test_labels
Hinterlegen Sie die entsprechenden Beschriftungen für die Trainings- und Testsets.
Bevor wir unser Stimmungsanalysemodell trainieren können, müssen wir die Textdaten vorverarbeiten. Dabei wird der Rohtext in eine numerische Darstellung umgewandelt, die von maschinellen Lernalgorithmen verstanden werden kann. Wir werden das verwenden TextAnalysis
Paket zur Textvorverarbeitung.
utilizing TextAnalysispreprocess_text(textual content) = lowercase(strip(textual content))
train_data = [preprocess_text(review) for review in train_data]
test_data = [preprocess_text(review) for review in test_data]
Im obigen Codeausschnitt definieren wir a preprocess_text
Funktion, die den Textual content in Kleinbuchstaben umwandelt und führende/nachgestellte Leerzeichen entfernt. Anschließend wenden wir diese Funktion auf jede Überprüfung in den Trainings- und Testdatensätzen an.
Um die Textdaten numerisch darzustellen, können wir das Bag-of-Phrases-Modell verwenden. Dieses Modell stellt jede Rezension als Vektor dar, wobei jedes Factor der Anzahl eines bestimmten Wortes in der Rezension entspricht. Wir werden das verwenden TextAnalysis
Paket, um eine wortreiche Darstellung der Bewertungen zu erstellen.
bag_of_words_model = FreqVec(texttoken(StringDocument(train_data)))
train_features = textfeaturizer(bag_of_words_model, train_data)
test_features = textfeaturizer(bag_of_words_model, test_data)
Im obigen Codeausschnitt definieren wir a bag_of_words_model
Verwendung der FreqVec
Und texttoken
Funktionen. Wir verwenden dann textfeaturizer
um die Trainings- und Testdaten in die Bag-of-Phrases-Darstellung umzuwandeln.
Nachdem wir nun die Textdaten vorverarbeitet und Merkmale extrahiert haben, können wir mit der Erstellung unseres Stimmungsanalysemodells fortfahren. Wir werden ein einfaches logistisches Regressionsmodell aus dem verwenden MLJ
Paket.
utilizing MLJmannequin = @load LogisticRegressor pkg="MLJLinearModels"
sentiment_classifier = machine(mannequin, train_features, train_labels)
match!(sentiment_classifier)
Im obigen Codeausschnitt laden wir die LogisticRegressor
Modell mit der @load
Makro aus dem MLJ
Paket. Wir erstellen dann eine machine
mit dem Modell, den Trainingsfunktionen und den Beschriftungen. Abschließend trainieren wir das Modell mit match!
Funktion.
Um die Leistung unseres Stimmungsanalysemodells zu bewerten, können wir verschiedene Bewertungsmetriken wie Genauigkeit, Präzision, Rückruf und F1-Rating verwenden. Wir werden das verwenden MLJ
Paket zur Berechnung dieser Metriken.
utilizing Statisticspredictions = predict(sentiment_classifier, test_features)
accuracy = sum(predictions .== test_labels) / size(test_labels)
precision = precision(predictions, test_labels, positive_label=1)
recall = recall(predictions, test_labels, positive_label=1)
f1score = f1score(predictions, test_labels, positive_label=1)
println("Accuracy: ", accuracy)
println("Precision: ", precision)
println("Recall: ", recall)
println("F1-Rating: ", f1score)
Im obigen Codeausschnitt verwenden wir die predict
Funktion, um Vorhersagen zu den Testmerkmalen zu treffen. Anschließend berechnen wir die Genauigkeit, Präzision, den Rückruf und den F1-Rating mithilfe der von bereitgestellten Funktionen Statistics
Paket.
In diesem Blogbeitrag haben wir untersucht, wie man mithilfe der Programmiersprache Julia eine Stimmungsanalyse für IMDb-Filmrezensionen durchführt. Wir haben gelernt, wie man den Datensatz lädt, den Textual content vorverarbeitet, Options extrahiert, ein Stimmungsanalysemodell erstellt und seine Leistung bewertet. Wenn Sie die bereitgestellten Codeausschnitte und Erklärungen befolgen, sollten Sie nun ein gutes Verständnis dafür haben, wie Sie die Stimmungsanalyse in Julia implementieren.
Bleib dran für mehr!
Ich freue mich immer, mit meinen Followern und Lesern auf LinkedIn in Kontakt zu treten. Wenn Sie Fragen haben oder einfach nur Hallo sagen möchten, zögern Sie bitte nicht, uns zu kontaktieren.
https://www.linkedin.com/in/sharmasaravanan/
Viel Spaß beim Lernen!
Adios, ich gusta!! 🤗🤗