Loading native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +17 −10 Original line number Original line Diff line number Diff line Loading @@ -127,21 +127,28 @@ int Ver4PatriciaTriePolicy::getProbabilityOfPtNode(const int *const prevWordsPtN if (ptNodePos == NOT_A_DICT_POS) { if (ptNodePos == NOT_A_DICT_POS) { return NOT_A_PROBABILITY; return NOT_A_PROBABILITY; } } const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos)); const PtNodeParams ptNodeParams = mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos); if (ptNodeParams.isDeleted() || ptNodeParams.isBlacklisted() || ptNodeParams.isNotAWord()) { if (ptNodeParams.isDeleted() || ptNodeParams.isBlacklisted() || ptNodeParams.isNotAWord()) { return NOT_A_PROBABILITY; return NOT_A_PROBABILITY; } } if (prevWordsPtNodePos) { if (prevWordsPtNodePos) { const int bigramsPosition = getBigramsPositionOfPtNode(prevWordsPtNodePos[0]); // TODO: Support n-gram. BinaryDictionaryBigramsIterator bigramsIt(&mBigramPolicy, bigramsPosition); const PtNodeParams prevWordPtNodeParams = while (bigramsIt.hasNext()) { mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(prevWordsPtNodePos[0]); bigramsIt.next(); const int prevWordTerminalId = prevWordPtNodeParams.getTerminalId(); if (bigramsIt.getBigramPos() == ptNodePos const ProbabilityEntry probabilityEntry = && bigramsIt.getProbability() != NOT_A_PROBABILITY) { mBuffers->getLanguageModelDictContent()->getNgramProbabilityEntry( return getProbability(ptNodeParams.getProbability(), bigramsIt.getProbability()); IntArrayView::fromObject(&prevWordTerminalId), ptNodeParams.getTerminalId()); if (!probabilityEntry.isValid()) { return NOT_A_PROBABILITY; } } if (mHeaderPolicy->hasHistoricalInfoOfWords()) { return ForgettingCurveUtils::decodeProbability(probabilityEntry.getHistoricalInfo(), mHeaderPolicy); } else { return probabilityEntry.getProbability(); } } return NOT_A_PROBABILITY; } } return getProbability(ptNodeParams.getProbability(), NOT_A_PROBABILITY); return getProbability(ptNodeParams.getProbability(), NOT_A_PROBABILITY); } } Loading Loading
native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +17 −10 Original line number Original line Diff line number Diff line Loading @@ -127,21 +127,28 @@ int Ver4PatriciaTriePolicy::getProbabilityOfPtNode(const int *const prevWordsPtN if (ptNodePos == NOT_A_DICT_POS) { if (ptNodePos == NOT_A_DICT_POS) { return NOT_A_PROBABILITY; return NOT_A_PROBABILITY; } } const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos)); const PtNodeParams ptNodeParams = mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos); if (ptNodeParams.isDeleted() || ptNodeParams.isBlacklisted() || ptNodeParams.isNotAWord()) { if (ptNodeParams.isDeleted() || ptNodeParams.isBlacklisted() || ptNodeParams.isNotAWord()) { return NOT_A_PROBABILITY; return NOT_A_PROBABILITY; } } if (prevWordsPtNodePos) { if (prevWordsPtNodePos) { const int bigramsPosition = getBigramsPositionOfPtNode(prevWordsPtNodePos[0]); // TODO: Support n-gram. BinaryDictionaryBigramsIterator bigramsIt(&mBigramPolicy, bigramsPosition); const PtNodeParams prevWordPtNodeParams = while (bigramsIt.hasNext()) { mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(prevWordsPtNodePos[0]); bigramsIt.next(); const int prevWordTerminalId = prevWordPtNodeParams.getTerminalId(); if (bigramsIt.getBigramPos() == ptNodePos const ProbabilityEntry probabilityEntry = && bigramsIt.getProbability() != NOT_A_PROBABILITY) { mBuffers->getLanguageModelDictContent()->getNgramProbabilityEntry( return getProbability(ptNodeParams.getProbability(), bigramsIt.getProbability()); IntArrayView::fromObject(&prevWordTerminalId), ptNodeParams.getTerminalId()); if (!probabilityEntry.isValid()) { return NOT_A_PROBABILITY; } } if (mHeaderPolicy->hasHistoricalInfoOfWords()) { return ForgettingCurveUtils::decodeProbability(probabilityEntry.getHistoricalInfo(), mHeaderPolicy); } else { return probabilityEntry.getProbability(); } } return NOT_A_PROBABILITY; } } return getProbability(ptNodeParams.getProbability(), NOT_A_PROBABILITY); return getProbability(ptNodeParams.getProbability(), NOT_A_PROBABILITY); } } Loading