0

Also versuche ich (nur zum Spaß) Filme basierend auf ihrer Beschreibung zu klassifizieren, die Idee ist es, Filme "zu markieren", so ein gegebener Film könnte "Aktion sein "und" Humor "zur gleichen Zeit zum Beispiel.Machine Learning Text Klassifizierung, wo ein Text gehört zu 1 bis N Klassen

Wenn Sie einen Textklassifizierer verwenden, erhalten Sie normalerweise die Klasse to, zu der ein bestimmter Text gehört, aber in meinem Fall möchte ich einen Text den 1 bis N Tags zuweisen.

Derzeit ist mein Trainingssatz wie diese

+--------------------------+---------+ 
|  TEXT    | TAG | 
+--------------------------+---------+ 
| Some text from a movie | action | 
+--------------------------+---------+ 
| Some text from a movie | humor | 
+--------------------------+---------+ 
| Another text here  | romance | 
+--------------------------+---------+ 
| Another text here  | cartoons| 
+--------------------------+---------+ 
| And some text more  | humor | 
+--------------------------+---------+ 

aussehen würde Was ich als nächstes tue, ist Klassifizierer zu trainieren, mir zu sagen, ob jeder Tag zu einem einzigen Text gehört, so zum Beispiel, wenn ich will Figur heraus, ob ein Text als „Humor“ eingestuft ich mit folgenden Ausbildung

+--------------------------+---------+ 
|  TEXT    | TAG | 
+--------------------------+---------+ 
| Some text from a movie | humor | 
+--------------------------+---------+ 
| Another text here  |not humor| 
+--------------------------+---------+ 
| And some text more  | humor | 
+--------------------------+---------+ 

Dann trainiere ich einen Klassifikator gesetzt

enden würde, dass ein Text ist Humor oder nicht (der gleiche Ansatz auch nicht lernen würde, ist mit den restlichen Tags gemacht). Danach habe ich mit insgesamt 4 Klassifizierer beenden, die

  • Aktion/keine Aktion
  • Humor/nein Humor
  • Romantik/keine Romantik
  • Cartoons/keine Cartoons

Schließlich sind Wenn ich einen neuen Text bekomme, wende ich ihn an jeden der 4 Klassifikatoren an, für jeden Klassifizierer, der mir eine positive Klassifizierung gibt (das heißt, gibt mir X anstelle von Nein-X), wenn diese Klassifizierung über einem bestimmten Schwellenwert liegt (sagen wir 0.9), dann nehme ich das an der neue Text gehört zu Tag X, und dann wiederhole ich das gleiche mit jedem der Klassifikatoren.

Insbesondere verwende ich Naive Bayes als Algorithmus, aber das gleiche könnte mit jedem Algorithmus angewendet werden, der eine Wahrscheinlichkeit ausgibt.

Jetzt ist die Frage, ist dieser Ansatz richtig? Mache ich hier etwas schrecklich falsch? Aus den Ergebnissen ergibt sich, dass Dinge sinnvoll erscheinen, aber ich hätte gerne eine zweite Meinung.

Antwort

0

Ja, das macht Sinn. Es ist eine wohlbekannte, grundlegende Technik für die Klassifizierung von Multilabel/Multiklassen, die als Klassifizierer "Eins gegen alle" (oder "Eins gegen alle") bekannt ist. Dies ist sehr alt und weit verbreitet. Auf der anderen Seite - es ist auch sehr naiv, da Sie keine Beziehungen zwischen Ihren Klassen/Tags betrachten. Vielleicht interessiert es Sie, etwas über strukturelles Lernen zu lesen, das Themen behandelt, bei denen es eine gewisse Struktur über dem Etikettenraum gibt, die ausgenutzt werden kann (und normalerweise auch vorhanden ist).

+0

Warum hat das negative Kommentare? Ich finde es sehr nützlich ... adding upvote! –

+0

