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

Commit d8ccb909 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Quit using weightChildNode for ADDITIONAL_PROXIMITY and SUBSTITUTION.

[Category diff]
+1       0
-1       1
+2       0
-2       0
+3       0
-3       0
+4       1
-4       1
+5       8
-5       7
+6       0
-6       1
+7       1
-7       0

[Weighted category diff]
+1       0
-1       1
+2       0
-2       0
+3       0
-3       0
+4       1
-4       1
+5       8
-5       7
+6       0
-6       1
+7       1
-7       0

Bug: 13756409
Change-Id: I6ac3567545676bbefbee3e87dda54bc083c15fb6
parent d1471ee0
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -110,10 +110,14 @@ static inline void profile(const CorrectionType correctionType, DicNode *const n
        return weighting->getOmissionCost(parentDicNode, dicNode);
    case CT_ADDITIONAL_PROXIMITY:
        // only used for typing
        return weighting->getAdditionalProximityCost();
        // TODO: Quit calling getMatchedCost().
        return weighting->getAdditionalProximityCost()
                + weighting->getMatchedCost(traverseSession, dicNode, inputStateG);
    case CT_SUBSTITUTION:
        // only used for typing
        return weighting->getSubstitutionCost();
        // TODO: Quit calling getMatchedCost().
        return weighting->getSubstitutionCost()
                + weighting->getMatchedCost(traverseSession, dicNode, inputStateG);
    case CT_NEW_WORD_SPACE_OMISSION:
        return weighting->getNewWordSpatialCost(traverseSession, dicNode, inputStateG);
    case CT_MATCH:
@@ -176,9 +180,9 @@ static inline void profile(const CorrectionType correctionType, DicNode *const n
        case CT_OMISSION:
            return 0;
        case CT_ADDITIONAL_PROXIMITY:
            return 0; /* 0 because CT_MATCH will be called */
            return 1;
        case CT_SUBSTITUTION:
            return 0; /* 0 because CT_MATCH will be called */
            return 1;
        case CT_NEW_WORD_SPACE_OMISSION:
            return 0;
        case CT_MATCH:
+1 −3
Original line number Diff line number Diff line
@@ -284,7 +284,6 @@ void Suggest::processDicNodeAsAdditionalProximityChar(DicTraverseSession *traver
    // not treat the node as a terminal. There is no need to pass the bigram map in these cases.
    Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_ADDITIONAL_PROXIMITY,
            traverseSession, dicNode, childDicNode, 0 /* multiBigramMap */);
    weightChildNode(traverseSession, childDicNode);
    processExpandedDicNode(traverseSession, childDicNode);
}

@@ -292,7 +291,6 @@ void Suggest::processDicNodeAsSubstitution(DicTraverseSession *traverseSession,
        DicNode *dicNode, DicNode *childDicNode) const {
    Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_SUBSTITUTION, traverseSession,
            dicNode, childDicNode, 0 /* multiBigramMap */);
    weightChildNode(traverseSession, childDicNode);
    processExpandedDicNode(traverseSession, childDicNode);
}

@@ -403,7 +401,7 @@ void Suggest::weightChildNode(DicTraverseSession *traverseSession, DicNode *dicN
    if (dicNode->isCompletion(inputSize)) {
        Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_COMPLETION, traverseSession,
                0 /* parentDicNode */, dicNode, 0 /* multiBigramMap */);
    } else { // completion
    } else {
        Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_MATCH, traverseSession,
                0 /* parentDicNode */, dicNode, 0 /* multiBigramMap */);
    }
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ const float ScoringParams::INSERTION_COST_PROXIMITY_CHAR = 0.674f;
const float ScoringParams::INSERTION_COST_FIRST_CHAR = 0.639f;
const float ScoringParams::TRANSPOSITION_COST = 0.5608f;
const float ScoringParams::SPACE_SUBSTITUTION_COST = 0.334f;
const float ScoringParams::ADDITIONAL_PROXIMITY_COST = 0.4576f;
const float ScoringParams::ADDITIONAL_PROXIMITY_COST = 0.37972f;
const float ScoringParams::SUBSTITUTION_COST = 0.3806f;
const float ScoringParams::COST_NEW_WORD = 0.0314f;
const float ScoringParams::COST_SECOND_OR_LATER_WORD_FIRST_CHAR_UPPERCASE = 0.3224f;
+4 −1
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ ErrorTypeUtils::ErrorType TypingWeighting::getErrorType(const CorrectionType cor
            }
            break;
        case CT_ADDITIONAL_PROXIMITY:
            // TODO: Change to EDIT_CORRECTION.
            return ErrorTypeUtils::PROXIMITY_CORRECTION;
        case CT_OMISSION:
            if (parentDicNode->canBeIntentionalOmission()) {
@@ -77,6 +78,8 @@ ErrorTypeUtils::ErrorType TypingWeighting::getErrorType(const CorrectionType cor
            }
            break;
        case CT_SUBSTITUTION:
            // TODO: Quit settng PROXIMITY_CORRECTION.
            return ErrorTypeUtils::EDIT_CORRECTION | ErrorTypeUtils::PROXIMITY_CORRECTION;
        case CT_INSERTION:
        case CT_TERMINAL_INSERTION:
        case CT_TRANSPOSITION: