package doser.entitydisambiguation.table.logic;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import org.apache.log4j.Logger;
import doser.entitydisambiguation.table.columndisambiguation.LearntoRankOutputObject;
/**
* This class writes learn to rank feature values into an output file
*/
public class LearnToRankTableDisambiguationOutput {
public static final String OUTPUTFILE = "/mnt/ssd1/disambiguation/misc/ltroutput";
private Writer out;
public LearnToRankTableDisambiguationOutput() {
final File newfile = new File(OUTPUTFILE);
try {
this.out = new FileWriter(newfile, true);
} catch (final IOException e) {
Logger.getRootLogger().error(e.getStackTrace());
}
}
private void write(final String text) {
try {
this.out.write(text);
this.out.write(System.getProperty("line.separator"));
this.out.flush();
} catch (final IOException e) {
Logger.getRootLogger().error(e.getStackTrace());
}
}
public void writeQueryResult(final LearntoRankOutputObject object) {
final String[] field = new String[5];
String relevance = "";
if (object.isRelevant()) {
relevance = "1";
} else {
relevance = "-1";
}
field[0] = relevance;
final StringBuffer buffer = new StringBuffer(relevance + " qid:" + object.getqId() + " ");
final double[] featureValues = object.getFeatureValues();
for (int i = 0; i < featureValues.length; i++) {
buffer.append((i + 1) + ":" + featureValues[i]);
field[i + 1] = String.valueOf(featureValues[i]);
if (i < (featureValues.length - 1)) {
buffer.append(' ');
}
}
this.write(buffer.toString());
}
}