我使用Weka的JAVA API根據不同的文本特徵對文檔進行分類。當使用TextDirectoryLoader
類時,我可以加載一個包含某些文本的txt文件的目錄,將文本轉換爲數字特徵並在以後對實例進行分類。問題在於,該文本將由數據集中的單個字符串要素表示。如何在weka TextDirectoryLoader中加載單獨的文本屬性?
例如:
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」將包含一個屬性,它是文本和一個屬性,它是類(從目錄分類導出):System.out.println(dataRaw.numAttributes()); // outputs 2
是否有可能分離將文本轉換爲原始txt文件(例如使用分隔符?),以便加載不同的文本屬性而不是一個?
一種選擇是在事後插入一些新的屬性,如:
dataRaw.insertAttributeAt(new Attribute("attr2", (FastVector) null), dataRaw.numAttributes());
for (int i = 0; i < dataRaw.numInstances(); i++) {
dataRaw.instance(i).setValue(2, "sometext");
}
或者創建像一個ARFF文件:
@relation whatever
@attribute attr1 String
@attribute attr2 String
...
有什麼辦法上面的設置可以通過實現'TextDirectoryLoader'?提前致謝!