diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
index f5ad79222babaedca6dbc2a41a6df4a880b7ab37..4a28a242a72c73afff103449af7d57c583b08e93 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
@@ -622,28 +622,27 @@ public class DictionaryFacilitator {
         }
         PrevWordsInfo prevWordsInfo = PrevWordsInfo.BEGINNING_OF_SENTENCE;
         for (int i = 0; i < phrase.length; i++) {
+            final String[] subPhrase = Arrays.copyOfRange(phrase, i /* start */, phrase.length);
+            final String subPhraseStr = TextUtils.join(Constants.WORD_SEPARATOR, subPhrase);
+            contextualDict.addUnigramEntryWithCheckingDistracter(
+                    subPhraseStr, probability, null /* shortcutTarget */,
+                    Dictionary.NOT_A_PROBABILITY /* shortcutFreq */,
+                    false /* isNotAWord */, false /* isBlacklisted */,
+                    BinaryDictionary.NOT_A_VALID_TIMESTAMP,
+                    DistracterFilter.EMPTY_DISTRACTER_FILTER);
+            contextualDict.addNgramEntry(prevWordsInfo, subPhraseStr,
+                    bigramProbabilityForPhrases, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+
             if (i < phrase.length - 1) {
-                final String[] subPhrase =
-                        Arrays.copyOfRange(phrase, i /* start */, phrase.length);
-                final String subPhraseStr = TextUtils.join(Constants.WORD_SEPARATOR, subPhrase);
                 contextualDict.addUnigramEntryWithCheckingDistracter(
-                        subPhraseStr, probability, null /* shortcutTarget */,
+                        phrase[i], probability, null /* shortcutTarget */,
                         Dictionary.NOT_A_PROBABILITY /* shortcutFreq */,
                         false /* isNotAWord */, false /* isBlacklisted */,
                         BinaryDictionary.NOT_A_VALID_TIMESTAMP,
                         DistracterFilter.EMPTY_DISTRACTER_FILTER);
-                contextualDict.addNgramEntry(prevWordsInfo, subPhraseStr,
-                        bigramProbabilityForPhrases, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
-
+                contextualDict.addNgramEntry(prevWordsInfo, phrase[i],
+                        bigramProbabilityForWords, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
             }
-            contextualDict.addUnigramEntryWithCheckingDistracter(
-                    phrase[i], probability, null /* shortcutTarget */,
-                    Dictionary.NOT_A_PROBABILITY /* shortcutFreq */,
-                    false /* isNotAWord */, false /* isBlacklisted */,
-                    BinaryDictionary.NOT_A_VALID_TIMESTAMP,
-                    DistracterFilter.EMPTY_DISTRACTER_FILTER);
-            contextualDict.addNgramEntry(prevWordsInfo, phrase[i],
-                    bigramProbabilityForWords, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
             prevWordsInfo = new PrevWordsInfo(phrase[i]);
         }
     }