0

weka で StringToWordVector フィルターを使用して、単語の長さを制限するにはどうすればよいですか (たとえば、少なくとも 2 文字を含む単語のみを残す)。

4

2 に答える 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 に答える