Substituted LinkedList-appropriate methods in LanguageModelFF.
diff --git a/src/joshua/decoder/ff/lm/LanguageModelFF.java b/src/joshua/decoder/ff/lm/LanguageModelFF.java
index bfd1ea7..7168dcc 100644
--- a/src/joshua/decoder/ff/lm/LanguageModelFF.java
+++ b/src/joshua/decoder/ff/lm/LanguageModelFF.java
@@ -176,7 +176,7 @@
*/
private float computeTransition(int[] enWords, List<HGNode> tailNodes) {
- List<Integer> currentNgram = new LinkedList<Integer>();
+ LinkedList<Integer> currentNgram = new LinkedList<Integer>();
float transitionLogP = 0.0f;
for (int c = 0; c < enWords.length; c++) {
@@ -204,7 +204,7 @@
currentNgram.size(), numAdditionalBackoffWeight);
if (currentNgram.size() == this.ngramOrder) {
- currentNgram.remove(0);
+ currentNgram.removeFirst();
}
} else if (currentNgram.size() == this.ngramOrder) {
// Compute the current word probability, and remove it.s
@@ -213,7 +213,7 @@
// System.err.println(String.format("NGRAM(%s) = %.5f",
// Vocabulary.getWords(currentNgram), prob));
transitionLogP += prob;
- currentNgram.remove(0);
+ currentNgram.removeFirst();
}
}
@@ -252,7 +252,7 @@
private float computeFinalTransition(NgramDPState state) {
float res = 0.0f;
- List<Integer> currentNgram = new LinkedList<Integer>();
+ LinkedList<Integer> currentNgram = new LinkedList<Integer>();
int[] leftContext = state.getLeftLMStateWords();
int[] rightContext = state.getRightLMStateWords();
@@ -282,18 +282,19 @@
}
}
if (currentNgram.size() == this.ngramOrder) {
- currentNgram.remove(0);
+ currentNgram.removeFirst();
}
}
// ================ right context
// switch context, we will never score the right context probability because they are either
- // duplicate or partional ngrams
+ // duplicate or partial ngrams
if (addStartAndEndSymbol) {
int tSize = currentNgram.size();
- for (int i = 0; i < rightContext.length; i++) {// replace context
- currentNgram.set(tSize - rightContext.length + i, rightContext[i]);
- }
+ for (int i = 0; i < rightContext.length; i++)
+ currentNgram.removeLast();
+ for (int i = 0; i < rightContext.length; i++)
+ currentNgram.add(rightContext[i]);
currentNgram.add(STOP_SYM_ID);
float prob = this.lmGrammar.ngramLogProbability(this.toArray(currentNgram),