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

Commit 62f3b4e9 authored by Keisuke Kuroynagi's avatar Keisuke Kuroynagi Committed by Android (Google) Code Review
Browse files

Merge "Fix: huge bigram costs for blacklisted words."

parents a005d09d b1791998
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -213,14 +213,18 @@ class DicNode {
        return mDicNodeState.mDicNodeStateOutput.getCodePointAt(getNodeCodePointCount());
    }

    bool isImpossibleBigramWord() const {
    // Check if the current word and the previous word can be considered as a valid multiple word
    // suggestion.
    bool isValidMultipleWordSuggestion() const {
        if (isBlacklistedOrNotAWord()) {
            return true;
            return false;
        }
        // Treat suggestion as invalid if the current and the previous word are single character
        // words.
        const int prevWordLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength()
                - mDicNodeState.mDicNodeStatePrevWord.getPrevWordStart() - 1;
        const int currentWordLen = getNodeCodePointCount();
        return (prevWordLen == 1 && currentWordLen == 1);
        return (prevWordLen != 1 || currentWordLen != 1);
    }

    bool isFirstCharUppercase() const {
+1 −1
Original line number Diff line number Diff line
@@ -159,7 +159,7 @@ namespace latinime {
/* static */ float DicNodeUtils::getBigramNodeImprobability(
        const BinaryDictionaryInfo *const binaryDictionaryInfo,
        const DicNode *const node, MultiBigramMap *multiBigramMap) {
    if (node->isImpossibleBigramWord()) {
    if (node->hasMultipleWords() && !node->isValidMultipleWordSuggestion()) {
        return static_cast<float>(MAX_VALUE_FOR_WEIGHTING);
    }
    const int probability = getBigramNodeProbability(binaryDictionaryInfo, node, multiBigramMap);
+4 −4
Original line number Diff line number Diff line
@@ -55,10 +55,10 @@ class TypingScoring : public Scoring {
            const int inputSize, const bool forceCommit) const {
        const float maxDistance = ScoringParams::DISTANCE_WEIGHT_LANGUAGE
                + static_cast<float>(inputSize) * ScoringParams::TYPING_MAX_OUTPUT_SCORE_PER_INPUT;
        return static_cast<int>((ScoringParams::TYPING_BASE_OUTPUT_SCORE
                - (compoundDistance / maxDistance)
                + (forceCommit ? ScoringParams::AUTOCORRECT_OUTPUT_THRESHOLD : 0.0f))
                        * SUGGEST_INTERFACE_OUTPUT_SCALE);
        const float score = ScoringParams::TYPING_BASE_OUTPUT_SCORE
                - compoundDistance / maxDistance
                + (forceCommit ? ScoringParams::AUTOCORRECT_OUTPUT_THRESHOLD : 0.0f);
        return static_cast<int>(score * SUGGEST_INTERFACE_OUTPUT_SCALE);
    }

    AK_FORCE_INLINE float getDoubleLetterDemotionDistanceCost(const int terminalIndex,