public override void run(string format, string[] args) { base.run(format, args); mlParams = CmdLineUtil.loadTrainingParameters(@params.Params, false); if (mlParams == null) { mlParams = ModelUtil.createTrainingParameters(@params.Iterations.Value, @params.Cutoff.Value); } IList <EvaluationMonitor <ChunkSample> > listeners = new LinkedList <EvaluationMonitor <ChunkSample> >(); ChunkerDetailedFMeasureListener detailedFMeasureListener = null; if (@params.Misclassified.Value) { listeners.Add(new ChunkEvaluationErrorListener()); } if (@params.DetailedF.Value) { detailedFMeasureListener = new ChunkerDetailedFMeasureListener(); listeners.Add(detailedFMeasureListener); } ChunkerCrossValidator validator; try { ChunkerFactory chunkerFactory = ChunkerFactory.create(@params.Factory); validator = new ChunkerCrossValidator(@params.Lang, mlParams, chunkerFactory, listeners.ToArray()); validator.evaluate(sampleStream, @params.Folds.Value); } catch (IOException e) { throw new TerminateToolException(-1, "IO error while reading training data or indexing data: " + e.Message, e); } finally { try { sampleStream.close(); } catch (IOException) { // sorry that this can fail } } if (detailedFMeasureListener == null) { FMeasure result = validator.FMeasure; Console.WriteLine(result.ToString()); } else { Console.WriteLine(detailedFMeasureListener.ToString()); } }
public override void run(string format, string[] args) { base.run(format, args); ChunkerModel model = (new ChunkerModelLoader()).load(@params.Model); IList <EvaluationMonitor <ChunkSample> > listeners = new LinkedList <EvaluationMonitor <ChunkSample> >(); ChunkerDetailedFMeasureListener detailedFMeasureListener = null; if (@params.Misclassified.Value) { listeners.Add(new ChunkEvaluationErrorListener()); } if (@params.DetailedF.Value) { detailedFMeasureListener = new ChunkerDetailedFMeasureListener(); listeners.Add(detailedFMeasureListener); } ChunkerEvaluator evaluator = new ChunkerEvaluator(new ChunkerME(model, ChunkerME.DEFAULT_BEAM_SIZE), listeners.ToArray()); PerformanceMonitor monitor = new PerformanceMonitor("sent"); ObjectStream <ChunkSample> measuredSampleStream = new ObjectStreamAnonymousInnerClassHelper(this, monitor); monitor.startAndPrintThroughput(); try { evaluator.evaluate(measuredSampleStream); } catch (IOException e) { Console.Error.WriteLine("failed"); throw new TerminateToolException(-1, "IO error while reading test data: " + e.Message, e); } finally { try { measuredSampleStream.close(); } catch (IOException) { // sorry that this can fail } } monitor.stopAndPrintFinalResult(); Console.WriteLine(); if (detailedFMeasureListener == null) { Console.WriteLine(evaluator.FMeasure); } else { Console.WriteLine(detailedFMeasureListener.ToString()); } }