diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp index 1c61bd4b9..0eae934ae 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp @@ -186,7 +186,9 @@ int Ver4PatriciaTriePolicy::getProbabilityOfWord(const WordIdArrayView prevWordI if (bigramsIt.getBigramPos() == ptNodePos && bigramsIt.getProbability() != NOT_A_PROBABILITY) { const int bigramConditionalProbability = getBigramConditionalProbability( - prevWordPtNodeParams.getProbability(), bigramsIt.getProbability()); + prevWordPtNodeParams.getProbability(), + prevWordPtNodeParams.representsBeginningOfSentence(), + bigramsIt.getProbability()); return getProbability(ptNodeParams.getProbability(), bigramConditionalProbability); } } @@ -209,15 +211,19 @@ void Ver4PatriciaTriePolicy::iterateNgramEntries(const WordIdArrayView prevWordI while (bigramsIt.hasNext()) { bigramsIt.next(); const int bigramConditionalProbability = getBigramConditionalProbability( - prevWordPtNodeParams.getProbability(), bigramsIt.getProbability()); + prevWordPtNodeParams.getProbability(), + prevWordPtNodeParams.representsBeginningOfSentence(), bigramsIt.getProbability()); listener->onVisitEntry(bigramConditionalProbability, getWordIdFromTerminalPtNodePos(bigramsIt.getBigramPos())); } } int Ver4PatriciaTriePolicy::getBigramConditionalProbability(const int prevWordUnigramProbability, - const int bigramProbability) const { + const bool isInBeginningOfSentenceContext, const int bigramProbability) const { if (mHeaderPolicy->hasHistoricalInfoOfWords()) { + if (isInBeginningOfSentenceContext) { + return bigramProbability; + } // Calculate conditional probability. return std::min(MAX_PROBABILITY - prevWordUnigramProbability + bigramProbability, MAX_PROBABILITY); diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h index 4aa399c3e..1ad5e7e36 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h @@ -175,7 +175,7 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { const WordAttributes getWordAttributes(const int probability, const PtNodeParams &ptNodeParams) const; int getBigramConditionalProbability(const int prevWordUnigramProbability, - const int bigramProbability) const; + const bool isInBeginningOfSentenceContext, const int bigramProbability) const; }; } // namespace v402 } // namespace backward