Ich benutze die JAVA API von Weka, um Dokumente nach verschiedenen Textmerkmalen zu klassifizieren. Wenn ich die Klasse TextDirectoryLoader
verwende, kann ich ein Verzeichnis mit txt-Dateien laden, die etwas Text enthalten, den Text in ein numerisches Feature umwandeln und die Instanzen später klassifizieren. Das Problem besteht darin, dass dieser Text durch ein einzelnes String-Feature im Dataset dargestellt wird.Wie laden Sie separate Textattribute in weka TextDirectoryLoader?
Zum Beispiel:
TextDirectoryLoader loader = new TextDirectoryLoader();
loader.setDirectory(new File(dataDir));
Instances dataRaw = loader.getDataSet();
StringToWordVector filter = new StringToWordVector();
filter.setInputFormat(dataRaw);
Instances dataFiltered = Filter.useFilter(dataRaw, filter);
‚dataRaw‘ ein Attribut enthalten, die der Text und ein Attribut, das die Klasse (aus dem Verzeichnis Taxonomie abgeleitet) ist: System.out.println(dataRaw.numAttributes()); // outputs 2
Ist es möglich, zu trennen der Text in die ursprünglichen txt-Dateien (zum Beispiel mit Trennzeichen?), so dass verschiedene Textattribute anstelle von einem geladen werden?
Eine Möglichkeit wäre, danach einige neue Attribute einfügen, zB:
dataRaw.insertAttributeAt(new Attribute("attr2", (FastVector) null), dataRaw.numAttributes());
for (int i = 0; i < dataRaw.numInstances(); i++) {
dataRaw.instance(i).setValue(2, "sometext");
}
Oder eine ARFF Datei wie erstellen:
@relation whatever
@attribute attr1 String
@attribute attr2 String
...
Gibt es eine Möglichkeit die obige Einstellung über das erreicht werden könnte 'TextDirectoryLoader'? Danke im Voraus!