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

Commit e38f7918 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge "Get bigram probability using language model dict content."

parents dc442604 295e6023
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);
}
}