SnowNLP verwendet benutzerdefinierten Korpus für das Modelltraining (Stimmungsanalyse)

SnowNLP

SnowNLP ist eine leistungsstarke chinesische Textverarbeitungsbibliothek, die chinesische Wortsegmentierung, Wortart-Tagging, Stimmungsanalyse, Textklassifizierung, Schlüsselwort-/Abstract-Extraktion, TF/IDF, Textähnlichkeit und viele andere Funktionen wie Hidden-Markov-Modell, Algorithmen wie Naive Bayesian und TextRank haben entsprechende Anwendungen in dieser Bibliothek. Wenn Sie den Blog des Bloggers genau beobachtet haben, werden Sie feststellen, dass der Blogger die Funktion der Zusammenfassungsextraktion verwendet hat, um das SEO des Blogs zu verbessern, dh die zusammenfassenden Informationen in jedem Artikel durch die Technologie der Verarbeitung natürlicher Sprache (NLP) zu extrahieren. Da das von SnowNLP selbst verwendete Korpus aus den Kommentaren von E-Commerce-Websites besteht, wird das damit verbundene Modell bei verschiedenen Nutzungsszenarien unweigerlich als „inakzeptabel“ erscheinen Die beste Lösung ist die Verwendung eines benutzerdefinierten Korpus für das Modelltraining. Glücklicherweise ist all dies in SnowNLP sehr einfach zu implementieren, und wir müssen uns nicht mit diesen unvorhersehbaren Algorithmen vertiefen. Soweit der heutige Artikel Das Thema des Blogs, verwendet SnowNLP benutzerdefinierte Korpora für das Modelltraining.

Das Hauptprinzip von SnowNLP ist, dass der berechnete Stimmungswert die Wahrscheinlichkeit einer positiven Semantik darstellt. Je näher an 0, desto negativer der emotionale Ausdruck, und je näher an 1, desto positiver der emotionale Ausdruck.

Für den praktischen Fall von snownlp können Sie auf meinen vorherigen Artikel Datenanalyse-Fall – Sentimentanalyse zu Benutzerkommentaren eines bestimmten Schatzes verweisen

Schauen wir uns zunächst an, was das Ergebnis der direkten Verwendung von native snowlp ist, ohne das Modell neu zu trainieren

from snownlp import SnowNLP
print('"这首歌真难听"的情感得分是:',SnowNLP("这首歌真难听").sentiments
print(SnowNLP('"今天天气真好啊"的情感得分是:',"今天天气真好啊").sentiments)

 Aus den Ergebnissen können wir ersehen, dass der erste offensichtlich ein negativer Wert ist, und das Ergebnis ist tatsächlich 0,79, was offensichtlich inkonsistent ist. Die zweite ist die gleiche, es ist eine positive Emotion, und die Punktzahl ist nicht hoch. Wir müssen also unser eigenes Stimmungsanalysemodell trainieren, um die gewünschten Ergebnisse zu erzielen.

Trainingsmodell

Es gibt viele Methoden zum Trainieren von Stimmungsanalysemodellen, einschließlich wörterbuch-/regelbasiertem, maschinellem Lernen, snownlp. Dieses Mal werde ich das einfachste snownlp erklären, um das Modell zu trainieren.

Bereiten Sie zunächst die Negativ- und Positivtexte vor, neg.txt bzw. pos.txt.

Zum Beispiel meine neg.txt hier

pos.txt

 Beginnen Sie dann mit dem Training des Modells

# 训练
from snownlp import sentiment
sentiment.train('neg.txt', 'pos.txt')
sentiment.save("sentiment.marshal")

Nach dem Ausführen wird im selben Verzeichnis eine Datei sentiment.marshal.3 generiert.

Dann komm zu deinem snownlp-Pfad:

 Hier wird empfohlen, dass Sie die ursprüngliche Datei sentiment.marshal.3 sichern und dann die Datei sentiment.marshal.3 hier durch die Datei sentiment.marshal.3 ersetzen, die Sie gerade erhalten haben.

Als nächstes führen wir den obigen Testcode erneut aus, die Ergebnisse sind wie folgt:

 An diesem Punkt können wir deutlich sehen, dass sich bei Änderungen des Modells der Effekt erheblich ändert und sich die Genauigkeit des Modells verbessert.

Testmodell

Zuvor haben wir unser eigenes Korpus trainiert und das Modell erhalten. Dann verwenden wir die Testdaten, um die Genauigkeit des Modells zu testen. 

# 测试模型效果,导入测试数据
import pandas as pd
data_test = pd.read_excel("test.xlsx")
data_test.head()

Sentiment ist ein von Menschen gekennzeichnetes Sentiment-Label.

s = []
for c in data_test['comment']:
    score = SnowNLP(c).sentiments
    if score>=0.5:
        s.append(1)
    else:
        s.append(0)
count = np.sum((s == data_test['sentiment'])==1)
print('准确率为:',count/len(data_test))

 

 Die Genauigkeit des erhaltenen Modells muss noch verbessert werden.Solange die zuvor vorbereiteten negativen und positiven Korpusdaten groß undreich genug sind, wird die Genauigkeit hier stark verbessert werden.

Modellnutzung

Wir haben das Modell zuvor trainiert und beginnen dann, das Modell zu verwenden, um die Kommentare der unmarkierten Stimmungsklassifikation zu markieren.

data = pd.read_excel("data.xlsx")
s = []
for c in data['comment']:
    score = SnowNLP(c).sentiments
    if score>=0.5:
        s.append(1)
    else:
        s.append(0)
data['sentiment'] = s
data.to_excel("data_result.xlsx",index=False)  # 导出标记情感标签的评论数据
data.head()

 Das Obige ist SnowNLP, das einen benutzerdefinierten Korpus für das Modelltraining verwendet. Ich hoffe, es ist hilfreich für Sie, die Stimmungsanalyse lernen.

Guess you like

Origin blog.csdn.net/m0_64336780/article/details/127716310