private void UpdateStateQueue( MinPriorityDecoderQueue<DecoderState> minPriorityDecoderQueue, DecoderState curState, DecoderState prevState, ScoredPhrasePairForSentence phrase, HashMap<DecoderState, BackPointerElement> backPointers) { BackPointerElement elem = backPointers.get(curState); if (elem == null || elem.getState().getScore() < curState.getScore()) { minPriorityDecoderQueue.insert(curState, curState.getScore()); if (elem == null) { backPointers.put(curState, new BackPointerElement(prevState, phrase)); } else { elem.setState(prevState); elem.setPhrase(phrase); } } }
private void initializeStateQueues( List<MinPriorityDecoderQueue<DecoderState>> decoderStateQueues, int sentenceLength) { DecoderState startState = getStartState(sentenceLength); for (int i = 0; i <= sentenceLength; ++i) { MinPriorityDecoderQueue<DecoderState> queue = new MinPriorityDecoderQueue<DecoderState>(BeamSizeForStatesQueue); decoderStateQueues.add(queue); } decoderStateQueues.get(0).insert(startState, startState.getScore()); }