Merge "Quit using weightChildNode for ADDITIONAL_PROXIMITY and SUBSTITUTION."

This commit is contained in:
Keisuke Kuroyanagi 2014-10-14 11:34:04 +00:00 committed by Android (Google) Code Review
commit 1d0989b65c
4 changed files with 14 additions and 9 deletions

View file

@ -110,10 +110,14 @@ static inline void profile(const CorrectionType correctionType, DicNode *const n
return weighting->getOmissionCost(parentDicNode, dicNode); return weighting->getOmissionCost(parentDicNode, dicNode);
case CT_ADDITIONAL_PROXIMITY: case CT_ADDITIONAL_PROXIMITY:
// only used for typing // only used for typing
return weighting->getAdditionalProximityCost(); // TODO: Quit calling getMatchedCost().
return weighting->getAdditionalProximityCost()
+ weighting->getMatchedCost(traverseSession, dicNode, inputStateG);
case CT_SUBSTITUTION: case CT_SUBSTITUTION:
// only used for typing // 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: case CT_NEW_WORD_SPACE_OMISSION:
return weighting->getNewWordSpatialCost(traverseSession, dicNode, inputStateG); return weighting->getNewWordSpatialCost(traverseSession, dicNode, inputStateG);
case CT_MATCH: case CT_MATCH:
@ -176,9 +180,9 @@ static inline void profile(const CorrectionType correctionType, DicNode *const n
case CT_OMISSION: case CT_OMISSION:
return 0; return 0;
case CT_ADDITIONAL_PROXIMITY: case CT_ADDITIONAL_PROXIMITY:
return 0; /* 0 because CT_MATCH will be called */ return 1;
case CT_SUBSTITUTION: case CT_SUBSTITUTION:
return 0; /* 0 because CT_MATCH will be called */ return 1;
case CT_NEW_WORD_SPACE_OMISSION: case CT_NEW_WORD_SPACE_OMISSION:
return 0; return 0;
case CT_MATCH: case CT_MATCH:

View file

@ -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. // 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, Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_ADDITIONAL_PROXIMITY,
traverseSession, dicNode, childDicNode, 0 /* multiBigramMap */); traverseSession, dicNode, childDicNode, 0 /* multiBigramMap */);
weightChildNode(traverseSession, childDicNode);
processExpandedDicNode(traverseSession, childDicNode); processExpandedDicNode(traverseSession, childDicNode);
} }
@ -292,7 +291,6 @@ void Suggest::processDicNodeAsSubstitution(DicTraverseSession *traverseSession,
DicNode *dicNode, DicNode *childDicNode) const { DicNode *dicNode, DicNode *childDicNode) const {
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_SUBSTITUTION, traverseSession, Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_SUBSTITUTION, traverseSession,
dicNode, childDicNode, 0 /* multiBigramMap */); dicNode, childDicNode, 0 /* multiBigramMap */);
weightChildNode(traverseSession, childDicNode);
processExpandedDicNode(traverseSession, childDicNode); processExpandedDicNode(traverseSession, childDicNode);
} }
@ -403,7 +401,7 @@ void Suggest::weightChildNode(DicTraverseSession *traverseSession, DicNode *dicN
if (dicNode->isCompletion(inputSize)) { if (dicNode->isCompletion(inputSize)) {
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_COMPLETION, traverseSession, Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_COMPLETION, traverseSession,
0 /* parentDicNode */, dicNode, 0 /* multiBigramMap */); 0 /* parentDicNode */, dicNode, 0 /* multiBigramMap */);
} else { // completion } else {
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_MATCH, traverseSession, Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_MATCH, traverseSession,
0 /* parentDicNode */, dicNode, 0 /* multiBigramMap */); 0 /* parentDicNode */, dicNode, 0 /* multiBigramMap */);
} }

View file

@ -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::INSERTION_COST_FIRST_CHAR = 0.639f;
const float ScoringParams::TRANSPOSITION_COST = 0.5608f; const float ScoringParams::TRANSPOSITION_COST = 0.5608f;
const float ScoringParams::SPACE_SUBSTITUTION_COST = 0.334f; 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::SUBSTITUTION_COST = 0.3806f;
const float ScoringParams::COST_NEW_WORD = 0.0314f; const float ScoringParams::COST_NEW_WORD = 0.0314f;
const float ScoringParams::COST_SECOND_OR_LATER_WORD_FIRST_CHAR_UPPERCASE = 0.3224f; const float ScoringParams::COST_SECOND_OR_LATER_WORD_FIRST_CHAR_UPPERCASE = 0.3224f;

View file

@ -68,7 +68,8 @@ ErrorTypeUtils::ErrorType TypingWeighting::getErrorType(const CorrectionType cor
} }
break; break;
case CT_ADDITIONAL_PROXIMITY: case CT_ADDITIONAL_PROXIMITY:
return ErrorTypeUtils::PROXIMITY_CORRECTION; // TODO: Change to EDIT_CORRECTION.
return ErrorTypeUtils::PROXIMITY_CORRECTION;
case CT_OMISSION: case CT_OMISSION:
if (parentDicNode->canBeIntentionalOmission()) { if (parentDicNode->canBeIntentionalOmission()) {
return ErrorTypeUtils::INTENTIONAL_OMISSION; return ErrorTypeUtils::INTENTIONAL_OMISSION;
@ -77,6 +78,8 @@ ErrorTypeUtils::ErrorType TypingWeighting::getErrorType(const CorrectionType cor
} }
break; break;
case CT_SUBSTITUTION: case CT_SUBSTITUTION:
// TODO: Quit settng PROXIMITY_CORRECTION.
return ErrorTypeUtils::EDIT_CORRECTION | ErrorTypeUtils::PROXIMITY_CORRECTION;
case CT_INSERTION: case CT_INSERTION:
case CT_TERMINAL_INSERTION: case CT_TERMINAL_INSERTION:
case CT_TRANSPOSITION: case CT_TRANSPOSITION: