@Override public int order() { return lm.getOrder(); }
@Override public int order() { return languageModel.getOrder(); }
public double lmProb(LanguageModel model, List<String> tokens) { double lmSumScore = 0.0; for (int pos = 0; pos < tokens.size(); pos++) { final int seqStart = Math.max(0, pos - model.getOrder() + 1); final List<String> ngram = new ArrayList<String>(tokens.subList(seqStart, pos + 1)); final ListIterator<String> ngramIter = ngram.listIterator(); while (ngramIter.hasNext()) { ngramIter.set(ngramIter.next().toLowerCase()); } double ngramScore = model.score(ngram); if (ngramScore == Double.NEGATIVE_INFINITY || ngramScore != ngramScore) { lmSumScore += MOSES_LM_UNKNOWN_WORD_SCORE; continue; } lmSumScore += ngramScore; } return lmSumScore; }