Example usage for com.google.common.collect MinMaxPriorityQueue clear

List of usage examples for com.google.common.collect MinMaxPriorityQueue clear

Introduction

In this page you can find the example usage for com.google.common.collect MinMaxPriorityQueue clear.

Prototype

@Override
    public void clear() 

Source Link

Usage

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;
}