package com.tlabs.labeltool;
import java.util.Iterator;
import java.util.StringTokenizer;
import java.util.Vector;
import com.felix.util.Util;
public class ClassificationResult {
final static String NULL = "null";
Vector<ClassResult> results;
String _descr = "";
boolean isNull = false;
public ClassificationResult() {
}
public ClassificationResult(String resultsDescr) {
if (resultsDescr.compareTo(NULL) == 0) {
isNull = true;
} else {
try {
StringTokenizer st = new StringTokenizer(resultsDescr);
while (st.hasMoreElements()) {
String className = (String) st.nextElement();
double prob = Double.parseDouble((String) st.nextElement());
addResult(className, prob);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public Vector<ClassResult> getResults() {
return results;
}
public void addResult(String cat, double prob) {
if (results == null) {
results = new Vector<ClassResult>();
}
results.add(new ClassResult(cat, prob));
_descr += " " + cat + " " + prob;
}
public ClassResult getWinner() {
if (isNull) return null;
ClassResult winner = null;
double highestProb = 0;
for (Iterator<ClassResult> iterator = results.iterator(); iterator
.hasNext();) {
ClassResult cr = (ClassResult) iterator.next();
if (cr.probability > highestProb) {
winner = cr;
highestProb = cr.probability;
}
}
return winner;
}
public ClassResult getResultForName(String catName) {
if (isNull) return null;
for (Iterator<ClassResult> iterator = results.iterator(); iterator
.hasNext();) {
ClassResult cr = (ClassResult) iterator.next();
if (cr.getCat().compareTo(catName.trim()) == 0) {
return cr;
}
}
return null;
}
public String toString() {
return _descr.trim();
}
public class ClassResult {
private String cat;
private double probability;
public ClassResult(String cat, double probability) {
super();
this.cat = cat;
this.probability = probability;
}
public String toString() {
return cat + " (" + Util.cutDouble(probability) + ")";
}
public String getCat() {
return cat;
}
public void setCat(String cat) {
this.cat = cat;
}
public double getProbability() {
return probability;
}
public void setProbability(double probability) {
this.probability = probability;
}
}
}