/** * Converts the given sequence into another sequence according to this transducer. * For exmaple, probabilistic transducer may do something like Viterbi here. * Subclasses of transducer may specify that they only accept special kinds of sequence. * @param input Input sequence * @return Sequence output by this transudcer */ public Sequence transduce (Sequence input) { return maxLatticeFactory.newMaxLattice(this, (Sequence)input).bestOutputSequence(); }
/** * Converts the given sequence into another sequence according to this transducer. * For exmaple, probabilistic transducer may do something like Viterbi here. * Subclasses of transducer may specify that they only accept special kinds of sequence. * @param input Input sequence * @return Sequence output by this transudcer */ public Sequence transduce (Sequence input) { return maxLatticeFactory.newMaxLattice(this, (Sequence)input).bestOutputSequence(); }
/** * Converts the given sequence into another sequence according to this transducer. * For exmaple, probabilistic transducer may do something like Viterbi here. * Subclasses of transducer may specify that they only accept special kinds of sequence. * @param input Input sequence * @return Sequence output by this transudcer */ public Sequence transduce (Sequence input) { return maxLatticeFactory.newMaxLattice(this, (Sequence)input).bestOutputSequence(); }
private static void outputLatticeRows (PrintWriter out, MaxLattice lattice, int start, int end) { DecimalFormat f = new DecimalFormat ("0.##"); Transducer ducer = lattice.getTransducer (); int max = Math.min (numMaxViterbi, ducer.numStates()); List<Sequence<Transducer.State>> stateSequences = lattice.bestStateSequences(max); for (int k = 0; k < max; k++) { out.println (" <tr class=\"delta\">"); out.println (" <td class=\"label\">δ rank "+k+"</td>"); for (int ip = start; ip < end; ip++) { Transducer.State state = stateSequences.get(k).get(ip+1); if (state.getName().equals (lattice.bestOutputSequence().get(ip))) { out.print ("<td class=\"viterbi\">"); } else { out.print ("<td>"); } out.print (state.getName()+"<br />"+f.format (-lattice.getDelta (ip+1, state.getIndex ()))+"</td>"); } out.println ("</tr>"); } }
private static void outputLatticeRows (PrintWriter out, MaxLattice lattice, int start, int end) { DecimalFormat f = new DecimalFormat ("0.##"); Transducer ducer = lattice.getTransducer (); int max = Math.min (numMaxViterbi, ducer.numStates()); List<Sequence<Transducer.State>> stateSequences = lattice.bestStateSequences(max); for (int k = 0; k < max; k++) { out.println (" <tr class=\"delta\">"); out.println (" <td class=\"label\">δ rank "+k+"</td>"); for (int ip = start; ip < end; ip++) { Transducer.State state = stateSequences.get(k).get(ip+1); if (state.getName().equals (lattice.bestOutputSequence().get(ip))) { out.print ("<td class=\"viterbi\">"); } else { out.print ("<td>"); } out.print (state.getName()+"<br />"+f.format (-lattice.getDelta (ip+1, state.getIndex ()))+"</td>"); } out.println ("</tr>"); } }
private static void outputLatticeRows (PrintWriter out, MaxLattice lattice, int start, int end) { DecimalFormat f = new DecimalFormat ("0.##"); Transducer ducer = lattice.getTransducer (); int max = Math.min (numMaxViterbi, ducer.numStates()); List<Sequence<Transducer.State>> stateSequences = lattice.bestStateSequences(max); for (int k = 0; k < max; k++) { out.println (" <tr class=\"delta\">"); out.println (" <td class=\"label\">δ rank "+k+"</td>"); for (int ip = start; ip < end; ip++) { Transducer.State state = stateSequences.get(k).get(ip+1); if (state.getName().equals (lattice.bestOutputSequence().get(ip))) { out.print ("<td class=\"viterbi\">"); } else { out.print ("<td>"); } out.print (state.getName()+"<br />"+f.format (-lattice.getDelta (ip+1, state.getIndex ()))+"</td>"); } out.println ("</tr>"); } }
public Set<Integer> tagSyllStarts(List<String> wordUnigrams) { Instance instance = new Instance(wordUnigrams, null, null, null); instance = crf.getInputPipe().instanceFrom(instance); Sequence inSeq = (Sequence) instance.getData(); Sequence<Object> outSeqs = crf.getMaxLatticeFactory().newMaxLattice(crf, inSeq).bestOutputSequence(); return SyllTagTrainer.startsFromGraphemeSyllEnding(outSeqs); } }
public Set<Integer> tagSyllStarts(List<String> wordUnigrams) { Instance instance = new Instance(wordUnigrams, null, null, null); instance = crf.getInputPipe().instanceFrom(instance); Sequence inSeq = (Sequence) instance.getData(); Sequence<Object> outSeqs = crf.getMaxLatticeFactory().newMaxLattice(crf, inSeq).bestOutputSequence(); return SyllTagTrainer.startsFromGraphemeSyllEnding(outSeqs); } }
/** * Runs inference across all the instances and returns the average token * accuracy. */ public double averageTokenAccuracy (InstanceList ilist) { double accuracy = 0; for (int i = 0; i < ilist.size(); i++) { Instance instance = ilist.get(i); Sequence input = (Sequence) instance.getData(); Sequence output = (Sequence) instance.getTarget(); assert (input.size() == output.size()); Sequence predicted = maxLatticeFactory.newMaxLattice(this, input).bestOutputSequence(); double pathAccuracy = Sequences.elementwiseAccuracy(output, predicted); accuracy += pathAccuracy; logger.fine ("Transducer path accuracy = "+pathAccuracy); } return accuracy/ilist.size(); }
/** * Runs inference across all the instances and returns the average token * accuracy. */ public double averageTokenAccuracy (InstanceList ilist) { double accuracy = 0; for (int i = 0; i < ilist.size(); i++) { Instance instance = ilist.get(i); Sequence input = (Sequence) instance.getData(); Sequence output = (Sequence) instance.getTarget(); assert (input.size() == output.size()); Sequence predicted = maxLatticeFactory.newMaxLattice(this, input).bestOutputSequence(); double pathAccuracy = Sequences.elementwiseAccuracy(output, predicted); accuracy += pathAccuracy; logger.fine ("Transducer path accuracy = "+pathAccuracy); } return accuracy/ilist.size(); }
/** * Runs inference across all the instances and returns the average token * accuracy. */ public double averageTokenAccuracy (InstanceList ilist) { double accuracy = 0; for (int i = 0; i < ilist.size(); i++) { Instance instance = ilist.get(i); Sequence input = (Sequence) instance.getData(); Sequence output = (Sequence) instance.getTarget(); assert (input.size() == output.size()); Sequence predicted = maxLatticeFactory.newMaxLattice(this, input).bestOutputSequence(); double pathAccuracy = Sequences.elementwiseAccuracy(output, predicted); accuracy += pathAccuracy; logger.fine ("Transducer path accuracy = "+pathAccuracy); } return accuracy/ilist.size(); }
private static ExtorInfo infoForDoc (String doc, String desc, String idx, DocumentExtraction docextr, CRFExtractor extor, boolean showLattice) { // Instance c2 = new Instance (doc, null, null, null, extor.getTokenizationPipe ()); // TokenSequence input = (TokenSequence) c2.getData (); TokenSequence input = (TokenSequence) docextr.getInput (); LabelSequence target = docextr.getTarget (); Sequence predicted = docextr.getPredictedLabels (); ExtorInfo info = new ExtorInfo (input, predicted, target, desc, idx); if (showLattice == true) { CRF crf = extor.getCrf(); // xxx perhaps the next two lines could be a transducer method??? Instance carrier = extor.getFeaturePipe().pipe(new Instance (input, null, null, null)); info.fvs = (FeatureVectorSequence) carrier.getData (); info.lattice = new MaxLatticeDefault (crf, (Sequence) carrier.getData(), null); info.bestStates = info.lattice.bestOutputSequence(); } return info; }
private static ExtorInfo infoForDoc (String doc, String desc, String idx, DocumentExtraction docextr, CRFExtractor extor, boolean showLattice) { // Instance c2 = new Instance (doc, null, null, null, extor.getTokenizationPipe ()); // TokenSequence input = (TokenSequence) c2.getData (); TokenSequence input = (TokenSequence) docextr.getInput (); LabelSequence target = docextr.getTarget (); Sequence predicted = docextr.getPredictedLabels (); ExtorInfo info = new ExtorInfo (input, predicted, target, desc, idx); if (showLattice == true) { CRF crf = extor.getCrf(); // xxx perhaps the next two lines could be a transducer method??? Instance carrier = extor.getFeaturePipe().pipe(new Instance (input, null, null, null)); info.fvs = (FeatureVectorSequence) carrier.getData (); info.lattice = new MaxLatticeDefault (crf, (Sequence) carrier.getData(), null); info.bestStates = info.lattice.bestOutputSequence(); } return info; }
private static ExtorInfo infoForDoc (String doc, String desc, String idx, DocumentExtraction docextr, CRFExtractor extor, boolean showLattice) { // Instance c2 = new Instance (doc, null, null, null, extor.getTokenizationPipe ()); // TokenSequence input = (TokenSequence) c2.getData (); TokenSequence input = (TokenSequence) docextr.getInput (); LabelSequence target = docextr.getTarget (); Sequence predicted = docextr.getPredictedLabels (); ExtorInfo info = new ExtorInfo (input, predicted, target, desc, idx); if (showLattice == true) { CRF crf = extor.getCrf(); // xxx perhaps the next two lines could be a transducer method??? Instance carrier = extor.getFeaturePipe().pipe(new Instance (input, null, null, null)); info.fvs = (FeatureVectorSequence) carrier.getData (); info.lattice = new MaxLatticeDefault (crf, (Sequence) carrier.getData(), null); info.bestStates = info.lattice.bestOutputSequence(); } return info; }