Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c2f00f6 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Make sure to suppress BoS prediction until input twice.

Change-Id: I98d91f264d5d1d3f5bcda1fd9ec885779ba2f746
parent ca17ed7d
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -378,7 +378,10 @@ bool Ver4PatriciaTriePolicy::updateCounter(const PrevWordsInfo *const prevWordsI
        AKLOGE("Cannot update unigarm entry in updateCounter().");
        return false;
    }
    const NgramProperty ngramProperty(wordCodePoints.toVector(), probability, historicalInfo);
    const int probabilityForNgram = prevWordsInfo->isNthPrevWordBeginningOfSentence(1 /* n */)
            ? NOT_A_PROBABILITY : probability;
    const NgramProperty ngramProperty(wordCodePoints.toVector(), probabilityForNgram,
            historicalInfo);
    for (size_t i = 1; i <= prevWordsInfo->getPrevWordCount(); ++i) {
        const PrevWordsInfo trimmedPrevWordsInfo(prevWordsInfo->getTrimmedPrevWordsInfo(i));
        if (!addNgramEntry(&trimmedPrevWordsInfo, &ngramProperty)) {
+4 −1
Original line number Diff line number Diff line
@@ -611,20 +611,23 @@ public class BinaryDictionaryDecayingTests extends AndroidTestCase {
                mCurrentTime);
        final NgramContext beginningOfSentenceContext = NgramContext.BEGINNING_OF_SENTENCE;
        onInputWordWithBeginningOfSentenceContext(binaryDictionary, "aaa", true /* isValidWord */);
        assertFalse(binaryDictionary.isValidNgram(beginningOfSentenceContext, "aaa"));
        onInputWordWithBeginningOfSentenceContext(binaryDictionary, "aaa", true /* isValidWord */);
        assertTrue(binaryDictionary.isValidNgram(beginningOfSentenceContext, "aaa"));
        onInputWordWithBeginningOfSentenceContext(binaryDictionary, "aaa", true /* isValidWord */);
        onInputWordWithBeginningOfSentenceContext(binaryDictionary, "bbb", true /* isValidWord */);
        assertFalse(binaryDictionary.isValidNgram(beginningOfSentenceContext, "bbb"));
        onInputWordWithBeginningOfSentenceContext(binaryDictionary, "bbb", true /* isValidWord */);
        assertTrue(binaryDictionary.isValidNgram(beginningOfSentenceContext, "aaa"));
        assertTrue(binaryDictionary.isValidNgram(beginningOfSentenceContext, "bbb"));
        forcePassingLongTime(binaryDictionary);
        assertFalse(binaryDictionary.isValidNgram(beginningOfSentenceContext, "aaa"));
        assertFalse(binaryDictionary.isValidNgram(beginningOfSentenceContext, "bbb"));

        onInputWordWithBeginningOfSentenceContext(binaryDictionary, "aaa", true /* isValidWord */);
        assertFalse(binaryDictionary.isValidNgram(beginningOfSentenceContext, "aaa"));
        onInputWordWithBeginningOfSentenceContext(binaryDictionary, "aaa", true /* isValidWord */);
        onInputWordWithBeginningOfSentenceContext(binaryDictionary, "bbb", true /* isValidWord */);
        assertFalse(binaryDictionary.isValidNgram(beginningOfSentenceContext, "bbb"));
        onInputWordWithBeginningOfSentenceContext(binaryDictionary, "bbb", true /* isValidWord */);
        assertTrue(binaryDictionary.isValidNgram(beginningOfSentenceContext, "aaa"));
        assertTrue(binaryDictionary.isValidNgram(beginningOfSentenceContext, "bbb"));