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 1c61bd4..0eae934 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 @@
         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 @@
     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 4aa399c..1ad5e7e 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 @@
     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
