diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index 2618d7c274572d477f248c760a98d5d9e1b3c6d7..3970963e8177adefa8874f8cfd697e589f2d2bdb 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -137,15 +137,13 @@ class DicNode {
     }
 
     void initAsChild(const DicNode *const dicNode, const int childrenPtNodeArrayPos,
-            const int unigramProbability, const int wordId,
-            const CodePointArrayView mergedCodePoints) {
+            const int wordId, const CodePointArrayView mergedCodePoints) {
         uint16_t newDepth = static_cast<uint16_t>(dicNode->getNodeCodePointCount() + 1);
         mIsCachedForNextSuggestion = dicNode->mIsCachedForNextSuggestion;
         const uint16_t newLeavingDepth = static_cast<uint16_t>(
                 dicNode->mDicNodeProperties.getLeavingDepth() + mergedCodePoints.size());
         mDicNodeProperties.init(childrenPtNodeArrayPos, mergedCodePoints[0],
-                unigramProbability, wordId, newDepth, newLeavingDepth,
-                dicNode->mDicNodeProperties.getPrevWordIds());
+                wordId, newDepth, newLeavingDepth, dicNode->mDicNodeProperties.getPrevWordIds());
         mDicNodeState.init(&dicNode->mDicNodeState, mergedCodePoints.size(),
                 mergedCodePoints.data());
         PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
@@ -215,11 +213,6 @@ class DicNode {
         return mDicNodeProperties.getChildrenPtNodeArrayPos();
     }
 
