Loading java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +10 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,12 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { return mBinaryDictionary.isValidDictionary(); } // TODO: Remove and always enable beginning of sentence prediction. Currently, this is enabled // only for ContextualDictionary. protected boolean enableBeginningOfSentencePrediction() { return false; } /** * Creates a new expandable binary dictionary. * Loading Loading @@ -398,6 +404,10 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { if (mBinaryDictionary == null) { return null; } if (composer.size() == 0 && prevWordsInfo.mIsBeginningOfSentence && !enableBeginningOfSentencePrediction()) { return null; } final ArrayList<SuggestedWordInfo> suggestions = mBinaryDictionary.getSuggestions(composer, prevWordsInfo, proximityInfo, blockOffensiveWords, additionalFeaturesOptions, sessionId, Loading java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java +6 −0 Original line number Diff line number Diff line Loading @@ -35,12 +35,18 @@ public class ContextualDictionary extends ExpandableBinaryDictionary { // Always reset the contents. clear(); } @UsedForTesting public static ContextualDictionary getDictionary(final Context context, final Locale locale, final File dictFile, final String dictNamePrefix) { return new ContextualDictionary(context, locale, dictFile); } @Override protected boolean enableBeginningOfSentencePrediction() { return true; } @Override public boolean isValidWord(final String word) { // Strings out of this dictionary should not be considered existing words. Loading native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -249,7 +249,7 @@ static void latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, env->GetFloatArrayRegion(inOutLanguageWeight, 0, 1 /* len */, &languageWeight); SuggestionResults suggestionResults(MAX_RESULTS); const PrevWordsInfo prevWordsInfo(prevWordCodePoints, prevWordCodePointsLength, false /* isStartOfSentence */); isBeginningOfSentence); if (givenSuggestOptions.isGesture() || inputSize > 0) { // TODO: Use SuggestionResults to return suggestions. dictionary->getSuggestions(pInfo, traverseSession, xCoordinates, yCoordinates, Loading native/jni/src/suggest/core/session/prev_words_info.h +8 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,14 @@ class PrevWordsInfo { return mPrevWordCodePointCount[n - 1]; } // n is 1-indexed. bool isNthPrevWordBeginningOfSentence(const int n) const { if (n <= 0 || n > MAX_PREV_WORD_COUNT_FOR_N_GRAM) { return false; } return mIsBeginningOfSentence[n - 1]; } private: DISALLOW_COPY_AND_ASSIGN(PrevWordsInfo); Loading native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +18 −1 Original line number Diff line number Diff line Loading @@ -246,8 +246,25 @@ bool Ver4PatriciaTriePolicy::addNgramEntry(const PrevWordsInfo *const prevWordsI false /* tryLowerCaseSearch */); // TODO: Support N-gram. if (prevWordsPtNodePos[0] == NOT_A_DICT_POS) { if (prevWordsInfo->isNthPrevWordBeginningOfSentence(1 /* n */)) { const std::vector<UnigramProperty::ShortcutProperty> shortcuts; const UnigramProperty beginningOfSentenceUnigramProperty( true /* representsBeginningOfSentence */, true /* isNotAWord */, false /* isBlacklisted */, MAX_PROBABILITY /* probability */, NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */, &shortcuts); if (!addUnigramEntry(prevWordsInfo->getNthPrevWordCodePoints(1 /* n */), prevWordsInfo->getNthPrevWordCodePointCount(1 /* n */), &beginningOfSentenceUnigramProperty)) { AKLOGE("Cannot add unigram entry for the beginning-of-sentence."); return false; } // Refresh Terminal PtNode positions. prevWordsInfo->getPrevWordsTerminalPtNodePos(this, prevWordsPtNodePos, false /* tryLowerCaseSearch */); } else { return false; } } const int word1Pos = getTerminalPtNodePositionOfWord( bigramProperty->getTargetCodePoints()->data(), bigramProperty->getTargetCodePoints()->size(), false /* forceLowerCaseSearch */); Loading Loading
java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +10 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,12 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { return mBinaryDictionary.isValidDictionary(); } // TODO: Remove and always enable beginning of sentence prediction. Currently, this is enabled // only for ContextualDictionary. protected boolean enableBeginningOfSentencePrediction() { return false; } /** * Creates a new expandable binary dictionary. * Loading Loading @@ -398,6 +404,10 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { if (mBinaryDictionary == null) { return null; } if (composer.size() == 0 && prevWordsInfo.mIsBeginningOfSentence && !enableBeginningOfSentencePrediction()) { return null; } final ArrayList<SuggestedWordInfo> suggestions = mBinaryDictionary.getSuggestions(composer, prevWordsInfo, proximityInfo, blockOffensiveWords, additionalFeaturesOptions, sessionId, Loading
java/src/com/android/inputmethod/latin/personalization/ContextualDictionary.java +6 −0 Original line number Diff line number Diff line Loading @@ -35,12 +35,18 @@ public class ContextualDictionary extends ExpandableBinaryDictionary { // Always reset the contents. clear(); } @UsedForTesting public static ContextualDictionary getDictionary(final Context context, final Locale locale, final File dictFile, final String dictNamePrefix) { return new ContextualDictionary(context, locale, dictFile); } @Override protected boolean enableBeginningOfSentencePrediction() { return true; } @Override public boolean isValidWord(final String word) { // Strings out of this dictionary should not be considered existing words. Loading
native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -249,7 +249,7 @@ static void latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, env->GetFloatArrayRegion(inOutLanguageWeight, 0, 1 /* len */, &languageWeight); SuggestionResults suggestionResults(MAX_RESULTS); const PrevWordsInfo prevWordsInfo(prevWordCodePoints, prevWordCodePointsLength, false /* isStartOfSentence */); isBeginningOfSentence); if (givenSuggestOptions.isGesture() || inputSize > 0) { // TODO: Use SuggestionResults to return suggestions. dictionary->getSuggestions(pInfo, traverseSession, xCoordinates, yCoordinates, Loading
native/jni/src/suggest/core/session/prev_words_info.h +8 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,14 @@ class PrevWordsInfo { return mPrevWordCodePointCount[n - 1]; } // n is 1-indexed. bool isNthPrevWordBeginningOfSentence(const int n) const { if (n <= 0 || n > MAX_PREV_WORD_COUNT_FOR_N_GRAM) { return false; } return mIsBeginningOfSentence[n - 1]; } private: DISALLOW_COPY_AND_ASSIGN(PrevWordsInfo); Loading
native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +18 −1 Original line number Diff line number Diff line Loading @@ -246,8 +246,25 @@ bool Ver4PatriciaTriePolicy::addNgramEntry(const PrevWordsInfo *const prevWordsI false /* tryLowerCaseSearch */); // TODO: Support N-gram. if (prevWordsPtNodePos[0] == NOT_A_DICT_POS) { if (prevWordsInfo->isNthPrevWordBeginningOfSentence(1 /* n */)) { const std::vector<UnigramProperty::ShortcutProperty> shortcuts; const UnigramProperty beginningOfSentenceUnigramProperty( true /* representsBeginningOfSentence */, true /* isNotAWord */, false /* isBlacklisted */, MAX_PROBABILITY /* probability */, NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */, &shortcuts); if (!addUnigramEntry(prevWordsInfo->getNthPrevWordCodePoints(1 /* n */), prevWordsInfo->getNthPrevWordCodePointCount(1 /* n */), &beginningOfSentenceUnigramProperty)) { AKLOGE("Cannot add unigram entry for the beginning-of-sentence."); return false; } // Refresh Terminal PtNode positions. prevWordsInfo->getPrevWordsTerminalPtNodePos(this, prevWordsPtNodePos, false /* tryLowerCaseSearch */); } else { return false; } } const int word1Pos = getTerminalPtNodePositionOfWord( bigramProperty->getTargetCodePoints()->data(), bigramProperty->getTargetCodePoints()->size(), false /* forceLowerCaseSearch */); Loading