2016-03-28 13 views
0

Ich habe an "Skript-Identifizierung aus zweisprachigen Dokumenten" gearbeitet. Ich möchte die Seiten/Blöcke entweder Eng (Klasse 1), Hindi (Klasse 2) oder Mixed mit libsvm in Matlab zu klassifizieren. aber das Problem ist, dass die Trainingsdaten, die ich habe, aus Proben bestehen, die nur Hindi und englischen Seiten/Blöcken entsprechen, aber keine gemischten Seiten.Multiklass Klassifizierung in SVM

Die Testdaten, die ich angeben möchte, können auch aus gemischten Seiten/Blöcken bestehen, in diesem Fall möchte ich, dass sie als "gemischt" klassifiziert werden. Ich plane, es mit Konfidenz- oder Wahrscheinlichkeitswerten zu machen. Wenn der Prob-Wert der Klasse 1 größer als ein Schwellenwert (etwa 0,8) ist und der Prob-Wert der Klasse 2 kleiner als ein Schwellenwert ist (z. B. 0,05), wird er als Klasse 1 und Klasse 2 umgekehrt klassifiziert. Aber wenn die oben genannten zwei Bedingungen nicht erfüllen, dann möchte ich es als "Mixed" klassifizieren.

Der dritte Rückgabewert aus dem "libsvmpredict" ist prob_values ​​und ich hatte vor, mit diesem prob_values ​​zu entscheiden, ob die Testdaten Hindi, Englisch oder Mixed sind. aber an einigen Stellen habe ich gelernt, dass "libsvmpredict" nicht die tatsächlichen prob_values ​​erzeugt.

Gibt es einen Weg, der mir helfen kann, die Testdaten in 3 Klassen (Hindi, Englisch, Mixed) unter Verwendung von Trainingsdaten zu klassifizieren, die nur aus 2 Klassen in SVM bestehen.

+0

Ist in lateinischen Zeichen? Wenn nicht, denke ich nicht, dass Sie einen Klassifikator brauchen, da der Computer Englisch-/Hindi-Zeichen bereits korrekt erkennt und anzeigt. Das heißt, Sie können diese Sprache identifizieren, indem Sie die (wahrscheinlich UTF-8) codierten Zeichen betrachten. –

+0

Die Dokumente, die ich habe, sind gescannte Bilder von Hindi/Englisch Bücher bei 300dpi. Der ganze Zweck meines Projekts ist es, das Skript des Eingabedokumentbildes zu identifizieren und auf der Grundlage des identifizierten Skripts wird es an die entsprechende OCR weitergeleitet, die wiederum das Bild in ein computerlesbares Format konvertiert. –

Antwort

0

Dies ist nicht der Modus Operandi für SVMs.
In keiner Weise können SVMs eine gegebene Klasse vorhersagen, ohne sie zu kennen, ohne zu wissen, wie man eine solche Klasse von allen anderen Klassen trennt. Die Funktion svmpredict() in LibSVM zeigt tatsächlich die Wahrscheinlichkeitsschätzungen an und je größer dieser Wert ist, desto sicherer können Sie Ihre Vorhersage betrachten. Aber Sie können sich nicht auf solche Werte verlassen, wenn Sie nur zwei Klassen haben, um eine dritte Klasse vorherzusagen: In der Tat wird svmpredict() so viele Entscheidungswerte zurückgeben, wie es Klassen gibt.

Sie können mit Ihrem Schwellwertsystem fortfahren (das wiederum nicht SVM-basiert ist), aber es wird wahrscheinlich fehlschlagen oder schlechte Leistungen erbringen. Denken Sie darüber nach: Sie müssen zwei Schwellenwerte einrichten und sie in einer UND-Logik verwenden. Die Wahrscheinlichkeit korrekt klassifizierter nicht gemischter Dokumente wird in der Tat drastisch sinken.

Mein Vorschlag ist: Anstatt Zeit zu verschwenden Schwellenwerte, mit einer hohen Wahrscheinlichkeit von schlechten Leistungen, verbinden Sie einige dieser Texte zusammen oder erstellen Sie einige neue Dateien mit einigen Hindi und einigen englischen Zeilen, um Ihre Trainingsdaten hinzuzufügen einige richtig gemischte Dokumente und führen ein Standard-SVM-System mit 3 Klassen durch.
Um solche Dateien erstellen Sie auch Matlab verwenden können, die E/A-Funktionen wie fread(), fwrite(), fprintf(), fscanf(), importdata() und so weiter ...

der Hindi Text geschrieben eine ziemlich anständige Datei hat
Verwandte Themen