// Copyright 2013 Thomas Müller // This file is part of MarMoT, which is licensed under GPLv3. package marmot.morph.cmd; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import com.martiansoftware.jsap.FlaggedOption; import com.martiansoftware.jsap.JSAP; import com.martiansoftware.jsap.JSAPException; import com.martiansoftware.jsap.JSAPResult; import marmot.core.Evaluator; import marmot.core.Sequence; import marmot.core.Token; import marmot.morph.MorphEvaluator; import marmot.morph.MorphModel; import marmot.morph.MorphResult; import marmot.morph.MorphTagger; import marmot.morph.Word; import marmot.morph.io.SentenceReader; import marmot.util.FileUtils; public class Test { public static void main(String[] args) throws JSAPException { FlaggedOption opt; JSAP jsap = new JSAP(); opt = new FlaggedOption("file").setRequired(true).setLongFlag("file"); jsap.registerParameter(opt); opt = new FlaggedOption("model-file").setRequired(true).setLongFlag( "model-file"); jsap.registerParameter(opt); JSAPResult config = jsap.parse(args); if (!config.success()) { for (Iterator<?> errs = config.getErrorMessageIterator(); errs .hasNext();) { System.err.println("Error: " + errs.next()); } System.err.println("Usage: "); System.err.println(jsap.getUsage()); System.err.println(jsap.getHelp()); System.err.println(); System.exit(1); } MorphResult result = null; for (String modelfile : config.getString("model-file").split(",")) { MorphTagger tagger = FileUtils.loadFromFile(modelfile); MorphModel model = (MorphModel) tagger.getModel(); model.setVerbose(false); List<Sequence> test_sentences = new LinkedList<Sequence>(); for (Sequence sequence : new SentenceReader( config.getString("file"))) { for (Token token : sequence) { Word word = (Word) token; model.addIndexes(word, false); } test_sentences.add(sequence); } Evaluator evaluator = new MorphEvaluator(test_sentences); MorphResult current_result = (MorphResult) evaluator.eval(tagger); if (result == null) { result = current_result; } else { result.increment(current_result); } } System.out.print(result); } }