package com.tlabs.labeltool;
import java.util.Iterator;
import java.util.Vector;
public class Analyser {
public static String analyse(Vector<? extends Angerable> recs, double threshold) {
int total = 0, nn = 0, aa = 0, an = 0, na = 0, nlength = 0, alength = 0;
for (Iterator<? extends Angerable> iterator = recs.iterator(); iterator.hasNext();) {
Angerable angerable = iterator.next();
if (angerable.isAngry()) {
alength += angerable.getTimeInSec();
if (angerable.seemsAngry(threshold)) {
aa++;
} else {
an++;
}
} else {
nlength += angerable.getTimeInSec();
if (angerable.seemsAngry(threshold)) {
na++;
} else {
nn++;
}
}
}
total = nn + an + na + aa;
int neut = nn + na;
int ang = aa + an;
double neutMins = Util.roundDouble(nlength / 60.0);
double angMins = Util.roundDouble(alength / 60.0);
int aap = (int) (100 * Util.roundDouble((double) aa / total));
int anp = (int) (100 * Util.roundDouble((double) an / total));
int nnp = (int) (100 * Util.roundDouble((double) nn / total));
int nap = (int) (100 * Util.roundDouble((double) na / total));
double nPrec = Util.roundDouble((double) nn / (nn+an));
double nRecall = Util.roundDouble((double) nn / (nn+na));
double aPrec = Util.roundDouble((double) aa / (aa+an));
double aRecall = Util.roundDouble((double) aa / (aa+na));
double f_a_05 = Util.roundDouble(1.5 * ((aPrec*aRecall)/(0.5*(aPrec+aRecall))));
String anatext = "all: " + total + " n: " + neut + " (" + neutMins + " min), a: " + ang + " (" + angMins
+ " min), aa: " + aap + ", an: " + anp + ", nn: " + nnp + ", _neutralPred: " + nap;
anatext+= ", nRec: "+nRecall+", nPrec: "+nPrec+", aRec: "+aRecall+", aPrec: "+aPrec+", F-measure 0,5: "+f_a_05;
return anatext;
}
}