1

Ich möchte eine Sammlung von Text in zwei Klassen zu klassifizieren, lassen Sie uns sagen, ich möchte eine Sentiment-Klassifizierung tun. Ich habe zwei vorgefertigte Sentiment-Wörterbücher, eines enthält nur positive Wörter und ein anderes enthält nur negative Wörter. Ich möchte diese Wörterbücher in Feature-Vektor für SVM-Klassifikator integrieren. Meine Frage ist, ist es möglich, zwischen positiven und negativen Wörtern Wörterbuch zu trennen, um als SVM-Feature-Vektor dargestellt werden, vor allem, wenn ich Feature-Vektor für das Testset generieren?SVM-Feature-Vektor-Darstellung mit vorgefertigten Wörterbuch für die Textklassifikation

Wenn meine Erklärung nicht klar genug ist, lassen Sie mich das Beispiel geben. Lassen Sie uns sagen, dass ich diese beiden Sätze als Trainingsdaten haben:

Pos: The book is good 
Neg: The book is bad 

Wort ‚gut‘ existiert in positive Wörterbuch und ‚schlecht‘ existiert in negativer Wörterbuch, während andere Wörter in keinem Wörterbuch nicht existieren. Ich möchte, dass die Wörter, die in passendem Wörterbuch mit der Klasse des Satzes existieren, einen großen Gewichtungswert haben, während andere Wörter kleinen Wert haben. So werden die Merkmalsvektoren wie diese sein:

+1 1:0.1 2:0.1 3:0.1 4:0.9 
-1 1:0.1 2:0.1 3:0.1 5:0.9 

Wenn ich einen Testsatz klassifizieren will „Das Essen ist schlecht“, wie soll ich einen Merkmalsvektor für den Test erzeugen mit Gewicht eingestellt, die auf abhängen bestehendes Wörterbuch, wenn ich die Klasse des Testsatzes nicht mit jedem Wörterbuch vergleichen kann? Was ich denken kann, ist für das Testset, solange das Wort in beiden Wörterbüchern existiert, werde ich dem Wort einen hohen Gewichtswert geben.

0 1:0.1 3:0.1 5:0.9 

Ich frage mich, ob dies der richtige Weg für die Erstellung von Vektor-Darstellung für Trainingssatz und Test-Set ist.

--Edit-- Ich habe vergessen zu erwähnen, dass diese vorgefertigten Wörterbücher mit einer Art von Themenmodell extrahiert wurde. Zum Beispiel repräsentieren die obersten 100 Wörter aus Thema 1 eine positive Klasse und Wörter aus Thema 2 eine negative Klasse. Ich möchte diese Art von Informationen verwenden, um den Klassifikator mehr zu verbessern, als nur die Verwendung von Wortwörtern.

Antwort

1

Kurz gesagt - dies ist nicht die Art, wie es funktioniert.

Der springende Punkt von Lernen ist, Klassifikator Fähigkeit zu geben, diese Gewichte selbst zuweisen. Sie können nicht "erzwingen", einen hohen Wert pro Klasse für ein bestimmtes Feature zu haben (ich meine, Sie könnten auf der Optimierungsebene, aber dies würde erfordern, die gesamte SVM-Struktur zu ändern).

Der richtige Weg ist einfach eine "normale" Darstellung zu erstellen. Ohne zusätzliche Spezifikation. Lassen Sie das Modell entscheiden, sie sind besser in der statistischen Analyse als menschliche Intuition, wirklich.

+0

Von meinem Verständnis basierend auf Ihrer Antwort, wenn ich die Klassifizierung mit der oben genannten Bedingung implementieren, muss ich sowohl positive als auch negative Wörterbücher zu einem kombinieren. Wenn danach ein Wort in diesem kombinierten Wörterbuch existiert, geben Sie ihm einen hohen Wert, andernfalls einen niedrigen Wert, und lassen Sie den Klassifikator den Rest entscheiden. Ist das richtig? – tomgun

+0

Sie sollten einfach ein Wörterbuch erstellen und SVM oben verwenden. Es wird die richtigen Gewichte selbst zuweisen, versuchen Sie nicht, es zu überdimensionieren, es ist selten eine gute Idee. Um das Ziel zu erreichen, das Sie beschrieben haben (was wiederum keine gute Idee ist), müssten Sie das Optimierungsverfahren ändern, die Vorzeichenbeschränkungen für die einzelnen Gewichtungen hinzufügen, was wahrscheinlich die Anwendung der dualen Optimierungstechnik einschränken würde (bin mir nicht sicher es würde erfordern einige Bedingungen zu überprüfen) und ließ Sie mit der Gradientenoptimierung in der Primal (was für den linearen Fall in Ordnung ist). – lejlot

Verwandte Themen