[PYTHON] Überprüfen Sie die Wörter, die sich auf die Dokumentklassifizierung auswirken

Einführung

Ich habe versucht, maschinelles Lernen zu verwenden, aber warum hat dies dazu geführt? Hast du jemals gedacht? Je nach Methode können die Faktoren entschlüsselt werden. Dieser Artikel verwendet Naive Bayes als Thema und führt die "Wahrscheinlichkeit" von Wörtern in die Dokumentklassifizierung ein.

Bitte beachten Sie auch die Bestätigung zu scikit-learn ** Veröffentlicht auf github **.

Dokumentenklassifizierung in Naive Bayes

Was ist Dokumentklassifizierung?

Die Klassifizierung von Dokumenten ist eine Aufgabe, die anhand der im Voraus angegebenen Trainingsdaten (Dokumente) erlernt und neue Dokumente in bestimmte Kategorien eingeteilt werden müssen. Beim Erlernen eines Dokuments müssen Merkmale angegeben werden, anhand derer klassifiziert werden soll. Dieses Mal werde ich die Methode erklären, Wörter als Merkmale zu geben.

Haftung als Merkmal des Dokuments

Selbst wenn Wörter als Merkmal eines Dokuments behandelt werden, gibt es eine Methode zur Verwendung der Häufigkeit des Auftretens. Beim Lernen wird die Häufigkeit des Auftretens als Wahrscheinlichkeit für jede Kategorie / jedes Wort ausgedrückt (streng unterschiedlich, aber betrachten Sie es als Wahrscheinlichkeit).

Wir werden bestätigen, wie die Wahrscheinlichkeit mit der Klassifikation zusammenhängt, indem wir den in Naive Bayes verwendeten Bayes'schen Satz einbeziehen.

Satz von Bayes

Die Unterscheidung von Dokumenten wird durch die Wahrscheinlichkeit bestimmt, dass ein Dokument zu jeder Kategorie gehört. Dies bedeutet, dass die Kategorie mit der höchsten Wahrscheinlichkeit das Schätzergebnis ist. Die Wahrscheinlichkeit wird nach dem Bayes-Theorem berechnet, in dem die Wahrscheinlichkeit verwendet wird.

P(C|Fi) = \frac{P(C)P(Fi|C)}{P(Fi)}\\
(C: Kategorie, Fi: Funktionsumfang ≒ Wortsatz, dh Dokument)

■ Erläuterung der einzelnen Elemente

$ P (C | Fi) $
Wahrscheinlichkeit, dass Dokument Fi zur Kategorie C gehört (hintere Wahrscheinlichkeit).
$ P (C) $
Wahrscheinlichkeit des Auftretens der Kategorie C (Vorwahrscheinlichkeit). Es ist die Wahrscheinlichkeit, dass die entsprechende Kategorie in den Trainingsdaten erscheint, ohne den Inhalt des Dokuments zu berücksichtigen. Beispiel: Wenn es aus 2000 Dokumenten 1400 IT-Kategorien gibt, 0.7
$ P (Fi | C) $
Wenn es sich um Kategorie C handelt, ist es die Wahrscheinlichkeit, dass es als Feature-Set Fi angezeigt wird. (Litability)
$ P (Fi) $
Die Wahrscheinlichkeit, dass ein Dokument als Fi angezeigt wird. Da C nicht beteiligt ist, sind alle Kategorien der posterioren Wahrscheinlichkeiten gleich. Im Falle einer Diskriminierung müssen nur die posterioren Wahrscheinlichkeiten für jede Kategorie verglichen werden, sodass sie häufig von der Berechnung ausgeschlossen werden.

Bestätigung der Wahrscheinlichkeitsberechnung im Beispiel

Angenommen, die Wahrscheinlichkeit jedes Wortes in jeder Kategorie ergibt sich aus dem Lernergebnis unter den folgenden Bedingungen.