-    // TODO: Remove
-    int getUnigramProbability() const {
-        return mDicNodeProperties.getUnigramProbability();
-    }
-
     AK_FORCE_INLINE bool isTerminalDicNode() const {
         const bool isTerminalPtNode = mDicNodeProperties.isTerminal();
         const int currentDicNodeDepth = getNodeCodePointCount();
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_vector.h b/native/jni/src/suggest/core/dicnode/dic_node_vector.h
index 44bf3febdfd72dd77c8f1cd3d6733103eb1ab327..e6b7589547bac634f2ccef6f590000736bfbb18b 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_vector.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_vector.h
@@ -60,12 +60,10 @@ class DicNodeVector {
     }
 
     void pushLeavingChild(const DicNode *const dicNode, const int childrenPtNodeArrayPos,
-            const int unigramProbability, const int wordId,
-            const CodePointArrayView mergedCodePoints) {
+            const int wordId, const CodePointArrayView mergedCodePoints) {
         ASSERT(!mLock);
         mDicNodes.emplace_back();
-        mDicNodes.back().initAsChild(dicNode, childrenPtNodeArrayPos, unigramProbability,
-                wordId, mergedCodePoints);
+        mDicNodes.back().initAsChild(dicNode, childrenPtNodeArrayPos, wordId, mergedCodePoints);
     }
 
     DicNode *operator[](const int id) {
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
index 62f2e14525d69eaab2ba21a09871eab4103657e3..6a1b842732a2f2d91ad3130be55f632fa7383583 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
@@ -29,19 +29,16 @@ namespace latinime {
 class DicNodeProperties {
  public:
     AK_FORCE_INLINE DicNodeProperties()
-            : mChildrenPtNodeArrayPos(NOT_A_DICT_POS), mUnigramProbability(NOT_A_PROBABILITY),
-              mDicNodeCodePoint(NOT_A_CODE_POINT), mWordId(NOT_A_WORD_ID), mDepth(0),
-              mLeavingDepth(0) {}
+            : mChildrenPtNodeArrayPos(NOT_A_DICT_POS), mDicNodeCodePoint(NOT_A_CODE_POINT),
+              mWordId(NOT_A_WORD_ID), mDepth(0), mLeavingDepth(0) {}
 
     ~DicNodeProperties() {}
 
     // Should be called only once per DicNode is initialized.
-    void init(const int childrenPos, const int nodeCodePoint, const int unigramProbability,
-            const int wordId, const uint16_t depth, const uint16_t leavingDepth,
-            const int *const prevWordIds) {
+    void init(const int childrenPos, const int nodeCodePoint, const int wordId,
+            const uint16_t depth, const uint16_t leavingDepth, const int *const prevWordIds) {
         mChildrenPtNodeArrayPos = childrenPos;
         mDicNodeCodePoint = nodeCodePoint;
-        mUnigramProbability = unigramProbability;
         mWordId = wordId;
         mDepth = depth;
         mLeavingDepth = leavingDepth;
@@ -52,7 +49,6 @@ class DicNodeProperties {
     void init(const int rootPtNodeArrayPos, const int *const prevWordIds) {
         mChildrenPtNodeArrayPos = rootPtNodeArrayPos;
         mDicNodeCodePoint = NOT_A_CODE_POINT;
-        mUnigramProbability = NOT_A_PROBABILITY;
         mWordId = NOT_A_WORD_ID;
         mDepth = 0;
         mLeavingDepth = 0;
@@ -62,7 +58,6 @@ class DicNodeProperties {
     void initByCopy(const DicNodeProperties *const dicNodeProp) {
         mChildrenPtNodeArrayPos = dicNodeProp->mChildrenPtNodeArrayPos;
         mDicNodeCodePoint = dicNodeProp->mDicNodeCodePoint;
-        mUnigramProbability = dicNodeProp->mUnigramProbability;
         mWordId = dicNodeProp->mWordId;
         mDepth = dicNodeProp->mDepth;
         mLeavingDepth = dicNodeProp->mLeavingDepth;
@@ -73,7 +68,6 @@ class DicNodeProperties {
     void init(const DicNodeProperties *const dicNodeProp, const int codePoint) {
         mChildrenPtNodeArrayPos = dicNodeProp->mChildrenPtNodeArrayPos;
         mDicNodeCodePoint = codePoint; // Overwrite the node char of a passing child
-        mUnigramProbability = dicNodeProp->mUnigramProbability;
         mWordId = dicNodeProp->mWordId;
         mDepth = dicNodeProp->mDepth + 1; // Increment the depth of a passing child
         mLeavingDepth = dicNodeProp->mLeavingDepth;
@@ -84,10 +78,6 @@ class DicNodeProperties {
         return mChildrenPtNodeArrayPos;
     }
 
-    int getUnigramProbability() const {
-        return mUnigramProbability;
-    }
-
     int getDicNodeCodePoint() const {
         return mDicNodeCodePoint;
     }
@@ -122,8 +112,6 @@ class DicNodeProperties {
     // Use a default copy constructor and an assign operator because shallow copies are ok
     // for this class
     int mChildrenPtNodeArrayPos;
-    // TODO: Remove
-    int mUnigramProbability;
     int mDicNodeCodePoint;
     int mWordId;
     uint16_t mDepth;
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 6c50a388aa6e00b7e6d99bb12654d5a19ad2c1e9..9b8a50b07e4127fee657b482939c582ae07d8cf3 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
@@ -79,7 +79,7 @@ void Ver4PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const d
         }
         const int wordId = isTerminal ? ptNodeParams.getHeadPos() : NOT_A_WORD_ID;
         childDicNodes->pushLeavingChild(dicNode, ptNodeParams.getChildrenPos(),
-                ptNodeParams.getProbability(), wordId, ptNodeParams.getCodePointArrayView());
+                wordId, ptNodeParams.getCodePointArrayView());
     }
     if (readingHelper.isError()) {
         mIsCorrupted = true;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp
index 0bb8580726a6f9f72ec81550f4de715d3c35821b..e76bae97cf7b8d834f0aa017bfe286c9d746eff0 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp
@@ -407,7 +407,7 @@ int PatriciaTriePolicy::createAndGetLeavingChildNode(const DicNode *const dicNod
     // Skip PtNodes don't start with Unicode code point because they represent non-word information.
     if (CharUtils::isInUnicodeSpace(mergedNodeCodePoints[0])) {
         const int wordId = PatriciaTrieReadingUtils::isTerminal(flags) ? ptNodePos : NOT_A_WORD_ID;
-        childDicNodes->pushLeavingChild(dicNode, childrenPos, probability, wordId,
+        childDicNodes->pushLeavingChild(dicNode, childrenPos, wordId,
                 CodePointArrayView(mergedNodeCodePoints, mergedNodeCodePointCount));
     }
     return siblingPos;
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
index e71e5168ccb9483622638120ec06241ce7cd2515..0472a453af84f685b826ca2391b29e7834d5fe06 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
@@ -69,7 +69,7 @@ void Ver4PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const d
         }
         const int wordId = isTerminal ? ptNodeParams.getTerminalId() : NOT_A_WORD_ID;
         childDicNodes->pushLeavingChild(dicNode, ptNodeParams.getChildrenPos(),
-                ptNodeParams.getProbability(), wordId, ptNodeParams.getCodePointArrayView());
+                wordId, ptNodeParams.getCodePointArrayView());
     }
     if (readingHelper.isError()) {
         mIsCorrupted = true;