@Juan, ich war auch überrascht, einen Downvote hier zu sehen, aber da es keinen Kommentar gibt, der erklärt, was ein Wähler im Sinn hatte - würde ich annehmen, dass es nicht sehr "faktische" Abstimmung war. – lejlot

0

Das von Ihnen beschriebene Problem kann von Latent Dirichlet Allocation, einer statistischen topic model Methode behoben werden, um die zugrunde liegenden ("latente") Themen in einer Sammlung von Dokumenten zu finden. Dieser Ansatz basiert auf einem Modell, bei dem jedes Dokument eine Mischung aus diesen Themen darstellt.

In der Regel entscheiden Sie zunächst über die Themen (in Ihrem Fall sind die Tags die Themen) und dann einen Trainer. Die LDA-Software gibt dann eine Wahrscheinlichkeitsverteilung über die Themen für jedes Dokument aus.

Hier ist eine gute Einführung: http://blog.echen.me/2011/08/22/introduction-to-latent-dirichlet-allocation/

+0

lda ist unbeaufsichtigt Technik für das Finden latenter Variablen und hat nichts mit OPs Frage von voll überwachten Mutlelass Problem – lejlot

+0

@lejlot: Zu keinem Zeitpunkt in OP Frage erwähnt er überwachtes Lernen. Er sagt, dass er versucht hat, Naive Bayes zu benutzen, aber das überwachte Lernen ist nicht der einzige Ansatz. Um zu zitieren: 'Ich möchte 1 bis N Tags einen Text zuweisen. Er sagt auch, 'zum Beispiel, wenn ich herausfinden möchte, ob ein Text als" Humor "eingestuft wird oder nicht. LDA kann diese Probleme lösen. – stackoverflowuser2010

+0

OP erstellt Trainingssatz, verwendet generalisierte Mehrklassen-Naive Bayes. Es ist sehr schön beschrieben, grundlegende überwachte Einstellung Ansatz. Unüberwachte Lerntechniken sind gut, wenn Sie versuchen, etwas über Ihre Daten herauszufinden. Wenn Ihre Aufgabe gut spezifiziert ist - sie sind kein guter Ansatz, da ihr internes Ziel nicht darin besteht, Ihr Problem zu lösen -, sondern eher eine Lösung für ihre eigene Aufgabe. Genau wie beim Clustering - Sie werden immer ein gewisses Datenclustering finden, aber die Annahme, dass sich dies auf Ihre Aufgabe beziehen wird, ist einfach falsch. – lejlot

0

Ja.Ihr Ansatz ist korrekt und es ist eine bekannte Strategie, Klassifikatoren, die für die binäre Klassifizierung ausgelegt sind, in die Lage zu versetzen, Mehrklassen-Klassifizierungsaufgaben zu bearbeiten.

Andrew Ng (von Standford University) erklärt diesen Ansatz here. Auch wenn es für die logistische Regression erklärt wird, wie Sie erwähnt haben, kann die Idee auf jeden Algorithmus angewendet werden, der Wahrscheinlichkeit ausgibt.

+0

Ja, tatsächlich habe ich den Kurs gemacht. In diesem Video wird jedoch der Ansatz erklärt, so dass Sie die logistc-Regression verwenden können, um nicht zwischen 2 Klassen, sondern zwischen N Klassen zu klassifizieren. Was ich bekommen möchte, ist ähnlich, außer dass ich nicht nur N Klassen hinzufügen möchte, sondern auch bis zu N Klassen zu einem gegebenen Text ZUWEISEN. Das heißt, Sie haben Recht, und btw, meine Zahlen scheinen das gleiche zu zeigen :) –

+0

Ich denke dafür können Sie einfach eine Wahrscheinlichkeitsschwelle angeben (möglicherweise durch Beobachtung der aktuellen Zahlen) und eine der N Klassen zuweisen, für die die Wahrscheinlichkeit der Film der Klasse gehört über die Schwelle. Ich habe akademische Artikel gesehen, die den gleichen Ansatz verwenden. – TrnKh