Wenn der Funktionsumfang des Dokuments, das Sie unterscheiden möchten, "Ringo Release Mikan" ist, ist die Wahrscheinlichkeit P jeder Kategorie(Fi|C)Wird wie folgt berechnet. P.(Fi|C)Ist das Produkt jeder Wahrscheinlichkeit, aber da es logarithmisch ist, kann es durch Addition berechnet werden.

IT: -0.3 + -0.3 + -0.8 = -1.4 Landwirtschaft: $ -0,4 + -0,4 + -0,3 = -1,1 $

Wenn Sie diesmal nur die Wahrscheinlichkeit betrachten, wird dies als landwirtschaftliche Kategorie geschätzt. Wie oben erwähnt, ist ersichtlich, dass die hintere Wahrscheinlichkeit umso höher ist, je größer die Wahrscheinlichkeit jedes Wortes ist. In dem Beispiel gibt es einen großen Unterschied in der Wahrscheinlichkeit des Wortes "Mikan", und es ist ersichtlich, dass es die Diskriminierung stark beeinflusst.

Abhängig von der vorherigen Wahrscheinlichkeit kann gesagt werden, dass Wörter mit einem größeren Unterschied in der Wahrscheinlichkeit zwischen Kategorien die Diskriminierung mit diesem Klassifikator beeinflussen.

Bestätigung der tatsächlichen Daten

Lassen Sie uns die Wahrscheinlichkeit mit tatsächlichen Daten überprüfen. Wir haben den Datensatz "Movie Review" verwendet, um positive und negative Bewertungen zu klassifizieren. Nach dem Lernen sind die Top 10 Wörter mit dem größten Unterschied in der Wahrscheinlichkeit wie folgt. Neben der richtigen Nomenklatur wie "Mulan" erscheinen Adjektive wie "Schlimmste".

Wort Negativ positiv Wahrscheinlichkeitsunterschied(Absolutwert)
mulan -10.83863242 -9.33020901 1.50842341
truman -10.42987203 -9.000858011 1.429014015
worst -8.809010658 -10.1341868 1.325176141
shrek -10.87230098 -9.598985497 1.273315479
seagal -9.529290176 -10.78823673 1.258946555
godzilla -9.264337631 -10.47190374 1.207566113
flynt -10.81220934 -9.627421483 1.184787854
lebowski -10.82237984 -9.664010458 1.158369383
waste -9.193245829 -10.34277587 1.149530044
stupid -8.96333841 -10.10326246 1.139924046

Rücksichtnahme / Eindruck

Ich halte es für vernünftig, dass die richtige Nomenklatur populärer Filme, Schauspieler usw. die Diskriminierung beeinflusst. Wir fanden auch heraus, dass positive und negative Adjektive auch die Diskriminierung beeinflussen. Ich denke, Sie können davon überzeugt sein, dass diese Worte die Diskriminierung beeinflussen.

abschließend

Durch Überprüfen der Wahrscheinlichkeit von Wörtern konnten wir bestätigen, welche Wörter die Diskriminierung von Dokumenten beeinflussten. Es mag nicht immer verständlich sein, aber ich hielt es für wichtig zu bestätigen, dass die gewünschte Schätzung durch Bestätigung der Faktoren vorgenommen wurde.

Verweise

Erläuterungen zu Naive Bays finden Sie hier. → Textklassifizierung mit naiven Feldern Der Unterschied zwischen Wahrscheinlichkeit und Wahrscheinlichkeit war leicht zu verstehen. → Wer ist die Wahrscheinlichkeit? Dies ist leicht zu verstehen über die spärliche, die in der Implementierung herauskam. → Interne Datenstruktur von scipy.sparse

Recommended Posts

Überprüfen Sie die Wörter, die sich auf die Dokumentklassifizierung auswirken
Ich habe die einfachste Methode zur Klassifizierung von Dokumenten mit mehreren Etiketten ausprobiert
Starten Sie einen einfachen WEB-Server, der den Header überprüfen kann