diff options
author | 2015-02-05 00:44:10 +0000 | |
---|---|---|
committer | 2015-02-05 00:44:10 +0000 | |
commit | bae6848434c0618887bd3fd441dd5ce16a2375fd (patch) | |
tree | ba31351faf517a458a859c29e79abfb699b94184 /java/src/com/android/inputmethod/latin/NgramContext.java | |
parent | c71e4d65343bf782d80ce508786befa6ee3261cf (diff) | |
parent | b00c054125d9f2aa31c2147920cc52cbf2a45ccc (diff) | |
download | latinime-bae6848434c0618887bd3fd441dd5ce16a2375fd.tar.gz latinime-bae6848434c0618887bd3fd441dd5ce16a2375fd.tar.xz latinime-bae6848434c0618887bd3fd441dd5ce16a2375fd.zip |
Merge "AOSP changes to use KeyboardLayout to support the new DictionaryFacilitator"
Diffstat (limited to 'java/src/com/android/inputmethod/latin/NgramContext.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/NgramContext.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/NgramContext.java b/java/src/com/android/inputmethod/latin/NgramContext.java index b47731229..2d66fb000 100644 --- a/java/src/com/android/inputmethod/latin/NgramContext.java +++ b/java/src/com/android/inputmethod/latin/NgramContext.java @@ -22,6 +22,7 @@ import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.latin.common.Constants; import com.android.inputmethod.latin.common.StringUtils; +import java.util.ArrayList; import java.util.Arrays; import javax.annotation.Nonnull; @@ -38,6 +39,10 @@ public class NgramContext { public static final NgramContext BEGINNING_OF_SENTENCE = new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO); + public static final String BEGINNING_OF_SENTENCE_TAG = "<S>"; + + public static final String CONTEXT_SEPARATOR = " "; + /** * Word information used to represent previous words information. */ @@ -114,6 +119,31 @@ public class NgramContext { return new NgramContext(prevWordsInfo); } + + /** + * Extracts the previous words context. + * + * @return a String with the previous words separated by white space. + */ + public String extractPrevWordsContext() { + final ArrayList<String> terms = new ArrayList<>(); + for (int i = mPrevWordsInfo.length - 1; i >= 0; --i) { + if (mPrevWordsInfo[i] != null && mPrevWordsInfo[i].isValid()) { + final NgramContext.WordInfo wordInfo = mPrevWordsInfo[i]; + if (wordInfo.mIsBeginningOfSentence) { + terms.add(BEGINNING_OF_SENTENCE_TAG); + } else { + final String term = wordInfo.mWord.toString(); + if (!term.isEmpty()) { + terms.add(term); + } + } + } + } + return terms.size() == 0 ? BEGINNING_OF_SENTENCE_TAG + : TextUtils.join(CONTEXT_SEPARATOR, terms); + } + public boolean isValid() { return mPrevWordsCount > 0 && mPrevWordsInfo[0].isValid(); } |