コード例 #1
0
        public override void run(string format, string[] args)
        {
            base.run(format, args);

            POSModel model = (new POSModelLoader()).load(@params.Model);

            POSTaggerEvaluationMonitor missclassifiedListener = null;

            if (@params.Misclassified.Value)
            {
                missclassifiedListener = new POSEvaluationErrorListener();
            }

            POSTaggerFineGrainedReportListener reportListener = null;
            File         reportFile         = @params.ReportOutputFile;
            OutputStream reportOutputStream = null;

            if (reportFile != null)
            {
                CmdLineUtil.checkOutputFile("Report Output File", reportFile);
                try
                {
                    reportOutputStream = new FileOutputStream(reportFile);
                    reportListener     = new POSTaggerFineGrainedReportListener(reportOutputStream);
                }
                catch (FileNotFoundException e)
                {
                    throw new TerminateToolException(-1, "IO error while creating POS Tagger fine-grained report file: " + e.Message);
                }
            }

            POSEvaluator evaluator = new POSEvaluator(new opennlp.tools.postag.POSTaggerME(model), missclassifiedListener, reportListener);

            Console.Write("Evaluating ... ");
            try
            {
                evaluator.evaluate(sampleStream);
            }
            catch (IOException e)
            {
                Console.Error.WriteLine("failed");
                throw new TerminateToolException(-1, "IO error while reading test data: " + e.Message, e);
            }
            finally
            {
                try
                {
                    sampleStream.close();
                }
                catch (IOException)
                {
                    // sorry that this can fail
                }
            }

            Console.WriteLine("done");

            if (reportListener != null)
            {
                Console.WriteLine("Writing fine-grained report to " + @params.ReportOutputFile.AbsolutePath);
                reportListener.writeReport();

                try
                {
                    // TODO: is it a problem to close the stream now?
                    reportOutputStream.close();
                }
                catch (IOException)
                {
                    // nothing to do
                }
            }

            Console.WriteLine();

            Console.WriteLine("Accuracy: " + evaluator.WordAccuracy);
        }
コード例 #2
0
        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);
            }

            POSTaggerEvaluationMonitor missclassifiedListener = null;

            if (@params.Misclassified.Value)
            {
                missclassifiedListener = new POSEvaluationErrorListener();
            }

            POSTaggerFineGrainedReportListener reportListener = null;
            Jfile        reportFile         = @params.ReportOutputFile;
            OutputStream reportOutputStream = null;

            if (reportFile != null)
            {
                CmdLineUtil.checkOutputFile("Report Output File", reportFile);
                try
                {
                    reportOutputStream = new FileOutputStream(reportFile);
                    reportListener     = new POSTaggerFineGrainedReportListener(reportOutputStream);
                }
                catch (FileNotFoundException e)
                {
                    throw new TerminateToolException(-1, "IO error while creating POS Tagger fine-grained report file: " + e.Message);
                }
            }

            POSTaggerCrossValidator validator;

            try
            {
                validator = new POSTaggerCrossValidator(@params.Lang, mlParams, @params.Dict, @params.Ngram, @params.TagDictCutoff, @params.Factory, missclassifiedListener, reportListener);

                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
                }
            }

            Console.WriteLine("done");

            if (reportListener != null)
            {
                Console.WriteLine("Writing fine-grained report to " + @params.ReportOutputFile.AbsolutePath);
                reportListener.writeReport();

                try
                {
                    // TODO: is it a problem to close the stream now?
                    reportOutputStream.close();
                }
                catch (IOException)
                {
                    // nothing to do
                }
            }

            Console.WriteLine();

            Console.WriteLine("Accuracy: " + validator.WordAccuracy);
        }
コード例 #3
0
 public Stats(POSTaggerFineGrainedReportListener outerInstance)
 {
     this.outerInstance = outerInstance;
 }