Fix addtional proximity correction

Change-Id: I3125764b98af28ce423dc12cbf0dac321ef22386
main
Satoshi Kataoka 2012-10-05 20:54:57 +09:00
parent 49d301e9ad
commit 441b3e5a90
1 changed files with 12 additions and 12 deletions

View File

@ -764,13 +764,23 @@ int Correction::RankingAlgorithm::calculateFinalProbability(const int inputIndex
} }
} }
int additionalProximityCount = 0;
// Demote additional proximity characters
for (int i = 0; i < outputLength; ++i) {
const int squaredDistance = correction->mDistances[i];
if (squaredDistance == ADDITIONAL_PROXIMITY_CHAR_DISTANCE_INFO) {
++additionalProximityCount;
}
}
const bool performTouchPositionCorrection = const bool performTouchPositionCorrection =
CALIBRATE_SCORE_BY_TOUCH_COORDINATES CALIBRATE_SCORE_BY_TOUCH_COORDINATES
&& proximityInfoState->touchPositionCorrectionEnabled() && proximityInfoState->touchPositionCorrectionEnabled()
&& skippedCount == 0 && excessiveCount == 0 && transposedCount == 0; && skippedCount == 0 && excessiveCount == 0 && transposedCount == 0
&& additionalProximityCount == 0;
// Score calibration by touch coordinates is being done only for pure-fat finger typing error // Score calibration by touch coordinates is being done only for pure-fat finger typing error
// cases. // cases.
int additionalProximityCount = 0;
// TODO: Remove this constraint. // TODO: Remove this constraint.
if (performTouchPositionCorrection) { if (performTouchPositionCorrection) {
for (int i = 0; i < outputLength; ++i) { for (int i = 0; i < outputLength; ++i) {
@ -802,19 +812,9 @@ int Correction::RankingAlgorithm::calculateFinalProbability(const int inputIndex
multiplyRate((int)(factor * 100), &finalFreq); multiplyRate((int)(factor * 100), &finalFreq);
} else if (squaredDistance == PROXIMITY_CHAR_WITHOUT_DISTANCE_INFO) { } else if (squaredDistance == PROXIMITY_CHAR_WITHOUT_DISTANCE_INFO) {
multiplyRate(WORDS_WITH_PROXIMITY_CHARACTER_DEMOTION_RATE, &finalFreq); multiplyRate(WORDS_WITH_PROXIMITY_CHARACTER_DEMOTION_RATE, &finalFreq);
} else if (squaredDistance == ADDITIONAL_PROXIMITY_CHAR_DISTANCE_INFO) {
++additionalProximityCount;
multiplyRate(WORDS_WITH_ADDITIONAL_PROXIMITY_CHARACTER_DEMOTION_RATE, &finalFreq);
} }
} }
} else { } else {
// Demote additional proximity characters
for (int i = 0; i < outputLength; ++i) {
const int squaredDistance = correction->mDistances[i];
if (squaredDistance == ADDITIONAL_PROXIMITY_CHAR_DISTANCE_INFO) {
++additionalProximityCount;
}
}
// Promotion for a word with proximity characters // Promotion for a word with proximity characters
for (int i = 0; i < adjustedProximityMatchedCount; ++i) { for (int i = 0; i < adjustedProximityMatchedCount; ++i) {
// A word with proximity corrections // A word with proximity corrections