weka で StringToWordVector フィルターを使用して、単語の長さを制限するにはどうすればよいですか (たとえば、少なくとも 2 文字を含む単語のみを残す)。
質問する
466 次
2 に答える
1
標準の StringToWordVector でできるかどうかはわかりません。ただし、独自のフィルターを実装できます。これから行うことは StringToWordVector クラスが行うことと大差ないため、それを継承してメソッドinputをオーバーライドすることができます。
ドキュメントのコードでフィルターを使用する例を次に示します。
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));
}
}
于 2013-10-22T11:31:43.300 に答える