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; } }