public abstract MaxLattice newMaxLattice (Transducer trans, Sequence inputSequence, Sequence outputSequence);
public abstract MaxLattice newMaxLattice (Transducer trans, Sequence inputSequence, Sequence outputSequence);
public abstract MaxLattice newMaxLattice (Transducer trans, Sequence inputSequence, Sequence outputSequence);
/** * 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 Sequence<String> getCoding(Word word, int expectedSylls) { Instance instance = new Instance(word, null, null, null); instance = crf.getInputPipe().instanceFrom(instance); Sequence inSeq = (Sequence) instance.getData(); List<Sequence<Object>> outSeqs = crf.getMaxLatticeFactory().newMaxLattice(crf, inSeq).bestOutputSequences(10); for (Sequence outSeq : outSeqs) { // see if the outSeq is legal and if so then return it if (isLegal(word.getValue(), outSeq, expectedSylls)) { return outSeq; } } // none legal? just return highest probability return (Sequence) outSeqs.get(0); }
public List<TagResult> tag(Alignment alignment, int nBest) { Instance instance = new Instance(alignment, null, null, null); instance = tduc.getInputPipe().instanceFrom(instance); Sequence inSeq = (Sequence) instance.getData(); List<Sequence<Object>> outSeqs = tduc.getMaxLatticeFactory().newMaxLattice(tduc, inSeq).bestOutputSequences(nBest); ArrayList<TagResult> results = Lists.newArrayListWithCapacity(outSeqs.size()); double z = tduc.getSumLatticeFactory().newSumLattice(tduc, inSeq).getTotalWeight(); for (Sequence<Object> outSeq : outSeqs) { double score = tduc.getSumLatticeFactory().newSumLattice(tduc, inSeq, outSeq).getTotalWeight(); results.add(makeTagResult(outSeq, score - z)); } return results; }
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); } }
@Override public List<Alignment> inferAlignments(Word x, int nBest) { Instance instance = new Instance(x.getValue(), null, null, null); instance = crf.getInputPipe().instanceFrom(instance); Sequence inSeq = (Sequence) instance.getData(); List<Sequence<Object>> outSeqs = crf.getMaxLatticeFactory().newMaxLattice(crf, inSeq).bestOutputSequences(nBest); ArrayList<Alignment> results = Lists.newArrayListWithCapacity(outSeqs.size()); double z = crf.getSumLatticeFactory().newSumLattice(crf, inSeq).getTotalWeight(); for (Sequence<Object> outSeq : outSeqs) { double score = crf.getSumLatticeFactory().newSumLattice(crf, inSeq, outSeq).getTotalWeight(); Alignment align = makeAlignment(x, outSeq, score - z); if (!resultsContain(align.getGraphones(), results)) { results.add(align); } } return results; }
/** * 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(); }
@Override public List<Alignment> inferAlignments(Word x, int nBest) { Instance instance = new Instance(x.getValue(), null, null, null); instance = crf.getInputPipe().instanceFrom(instance); Sequence inSeq = (Sequence) instance.getData(); List<Sequence<Object>> outSeqs = crf.getMaxLatticeFactory().newMaxLattice(crf, inSeq).bestOutputSequences(nBest); ArrayList<Alignment> results = Lists.newArrayListWithCapacity(outSeqs.size()); double z = crf.getSumLatticeFactory().newSumLattice(crf, inSeq).getTotalWeight(); for (Sequence<Object> outSeq : outSeqs) { double score = crf.getSumLatticeFactory().newSumLattice(crf, inSeq, outSeq).getTotalWeight(); List<Pair<String, String>> graphemes = makeGraphemes(x, outSeq); if (!resultsContain(graphemes, results)) { results.add(new Alignment(x, graphemes, score - z)); } } return results; }