在weka中使用StringToWordVector过滤器,如何限制单词的长度(例如,只留下包含至少两个字符的单词)?
答案 0 :(得分:1)
我不确定你是否可以使用标准的StringToWordVector。但是你可以实现自己的过滤器。由于您要做的与StringToWordVector类没有什么不同,您可以继承它并覆盖方法input。
以下是在documentation代码中使用过滤器的示例:
Filter filter = new MyStringToWordVector();
Instances instances = ..some instances..
for (int i = 0; i < data.numInstances(); i++) {
filter.input(data.instance(i));
}
filter.batchFinished();
Instances newData = filter.outputFormat();
Instance processed;
while ((processed = filter.output()) != null) {
newData.add(processed);
}
..do something with newData..
或者您可以使用StringToWordVector而不是您的过滤器,但可以通过以下方式更改上述代码的过滤部分:
StringToWordVector filter = new StringToWordVector();
int attrNum = Integer.parseInt(filter.getAttributeIndices());
for (int i = 0; i < data.numInstances(); i++) {
Instance instance = data.get(i);
String str = instance.stringValue(attrNum);
// Apply your logic here
if (str.length > 2) {
filter.input(data.instance(i));
}
}
答案 1 :(得分:0)
看起来使用“RemoveByName”过滤器删除属性可以在应用StringToWordVector过滤器后完成。此过滤器根据与其名称匹配的正则表达式删除属性。