package edu.fudan.ml.classifier;
import edu.fudan.ml.types.alphabet.LabelAlphabet;
/**
* 将内部预测值类型解析成原始标签
* 原始的类别标签,在内部表示成索引标号,需要将其还原
*
* @author xpqiu
* @since 1.5
*/
public class LabelParser {
public enum Type{
/**
* 单个字符串
*/
STRING,
/**
* 字符串序列
*/
SEQ
}
public static Predict parse(TPredict res,
LabelAlphabet labels, Type t) {
int n = res.size();
Predict pred = null;
switch(t){
case SEQ:
pred = new Predict<String[]>(n);
for(int i=0;i<n;i++){
int[] preds = (int[]) res.getLabel(i);
String[] l = labels.lookupString(preds);
pred.set(i, l, res.getScore(i));
}
break;
case STRING:
pred = new Predict<String>(n);
for(int i=0;i<n;i++){
int idx = (Integer) res.getLabel(i);
String l = labels.lookupString(idx);
pred.set(i, l, res.getScore(i));
}
return pred;
default:
break;
}
return pred;
}
}