List of usage examples for com.google.common.collect MinMaxPriorityQueue clear
@Override public void clear()
From source file:org.onebusaway.nyc.vehicle_tracking.impl.inference.ObservationCache.java
public void purge(AgencyAndId vehicleId) { final MinMaxPriorityQueue<ObservationContents> contentsCache = _contentsByVehicleId.getUnchecked(vehicleId); if (contentsCache != null) { contentsCache.clear(); }// w w w . jav a 2 s. c o m }
From source file:com.davidbracewell.ml.sequence.decoder.LinearViterbi.java
@Override public double[] decode(SequenceModel<V> raw, Sequence<V> sequence) { LinearSequenceModel<V> model = Val.of(raw).cast(); final Feature classFeature = model.getTargetFeature(); final int numStates = classFeature.alphabetSize(); MinMaxPriorityQueue<State> beam = MinMaxPriorityQueue.maximumSize(beamSize).create(); ClassificationResult result = model.classifyItem(0, sequence, new double[0]); for (int ci = 0; ci < numStates; ci++) { if (isValidStartTag(classFeature.valueAtIndex(ci)) && isValidTag(classFeature.valueAtIndex(ci), sequence.getData(0))) { beam.add(new State(Math.log(result.getConfidence(ci)), ci, null, 0)); }//from www. j a v a 2 s .c o m } MinMaxPriorityQueue<State> tempBeam = MinMaxPriorityQueue.maximumSize(beamSize).create(); for (int i = 1; i < sequence.length(); i++) { while (!beam.isEmpty()) { // go through all the previous states State state = beam.removeFirst(); String previousTag = classFeature.valueAtIndex(state.tag); result = model.classifyItem(i, sequence, state.labels()); for (int ci = 0; ci < numStates; ci++) { if (isValidTransition(previousTag, classFeature.valueAtIndex(ci)) && ((i + 1 < sequence.length()) || isValidEndTag(classFeature.valueAtIndex(ci))) && isValidTag(classFeature.valueAtIndex(ci), sequence.getData(i))) { tempBeam.add( new State(state.probability + Math.log(result.getConfidence(ci)), ci, state, i)); } } } beam.addAll(tempBeam); tempBeam.clear(); } return beam.remove().labels(); }
From source file:com.davidbracewell.ml.sequence.decoder.HMMViterbi.java
@Override public double[] decode(SequenceModel<V> raw, Sequence<V> seq) { FirstOrderHMM<V> model = Val.of(raw).cast(); int len = seq.length(); Feature classFeature = model.getTargetFeature(); int NC = classFeature.alphabetSize(); MinMaxPriorityQueue<State> beam = MinMaxPriorityQueue.maximumSize(beamSize).create(); MinMaxPriorityQueue<State> tempBeam = MinMaxPriorityQueue.maximumSize(beamSize).create(); Instance firstInstance = seq.generateInstance(0, new double[] { 0 }); for (int ci = 0; ci < NC; ci++) { if (isValidStartTag(classFeature.valueAtIndex(ci)) && isValidTag(classFeature.valueAtIndex(ci), seq.getData(0))) { beam.add(new State(model.pi(ci) + model.beta(ci, firstInstance), ci, null)); }/*from w w w .j a v a 2 s . co m*/ } for (int i = 1; i < len; i++) { for (int ci = 0; ci < NC; ci++) { String thisTag = classFeature.valueAtIndex(ci); if (!isValidTag(thisTag, seq.getData(i))) { continue; } if ((i + 1 < seq.length()) || isValidEndTag(thisTag)) { double pInst = model.beta(ci, seq.generateInstance(i, new double[] { ci })); for (State state : beam) { if (isValidTransition(classFeature.valueAtIndex(state.tag), thisTag)) { tempBeam.add(new State(state.probability + //previous probability model.alpha(state.tag, ci) + //transition probability pInst, //probability of the vector given the tag ci, state)); } } } } MinMaxPriorityQueue<State> t = beam; beam = tempBeam; tempBeam = t; tempBeam.clear(); } State max = beam.remove(); double[] prediction = new double[len]; for (int i = len - 1; i >= 0; i--) { prediction[i] = max.tag; max = max.prev; } return prediction; }