package edu.fudan.nlp.pipe;
import java.io.Serializable;
import edu.fudan.ml.types.Instance;
import edu.fudan.util.MyArrays;
/**
* 处理数值数据
*
* @author xpqiu
*
*/
public class NumericPipe extends Pipe implements Serializable {
boolean normalizelength = false;
public NumericPipe() {
}
/**
*
*/
private static final long serialVersionUID = -1342039394164863109L;
public void addThruPipe(Instance instance) {
String[][] data = (String[][]) instance.getData();
if(normalizelength){
for (int i = 0; i < data.length; i++) {
String[] arr = data[i];
int[] d = MyArrays.string2int(arr);
int len = 10;
int[] nd = normlise(d,len);
data[i] = MyArrays.int2string(nd);
}
}
instance.setData(data);
}
private int[] normlise(int[] d, int len) {
if(d.length<=len)
return d;
float r = d.length*1.0f/len;
int[] nd = new int[len];
for(int i=0;i<len;i++){
int idx = (int) Math.round(i*r);
nd[i]=d[idx];
}
return nd;
}
}