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; }
@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; }
@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; }
if (iter == 0) { assertEquals(defaultLattice.getTotalWeight(), scalingLattice.getTotalWeight(), 0.0001);
if (iter == 0) { assertEquals(defaultLattice.getTotalWeight(), scalingLattice.getTotalWeight(), 0.0001);
assertTrue(lattice .getXiProbability(1, crf.getState(1), crf.getState(0)) == 0.0); assertTrue("Lattice weight = " + lattice.getTotalWeight(), lattice .getTotalWeight() == 4.0);
assertTrue(lattice .getXiProbability(1, crf.getState(1), crf.getState(0)) == 0.0); assertTrue("Lattice weight = " + lattice.getTotalWeight(), lattice .getTotalWeight() == 4.0);