Es ist ein Herausforderungsrekord von 100 Sprachverarbeitungsklopfen 2015. Die Umgebung ist Ubuntu 16.04 LTS + Python 3.5.2 : : Anaconda 4.1.1 (64-Bit). Klicken Sie hier, um eine Liste der vergangenen Schläge anzuzeigen (http://qiita.com/segavvy/items/fb50ba8097d59475f760).
In diesem Kapitel wird die Aufgabe, Sätze mithilfe des Satzpolaritätsdatensatzes v1.0 von Movie Review Data, veröffentlicht von Bo Pang und Lillian Lee (Polaritätsanalyse), in positive (positive) oder negative (negative) zu klassifizieren. Arbeiten Sie daran.
Erstellen Sie ein Programm, das die Ausgabe von> 76 empfängt und die richtige Antwortrate der Vorhersage, die richtige Antwortrate für das richtige Beispiel, die Rückrufrate und die F1-Punktzahl berechnet.
main.py
# coding: utf-8
fname_result = 'result.txt'
def score(fname):
'''Ergebnisberechnung aus der Ergebnisdatei
Lesen Sie die Ergebnisdatei und geben Sie die richtige Antwortrate, Genauigkeitsrate, Rückrufrate und F1-Punktzahl zurück.
Rückgabewert:
Richtige Antwortrate,Compliance-Rate,Erinnern,F1-Punktzahl
'''
#Lesen Sie die Ergebnisse und aggregieren Sie
TP = 0 # True-Positive Erwartungen+1, richtige Antwort+1
FP = 0 # False-Positive Erwartungen+1 ist die richtige Antwort-1
FN = 0 # False-Negative Erwartungen-1 ist die richtige Antwort+1
TN = 0 # True-Negative Erwartungen-1, richtige Antwort-1
with open(fname) as data_file:
for line in data_file:
cols = line.split('\t')
if len(cols) < 3:
continue
if cols[0] == '+1': #Richtige Antwort
if cols[1] == '+1': #Erwartet
TP += 1
else:
FN += 1
else:
if cols[1] == '+1':
FP += 1
else:
TN += 1
#Berechnung
accuracy = (TP + TN) / (TP + FP + FN + TN) #Richtige Antwortrate
precision = TP / (TP + FP) #Compliance-Rate
recall = TP / (TP + FN) #Erinnern
f1 = (2 * recall * precision) / (recall + precision) #F1-Punktzahl
return accuracy, precision, recall, f1
#Ergebnisberechnung
accuracy, precision, recall, f1 = score(fname_result)
print('Richtige Antwortrate\t{}\n Konformitätsrate\t{}\n Rückruf\t{}\nF1 Punktzahl\t{}'.format(
accuracy, precision, recall, f1
))
Ausführungsergebnis
Richtige Antwortrate 0.8660664040517726
Konformitätsrate 0.8675833490299492
Rückrufrate 0.8640030013130745
F1 Punktzahl 0.8657894736842107
Die Genauigkeitsrate ist der Prozentsatz aller Bewertungen, die korrekt vorhergesagt werden können.
Die Compliance-Rate für positive Fälle ist der Prozentsatz der Bewertungen, die als positiv vorausgesagt werden und tatsächlich positiv sind.
Wenn Sie beispielsweise einen Pilz auswählen, der auf Pilzsuche gegessen werden kann (dies ist ein positives Beispiel), ist es schwierig, wenn Sie versehentlich einen giftigen Pilz auswählen (negatives Beispiel). Wenn Sie jedoch denken, dass ein Speisepilz ein giftiger Pilz ist und ihn vermissen, wird dies nur die Menge der Speisepilze verringern und nicht viel Schaden anrichten. Auf diese Weise ist es in Ordnung, einige positive Beispiele zu übersehen. Daher ist es ein wichtiger Index, wenn Sie nur positive Beispiele auswählen möchten. Es ist ein Indikator, wenn Sie streng über die Wahl des Falschen sind und es tolerieren, das Richtige zu verpassen.
Als extremes Beispiel können Sie die Genauigkeitsrate erhöhen, indem Sie eine grobe Vorhersagelogik verwenden, die besagt, dass alles, was verdächtig oder unklar ist, negativ ist.
Die Rückrufquote für positive Fälle ist der Prozentsatz der tatsächlich positiven Bewertungen, der als positiv vorhergesagt werden kann.
Wenn beispielsweise ein fehlerhaftes Produkt vor dem Versand des Produkts durch eine Überprüfung erkannt wird (dies ist ein normales Beispiel), wird das fehlerhafte Produkt übersehen, wenn es übersehen und versendet wird. In diesem Fall liegt kein tatsächlicher Schaden vor, wenn das gute Produkt fälschlicherweise als fehlerhaftes Produkt beurteilt und vom Versandziel ausgeschlossen wird. Wenn sich bei der anschließenden Nachprüfung herausstellt, dass es sich um ein gutes Produkt handelt, kann es versendet werden. Auf diese Weise ist es in Ordnung, ein negatives Beispiel durch einen kleinen Fehler auszuwählen. Daher ist es ein wichtiger Index, wenn Sie vermeiden möchten, ein positives Beispiel zu übersehen. Es ist tolerant, die falsche zu wählen, aber es ist ein schwieriger Indikator, die richtige zu verpassen.
Sie können die Rückrufquote erhöhen, indem Sie vorhersagen, dass alles, was verdächtig oder unklar ist, ob es positiv ist oder nicht, positiv ist.
Der F1-Score (auch als F-Score, F-Wert, F-Skala usw. bezeichnet) ist eine Quantifizierung des Gleichgewichts zwischen Präzision und Rückruf und wird nach der folgenden Formel berechnet.
Die Berechnung der F1-Punktzahl erfordert die Berechnung der Genauigkeit und des Rückrufs. Zu diesem Zeitpunkt erleichtert das Zählen der vier Zahlen True Positive, False Positive, False Negative und True Negative die Berechnung.
Eigentlich 1 (positiv) | Eigentlich 0 (negativ) | |
---|---|---|
Vorhersage ist 1 (positiv) | Richtig positiv | Falsch positiv |
Vorhersage ist 0 (negativ) | Falsch negativ | Richtig negativ |
Auch in diesem Code wird jeder Wert nach dem Zählen dieser vier Zahlen berechnet.
Außerdem werde ich die Beziehung zwischen der Präzisionsrate und der Rückrufrate und dem F1-Score in Frage 79 visualisieren.
Beide waren Werte um 0,86. Das ist ungefähr 86% Vorhersagegenauigkeit. Da die positiven und negativen Daten halb und halb sind, scheint es ein bisschen niedrig zu sein, wenn man bedenkt, dass 50% korrekt sind, selbst wenn es erraten wird ...
Das ist alles für den 78. Schlag. Wenn Sie Fehler haben, würde ich mich freuen, wenn Sie darauf hinweisen könnten.
Recommended Posts