aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-10-14 20:20:55 +0900
committerKeisuke Kuroyanagi <ksk@google.com>2014-10-14 20:20:55 +0900
commitd8ccb9093b8a4a5bd529d63df872a4cfa2abb693 (patch)
tree8988b4b4b3596f2056fc3f85b1377eb9f203d0cf /native/jni/src
parentd1471ee053a788dd68729d0a8a603c17444f7cb3 (diff)
downloadlatinime-d8ccb9093b8a4a5bd529d63df872a4cfa2abb693.tar.gz
latinime-d8ccb9093b8a4a5bd529d63df872a4cfa2abb693.tar.xz
latinime-d8ccb9093b8a4a5bd529d63df872a4cfa2abb693.zip
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
Diffstat (limited to 'native/jni/src')
-rw-r--r--native/jni/src/suggest/core/policy/weighting.cpp12
-rw-r--r--native/jni/src/suggest/core/suggest.cpp4
-rw-r--r--native/jni/src/suggest/policyimpl/typing/scoring_params.cpp2
-rw-r--r--native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp5
4 files changed, 14 insertions, 9 deletions
diff --git a/native/jni/src/suggest/core/policy/weighting.cpp b/native/jni/src/suggest/core/policy/weighting.cpp
index c202b81fe..a06e7d070 100644
--- a/native/jni/src/suggest/core/policy/weighting.cpp
+++ b/native/jni/src/suggest/core/policy/weighting.cpp
@@ -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:
diff --git a/native/jni/src/suggest/core/suggest.cpp b/native/jni/src/suggest/core/suggest.cpp
index cf2df86a6..c71526293 100644
--- a/native/jni/src/suggest/core/suggest.cpp
+++ b/native/jni/src/suggest/core/suggest.cpp
@@ -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 */);
}
diff --git a/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp b/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp
index b621eef22..6a2db687d 100644
--- a/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp
+++ b/native/jni/src/suggest/policyimpl/typing/scoring_params.cpp
@@ -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;
diff --git a/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp b/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp
index 1d590c353..db7a39efb 100644
--- a/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp
+++ b/native/jni/src/suggest/policyimpl/typing/typing_weighting.cpp
@@ -68,7 +68,8 @@ ErrorTypeUtils::ErrorType TypingWeighting::getErrorType(const CorrectionType cor
}
break;
case CT_ADDITIONAL_PROXIMITY:
- return ErrorTypeUtils::PROXIMITY_CORRECTION;
+ // TODO: Change to EDIT_CORRECTION.
+ return ErrorTypeUtils::PROXIMITY_CORRECTION;
case CT_OMISSION:
if (parentDicNode->canBeIntentionalOmission()) {
return ErrorTypeUtils::INTENTIONAL_OMISSION;
@@ -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: