package experiments.collective.entdoccentric; import java.util.LinkedList; import java.util.List; import org.kohsuke.args4j.CmdLineException; import org.kohsuke.args4j.CmdLineParser; import org.kohsuke.args4j.Option; import experiments.collective.entdoccentric.StandardQueryDataObject.EntityObject; /** * Startklasse zur Evaluierung der Disambiguierungen * * @author zwicklbauer * */ public class StartEvaluation { @Option(name = "-json", usage = "Sets the calbc json file") public static String calbcJSON; @Option(name = "-qrels", usage = "Output path of qrel file") public static String qrelsFile; @Option(name = "-result", usage = "Output path of result file") public static String resultFile; public static int returnAmount = 1; public static int contextArea; private QueryDataGeneration dataGeneration; private ResultProcessing resultProcessing; private int queryNumber; private CollectiveTestApproach coll; public StartEvaluation(boolean fuzzy, boolean withDescription, boolean standardSearcher, boolean entitybased) { queryNumber = 0; StartupInformationLoader.initializeDisambiguationFramework(); dataGeneration = new CompleteCalbCSGeneration(); coll = new CollectiveTestApproach(fuzzy, standardSearcher, withDescription); this.resultProcessing = new TrecEvalResultProcessing(); } public void start() { StandardQueryDataObject object; int counter = 0; while ((object = dataGeneration.hasNext()) != null) { long time = System.currentTimeMillis(); workChain(object); counter++; System.out.println("Querytime: " + (System.currentTimeMillis() - time)); } } @SuppressWarnings("deprecation") @Option(name = "-area", usage = "Contextarea of description") public void setContextArea(String area) throws CmdLineException { try { contextArea = Integer.parseInt(area); } catch (NumberFormatException e) { throw new CmdLineException( "Not able to parse contextArea. Must be an int."); } } @SuppressWarnings("deprecation") @Option(name = "-r", usage = "Contextarea of description") public void setReturnType(String amountReturns) throws CmdLineException { try { returnAmount = Integer.parseInt(amountReturns); } catch (NumberFormatException e) { throw new CmdLineException( "Not able to parse contextArea. Must be an int."); } } private void workChain(StandardQueryDataObject object) { coll.search(object, queryNumber); List<EntityObject> l = object.getEnts(); List<TrecEvalResultObject> resultObjectList = new LinkedList<TrecEvalResultObject>(); for (int i = 0; i < l.size(); i++) { resultObjectList.add(new TrecEvalResultObject()); } coll.configureResultObject(resultObjectList, l); for (int i = 0; i < l.size(); i++) { resultProcessing.processResult(resultObjectList.get(i)); } queryNumber += resultObjectList.size(); } public static void main(String[] args) { // Zu Testzwecken StartEvaluation.calbcJSON = "/home/quh/Arbeitsfläche/Entpackung/Arbeitsfläche/Code_Data/Calbc/output.json"; StartEvaluation.qrelsFile = "/home/quh/Arbeitsfläche/Misc/Evaluation/qrels/qrels.test"; StartEvaluation.resultFile = "/home/quh/Arbeitsfläche/Misc/Evaluation/result/qrels.test"; StartEvaluation evaluation = new StartEvaluation(false, true, true, true); CmdLineParser parser = new CmdLineParser(evaluation); parser.setUsageWidth(80); try { parser.parseArgument(args); if (calbcJSON == null || qrelsFile == null || resultFile == null) { throw new CmdLineException(parser, "No argument is given"); } } catch (CmdLineException e) { System.err.println(e.getStackTrace()); System.err.println("java SampleMain [options...] arguments..."); parser.printUsage(System.err); System.err.println(); return; } evaluation.start(); } }