/** * Apply a transducer to an input sequence to produce the k highest-scoring * output sequences. * * @param model the <code>Transducer</code> * @param input the input sequence * @param k the number of answers to return * @return array of the k highest-scoring output sequences */ public static Sequence[] apply(Transducer model, Sequence input, int k) { Sequence[] answers; if (k == 1) { answers = new Sequence[1]; answers[0] = model.transduce (input); } else { MaxLatticeDefault lattice = new MaxLatticeDefault (model, input, null, cacheSizeOption.value()); answers = lattice.bestOutputSequences(k).toArray(new Sequence[0]); } return answers; }
/** * Apply a transducer to an input sequence to produce the k highest-scoring * output sequences. * * @param model the <code>Transducer</code> * @param input the input sequence * @param k the number of answers to return * @return array of the k highest-scoring output sequences */ public static Sequence[] apply(Transducer model, Sequence input, int k) { Sequence[] answers; if (k == 1) { answers = new Sequence[1]; answers[0] = model.transduce (input); } else { MaxLatticeDefault lattice = new MaxLatticeDefault (model, input, null, cacheSizeOption.value()); answers = lattice.bestOutputSequences(k).toArray(new Sequence[0]); } return answers; }
/** * Apply a transducer to an input sequence to produce the k highest-scoring * output sequences. * * @param model the <code>Transducer</code> * @param input the input sequence * @param k the number of answers to return * @return array of the k highest-scoring output sequences */ public static Sequence[] apply(Transducer model, Sequence input, int k) { Sequence[] answers; if (k == 1) { answers = new Sequence[1]; answers[0] = model.transduce (input); } else { MaxLatticeDefault lattice = new MaxLatticeDefault (model, input, null, cacheSizeOption.value()); answers = lattice.bestOutputSequences(k).toArray(new Sequence[0]); } return answers; }
/** * Apply a transducer to an input sequence to produce the k highest-scoring * output sequences. * * @param model the <code>Transducer</code> * @param input the input sequence * @param k the number of answers to return * @return array of the k highest-scoring output sequences */ public static Sequence[] apply(Transducer model, Sequence input, int k) { Sequence[] answers; if (k == 1) { answers = new Sequence[1]; answers[0] = model.transduce (input); } else { MaxLatticeDefault lattice = new MaxLatticeDefault (model, input, null, cacheSizeOption.value()); answers = lattice.bestOutputSequences(k).toArray(new Sequence[0]); } return answers; }
/** * Apply a transducer to an input sequence to produce the k highest-scoring * output sequences. * * @param model the <code>Transducer</code> * @param input the input sequence * @param k the number of answers to return * @return array of the k highest-scoring output sequences */ public static Sequence[] apply(Transducer model, Sequence input, int k) { Sequence[] answers; if (k == 1) { answers = new Sequence[1]; answers[0] = model.transduce (input); } else { MaxLatticeDefault lattice = new MaxLatticeDefault (model, input, null, cacheSizeOption.value()); answers = lattice.bestOutputSequences(k).toArray(new Sequence[0]); } return answers; }
/** * Apply a transducer to an input sequence to produce the k highest-scoring * output sequences. * * @param model the <code>Transducer</code> * @param input the input sequence * @param k the number of answers to return * @return array of the k highest-scoring output sequences */ public static Sequence[] apply(Transducer model, Sequence input, int k) { Sequence[] answers; if (k == 1) { answers = new Sequence[1]; answers[0] = model.transduce (input); } else { MaxLatticeDefault lattice = new MaxLatticeDefault (model, input, null, cacheSizeOption.value()); answers = lattice.bestOutputSequences(k).toArray(new Sequence[0]); } return answers; }
Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); Sequence predOutput = model.transduce (input); assert (predOutput.size() == trueOutput.size()); for (int j = 0; j < trueOutput.size(); j++) {
/** * This method classifies several instances at once * * @param features * a list of lists of features - each list in the list represents one instance to be * classified. The list should correspond to some logical sequence of instances to be * classified (e.g. tokens in a sentence or lines in a document) that corresponds to the * model that has been built for this classifier. */ public List<String> classify(List<List<Feature>> features) throws CleartkProcessingException { String[][] featureStringArray = toStrings(features); Pipe pipe = transducer.getInputPipe(); Instance instance = new Instance(featureStringArray, null, null, null); instance = pipe.instanceFrom(instance); Sequence<?> data = (Sequence<?>) instance.getData(); Sequence<?> untypedSequence = transducer.transduce(data); Sequence<String> sequence = ReflectionUtil.uncheckedCast(untypedSequence); List<String> returnValues = new ArrayList<String>(); for (int i = 0; i < sequence.size(); i++) { String encodedOutcome = sequence.get(i); returnValues.add(outcomeEncoder.decode(encodedOutcome)); } return returnValues; }
/** * This method classifies several instances at once * * @param features * a list of lists of features - each list in the list represents one instance to be * classified. The list should correspond to some logical sequence of instances to be * classified (e.g. tokens in a sentence or lines in a document) that corresponds to the * model that has been built for this classifier. */ public List<String> classify(List<List<Feature>> features) throws CleartkProcessingException { String[][] featureStringArray = toStrings(features); Pipe pipe = transducer.getInputPipe(); Instance instance = new Instance(featureStringArray, null, null, null); instance = pipe.instanceFrom(instance); Sequence<?> data = (Sequence<?>) instance.getData(); Sequence<?> untypedSequence = transducer.transduce(data); Sequence<String> sequence = ReflectionUtil.uncheckedCast(untypedSequence); List<String> returnValues = new ArrayList<String>(); for (int i = 0; i < sequence.size(); i++) { String encodedOutcome = sequence.get(i); returnValues.add(outcomeEncoder.decode(encodedOutcome)); } return returnValues; }
Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); Sequence predOutput = model.transduce (input); assert (predOutput.size() == trueOutput.size()); for (int j = 0; j < trueOutput.size(); j++) {
Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); Sequence predOutput = model.transduce (input); assert (predOutput.size() == trueOutput.size()); for (int j = 0; j < trueOutput.size(); j++) {
public void evaluateInstanceList (TransducerTrainer trainer, InstanceList instances, String description) { int numCorrectTokens; int totalTokens; Transducer transducer = trainer.getTransducer(); totalTokens = numCorrectTokens = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); //System.err.println ("TokenAccuracyEvaluator "+i+" length="+input.size()); Sequence predOutput = transducer.transduce (input); assert (predOutput.size() == trueOutput.size()); for (int j = 0; j < trueOutput.size(); j++) { totalTokens++; if (trueOutput.get(j).equals(predOutput.get(j))) numCorrectTokens++; } //System.err.println ("TokenAccuracyEvaluator "+i+" numCorrectTokens="+numCorrectTokens+" totalTokens="+totalTokens+" accuracy="+((double)numCorrectTokens)/totalTokens); } double acc = ((double)numCorrectTokens)/totalTokens; //System.err.println ("TokenAccuracyEvaluator accuracy="+acc); accuracy.put(description, acc); logger.info (description +" accuracy="+acc); }
public void evaluateInstanceList (TransducerTrainer tt, InstanceList data, String description) { int correct = 0; for (int i = 0; i < data.size(); i++) { Instance instance = data.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); Sequence predOutput = tt.getTransducer().transduce (input); assert (predOutput.size() == trueOutput.size()); if (sequencesMatch (trueOutput, predOutput)) correct++; } double acc = ((double)correct) / data.size(); accuracy.put(description, acc); logger.info (description+" Num instances = "+data.size()+" Num correct = "+correct+" Per-instance accuracy = "+acc); }
public void evaluateInstanceList (TransducerTrainer tt, InstanceList data, String description) { int correct = 0; for (int i = 0; i < data.size(); i++) { Instance instance = data.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); Sequence predOutput = tt.getTransducer().transduce (input); assert (predOutput.size() == trueOutput.size()); if (sequencesMatch (trueOutput, predOutput)) correct++; } double acc = ((double)correct) / data.size(); accuracy.put(description, acc); logger.info (description+" Num instances = "+data.size()+" Num correct = "+correct+" Per-instance accuracy = "+acc); }
public void evaluateInstanceList (TransducerTrainer trainer, InstanceList instances, String description) { int numCorrectTokens; int totalTokens; Transducer transducer = trainer.getTransducer(); totalTokens = numCorrectTokens = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); //System.err.println ("TokenAccuracyEvaluator "+i+" length="+input.size()); Sequence predOutput = transducer.transduce (input); assert (predOutput.size() == trueOutput.size()); for (int j = 0; j < trueOutput.size(); j++) { totalTokens++; if (trueOutput.get(j).equals(predOutput.get(j))) numCorrectTokens++; } //System.err.println ("TokenAccuracyEvaluator "+i+" numCorrectTokens="+numCorrectTokens+" totalTokens="+totalTokens+" accuracy="+((double)numCorrectTokens)/totalTokens); } double acc = ((double)numCorrectTokens)/totalTokens; //System.err.println ("TokenAccuracyEvaluator accuracy="+acc); accuracy.put(description, acc); logger.info (description +" accuracy="+acc); }
public void evaluateInstanceList (TransducerTrainer trainer, InstanceList instances, String description) { int numCorrectTokens; int totalTokens; Transducer transducer = trainer.getTransducer(); totalTokens = numCorrectTokens = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); //System.err.println ("TokenAccuracyEvaluator "+i+" length="+input.size()); Sequence predOutput = transducer.transduce (input); assert (predOutput.size() == trueOutput.size()); for (int j = 0; j < trueOutput.size(); j++) { totalTokens++; if (trueOutput.get(j).equals(predOutput.get(j))) numCorrectTokens++; } //System.err.println ("TokenAccuracyEvaluator "+i+" numCorrectTokens="+numCorrectTokens+" totalTokens="+totalTokens+" accuracy="+((double)numCorrectTokens)/totalTokens); } double acc = ((double)numCorrectTokens)/totalTokens; //System.err.println ("TokenAccuracyEvaluator accuracy="+acc); accuracy.put(description, acc); logger.info (description +" accuracy="+acc); }
public void evaluateInstanceList (TransducerTrainer tt, InstanceList data, String description) { int correct = 0; for (int i = 0; i < data.size(); i++) { Instance instance = data.get(i); Sequence input = (Sequence) instance.getData(); Sequence trueOutput = (Sequence) instance.getTarget(); assert (input.size() == trueOutput.size()); Sequence predOutput = tt.getTransducer().transduce (input); assert (predOutput.size() == trueOutput.size()); if (sequencesMatch (trueOutput, predOutput)) correct++; } double acc = ((double)correct) / data.size(); accuracy.put(description, acc); logger.info (description+" Num instances = "+data.size()+" Num correct = "+correct+" Per-instance accuracy = "+acc); }
@Override public void evaluateInstanceList(TransducerTrainer transducer, InstanceList instances, String description) { double[] predCounts = new double[instances.getTargetAlphabet().size()]; double[] trueCounts = new double[instances.getTargetAlphabet().size()]; int total = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence trueOutput = (Sequence) instance.getTarget(); Sequence predOutput = (Sequence) transducer.getTransducer().transduce((Sequence)instance.getData()); for (int j = 0; j < predOutput.size(); j++) { total++; predCounts[instances.getTargetAlphabet().lookupIndex(predOutput.get(j))]++; trueCounts[instances.getTargetAlphabet().lookupIndex(trueOutput.get(j))]++; } } NumberFormat formatter = NumberFormat.getInstance(); formatter.setMaximumFractionDigits(4); for (int li = 0; li < predCounts.length; li++) { double ppred = predCounts[li] / total; double ptrue = trueCounts[li] / total; logger.info(description + " " + instances.getTargetAlphabet().lookupObject(li) + " predicted: " + formatter.format(ppred) + " - true: " + formatter.format(ptrue)); } } }
@Override public void evaluateInstanceList(TransducerTrainer transducer, InstanceList instances, String description) { double[] predCounts = new double[instances.getTargetAlphabet().size()]; double[] trueCounts = new double[instances.getTargetAlphabet().size()]; int total = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence trueOutput = (Sequence) instance.getTarget(); Sequence predOutput = (Sequence) transducer.getTransducer().transduce((Sequence)instance.getData()); for (int j = 0; j < predOutput.size(); j++) { total++; predCounts[instances.getTargetAlphabet().lookupIndex(predOutput.get(j))]++; trueCounts[instances.getTargetAlphabet().lookupIndex(trueOutput.get(j))]++; } } NumberFormat formatter = NumberFormat.getInstance(); formatter.setMaximumFractionDigits(4); for (int li = 0; li < predCounts.length; li++) { double ppred = predCounts[li] / total; double ptrue = trueCounts[li] / total; logger.info(description + " " + instances.getTargetAlphabet().lookupObject(li) + " predicted: " + formatter.format(ppred) + " - true: " + formatter.format(ptrue)); } } }
@Override public void evaluateInstanceList(TransducerTrainer transducer, InstanceList instances, String description) { double[] predCounts = new double[instances.getTargetAlphabet().size()]; double[] trueCounts = new double[instances.getTargetAlphabet().size()]; int total = 0; for (int i = 0; i < instances.size(); i++) { Instance instance = instances.get(i); Sequence trueOutput = (Sequence) instance.getTarget(); Sequence predOutput = (Sequence) transducer.getTransducer().transduce((Sequence)instance.getData()); for (int j = 0; j < predOutput.size(); j++) { total++; predCounts[instances.getTargetAlphabet().lookupIndex(predOutput.get(j))]++; trueCounts[instances.getTargetAlphabet().lookupIndex(trueOutput.get(j))]++; } } NumberFormat formatter = NumberFormat.getInstance(); formatter.setMaximumFractionDigits(4); for (int li = 0; li < predCounts.length; li++) { double ppred = predCounts[li] / total; double ptrue = trueCounts[li] / total; logger.info(description + " " + instances.getTargetAlphabet().lookupObject(li) + " predicted: " + formatter.format(ppred) + " - true: " + formatter.format(ptrue)); } } }