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

Commit 295e6023 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Get bigram probability using language model dict content.

Bug: 14425059
Change-Id: Ia0493ed94e9bd47e9396d8cda94511b47820db0d
parent 063f86d4
Loading
Loading
Loading
Loading
+17 −10
Original line number Original line Diff line number Diff line
@@ -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);
}
}