public void testForwardBackward () { SumLatticeDefault lattice = new SumLatticeDefault (transducer, seq); System.out.println ("weight= "+lattice.getTotalWeight()); assertTrue (lattice.getTotalWeight() == seqWeight); }
public void testForwardBackward () { SumLatticeDefault lattice = new SumLatticeDefault (transducer, seq); System.out.println ("weight= "+lattice.getTotalWeight()); assertTrue (lattice.getTotalWeight() == seqWeight); }
/** Calculates the confidence in the tagging of a {@link Segment}. @return 0-1 confidence value. higher = more confident. */ public double estimateConfidenceFor (Segment segment, SumLatticeDefault cachedLattice) { Sequence predSequence = segment.getPredicted (); Sequence input = segment.getInput (); SumLatticeDefault lattice = (cachedLattice == null) ? new SumLatticeDefault (model, input) : cachedLattice; // constrained lattice SumLatticeDefault constrainedLattice = new SumLatticeConstrained (model, input, null, segment, predSequence); double latticeWeight = lattice.getTotalWeight (); double constrainedLatticeWeight = constrainedLattice.getTotalWeight (); double confidence = Math.exp (latticeWeight - constrainedLatticeWeight); //System.err.println ("confidence: " + confidence); return confidence; }
public void testEstimate () { transducer.setTrainable (true); SumLatticeDefault lattice = new SumLatticeDefault (transducer, seq); // used to have third argument: true double oldWeight = lattice.getTotalWeight (); transducer.estimate (); lattice = new SumLatticeDefault (transducer, seq); // used to have third argument: false double newWeight = lattice.getTotalWeight (); System.out.println ("oldWeight="+oldWeight+" newWeight="+newWeight); assertTrue (newWeight < oldWeight); }
/** Calculates the confidence in the tagging of a {@link Segment}. @return 0-1 confidence value. higher = more confident. */ public double estimateConfidenceFor (Segment segment, SumLatticeDefault cachedLattice) { Sequence predSequence = segment.getPredicted (); Sequence input = segment.getInput (); SumLatticeDefault lattice = (cachedLattice == null) ? new SumLatticeDefault (model, input) : cachedLattice; // constrained lattice SumLatticeDefault constrainedLattice = new SumLatticeConstrained (model, input, null, segment, predSequence); double latticeWeight = lattice.getTotalWeight (); double constrainedLatticeWeight = constrainedLattice.getTotalWeight (); double confidence = Math.exp (latticeWeight - constrainedLatticeWeight); //System.err.println ("confidence: " + confidence); return confidence; }
public void testEstimate () { transducer.setTrainable (true); SumLatticeDefault lattice = new SumLatticeDefault (transducer, seq); // used to have third argument: true double oldWeight = lattice.getTotalWeight (); transducer.estimate (); lattice = new SumLatticeDefault (transducer, seq); // used to have third argument: false double newWeight = lattice.getTotalWeight (); System.out.println ("oldWeight="+oldWeight+" newWeight="+newWeight); assertTrue (newWeight < oldWeight); }
/** Calculates the confidence in the tagging of a {@link Segment}. @return 0-1 confidence value. higher = more confident. */ public double estimateConfidenceFor (Segment segment, SumLatticeDefault cachedLattice) { Sequence predSequence = segment.getPredicted (); Sequence input = segment.getInput (); SumLatticeDefault lattice = (cachedLattice == null) ? new SumLatticeDefault (model, input) : cachedLattice; // constrained lattice SumLatticeDefault constrainedLattice = new SumLatticeConstrained (model, input, null, segment, predSequence); double latticeWeight = lattice.getTotalWeight (); double constrainedLatticeWeight = constrainedLattice.getTotalWeight (); double confidence = Math.exp (latticeWeight - constrainedLatticeWeight); //System.err.println ("confidence: " + confidence); return confidence; }
/** Calculates the confidence in the tagging of an {@link Instance}. */ public double estimateConfidenceFor (Instance instance, Object[] startTags, Object[] inTags) { SumLatticeDefault lattice = new SumLatticeDefault (model, (Sequence)instance.getData()); //ViterbiPathNBest bestViterbis = new ViterbiPathNBest (model, (Sequence)instance.getData(), 2); //double[] costs = bestViterbis.costNBest(); MaxLatticeDefault vlat = new MaxLatticeDefault (model, (Sequence)instance.getData(), null, 2); List<SequencePairAlignment<Object,Object>> alignments = vlat.bestOutputAlignments(2); double cost1 = alignments.get(0).getWeight(); double cost2 = alignments.get(1).getWeight(); double latticeCost = lattice.getTotalWeight(); return (Math.exp (-cost1 + latticeCost) / Math.exp(-cost2 + latticeCost)); } }
/** Calculates the confidence in the tagging of a {@link Instance}. */ public double estimateConfidenceFor (Instance instance, Object[] startTags, Object[] inTags) { SumLatticeDefault lattice = new SumLatticeDefault (model, (Sequence)instance.getData()); double[] costs = new double[N]; List<SequencePairAlignment<Object,Object>> as = new MaxLatticeDefault (model, (Sequence)instance.getData()).bestOutputAlignments(N); for (int i = 0; i < N; i++) costs[i] = as.get(i).getWeight(); double latticeCost = lattice.getTotalWeight(); double prFirstIsCorrect = Math.exp( latticeCost - costs[0] ); double prOtherIsCorrect = 0.0; for (int i=1; i < N; i++) prOtherIsCorrect += Math.exp( latticeCost - costs[i] ); return prFirstIsCorrect / prOtherIsCorrect; } }
/** Calculates the confidence in the tagging of a {@link Instance}. */ public double estimateConfidenceFor (Instance instance, Object[] startTags, Object[] inTags) { SumLatticeDefault lattice = new SumLatticeDefault (model, (Sequence)instance.getData()); double[] costs = new double[N]; List<SequencePairAlignment<Object,Object>> as = new MaxLatticeDefault (model, (Sequence)instance.getData()).bestOutputAlignments(N); for (int i = 0; i < N; i++) costs[i] = as.get(i).getWeight(); double latticeCost = lattice.getTotalWeight(); double prFirstIsCorrect = Math.exp( latticeCost - costs[0] ); double prOtherIsCorrect = 0.0; for (int i=1; i < N; i++) prOtherIsCorrect += Math.exp( latticeCost - costs[i] ); return prFirstIsCorrect / prOtherIsCorrect; } }
/** Calculates the confidence in the tagging of an {@link Instance}. */ public double estimateConfidenceFor (Instance instance, Object[] startTags, Object[] inTags) { SumLatticeDefault lattice = new SumLatticeDefault (model, (Sequence)instance.getData()); //ViterbiPathNBest bestViterbis = new ViterbiPathNBest (model, (Sequence)instance.getData(), 2); //double[] costs = bestViterbis.costNBest(); MaxLatticeDefault vlat = new MaxLatticeDefault (model, (Sequence)instance.getData(), null, 2); List<SequencePairAlignment<Object,Object>> alignments = vlat.bestOutputAlignments(2); double cost1 = alignments.get(0).getWeight(); double cost2 = alignments.get(1).getWeight(); double latticeCost = lattice.getTotalWeight(); return (Math.exp (-cost1 + latticeCost) / Math.exp(-cost2 + latticeCost)); } }
/** Calculates the confidence in the tagging of an {@link Instance}. */ public double estimateConfidenceFor (Instance instance, Object[] startTags, Object[] inTags) { SumLatticeDefault lattice = new SumLatticeDefault (model, (Sequence)instance.getData()); //ViterbiPathNBest bestViterbis = new ViterbiPathNBest (model, (Sequence)instance.getData(), 2); //double[] costs = bestViterbis.costNBest(); MaxLatticeDefault vlat = new MaxLatticeDefault (model, (Sequence)instance.getData(), null, 2); List<SequencePairAlignment<Object,Object>> alignments = vlat.bestOutputAlignments(2); double cost1 = alignments.get(0).getWeight(); double cost2 = alignments.get(1).getWeight(); double latticeCost = lattice.getTotalWeight(); return (Math.exp (-cost1 + latticeCost) / Math.exp(-cost2 + latticeCost)); } }
/** Calculates the confidence in the tagging of a {@link Instance}. */ public double estimateConfidenceFor (Instance instance, Object[] startTags, Object[] inTags) { SumLatticeDefault lattice = new SumLatticeDefault (model, (Sequence)instance.getData()); SequencePairAlignment viterbi = new MaxLatticeDefault (model, (Sequence)instance.getData()).bestOutputAlignment(); return Math.exp (viterbi.getWeight() - lattice.getTotalWeight()); } }
/** Calculates the confidence in the tagging of a {@link Instance}. */ public double estimateConfidenceFor (Instance instance, Object[] startTags, Object[] inTags) { SumLatticeDefault lattice = new SumLatticeDefault (model, (Sequence)instance.getData()); SequencePairAlignment viterbi = new MaxLatticeDefault (model, (Sequence)instance.getData()).bestOutputAlignment(); return Math.exp (viterbi.getWeight() - lattice.getTotalWeight()); } }
/** Calculates the confidence in the tagging of a {@link Instance}. */ public double estimateConfidenceFor (Instance instance, Object[] startTags, Object[] inTags) { SumLatticeDefault lattice = new SumLatticeDefault (model, (Sequence)instance.getData()); SequencePairAlignment viterbi = new MaxLatticeDefault (model, (Sequence)instance.getData()).bestOutputAlignment(); return Math.exp (viterbi.getWeight() - lattice.getTotalWeight()); } }
private double computeLikelihood(InstanceList trainingSample) { double loglik = 0.0; for (int i = 0; i < trainingSample.size(); i++) { Instance trainingInstance = trainingSample.get(i); FeatureVectorSequence fvs = (FeatureVectorSequence) trainingInstance .getData(); Sequence labelSequence = (Sequence) trainingInstance.getTarget(); loglik += new SumLatticeDefault(crf, fvs, labelSequence, null) .getTotalWeight(); loglik -= new SumLatticeDefault(crf, fvs, null, null) .getTotalWeight(); } constraints.zero(); expectations.zero(); return loglik; }
private double computeLikelihood(InstanceList trainingSample) { double loglik = 0.0; for (int i = 0; i < trainingSample.size(); i++) { Instance trainingInstance = trainingSample.get(i); FeatureVectorSequence fvs = (FeatureVectorSequence) trainingInstance .getData(); Sequence labelSequence = (Sequence) trainingInstance.getTarget(); loglik += new SumLatticeDefault(crf, fvs, labelSequence, null) .getTotalWeight(); loglik -= new SumLatticeDefault(crf, fvs, null, null) .getTotalWeight(); } constraints.zero(); expectations.zero(); return loglik; }
private double computeLikelihood(InstanceList trainingSample) { double loglik = 0.0; for (int i = 0; i < trainingSample.size(); i++) { Instance trainingInstance = trainingSample.get(i); FeatureVectorSequence fvs = (FeatureVectorSequence) trainingInstance .getData(); Sequence labelSequence = (Sequence) trainingInstance.getTarget(); loglik += new SumLatticeDefault(crf, fvs, labelSequence, null) .getTotalWeight(); loglik -= new SumLatticeDefault(crf, fvs, null, null) .getTotalWeight(); } constraints.zero(); expectations.zero(); return loglik; }
public void testIncrement () { transducer.setTrainable (true); SumLatticeDefault lattice = new SumLatticeDefault (transducer, seq); // used to have third argument: true double oldWeight = lattice.getTotalWeight (); System.out.println ("State 0 transition estimator"); Multinomial.Estimator est = ((FeatureTransducer.State)transducer.getState(0)).getTransitionEstimator(); est.print(); assertTrue (est.getCount(0) == 2.0); assertTrue (est.getCount(1) == 1.0); }
public void testIncrement () { transducer.setTrainable (true); SumLatticeDefault lattice = new SumLatticeDefault (transducer, seq); // used to have third argument: true double oldWeight = lattice.getTotalWeight (); System.out.println ("State 0 transition estimator"); Multinomial.Estimator est = ((FeatureTransducer.State)transducer.getState(0)).getTransitionEstimator(); est.print(); assertTrue (est.getCount(0) == 2.0); assertTrue (est.getCount(1) == 1.0); }