【发布时间】:2017-10-28 14:47:09
【问题描述】:
我正在使用Weka的JAVA API根据不同的文本特征对文档进行分类。使用TextDirectoryLoader 类时,我可以加载包含一些文本的txt 文件的目录,将文本转换为数字特征,然后对实例进行分类。问题是该文本将由数据集中的单个字符串特征表示。
例如:
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'来实现上述设置?提前致谢!
【问题讨论】:
标签: java machine-learning weka text-classification