Loading native/src/correction.cpp +14 −12 Original line number Diff line number Diff line Loading @@ -653,9 +653,10 @@ int Correction::RankingAlgorithm::calculateFinalFreq(const int inputIndex, const int finalFreq = freq; // TODO: Optimize this. // TODO: Ignoring edit distance for transposed char, for now if (transposedCount == 0 && (proximityMatchedCount > 0 || skipped || excessiveCount > 0)) { ed = getCurrentEditDistance(editDistanceTable, inputLength, outputIndex + 1); if (transposedCount > 0 || proximityMatchedCount > 0 || skipped || excessiveCount > 0) { ed = getCurrentEditDistance(editDistanceTable, inputLength, outputIndex + 1) - transposedCount; const int matchWeight = powerIntCapped(typedLetterMultiplier, max(inputLength, outputIndex + 1) - ed); multiplyIntCapped(matchWeight, &finalFreq); Loading @@ -667,6 +668,7 @@ int Correction::RankingAlgorithm::calculateFinalFreq(const int inputIndex, const ed = max(0, ed - quoteDiffCount); if (transposedCount < 1) { if (ed == 1 && (inputLength == outputIndex || inputLength == outputIndex + 2)) { // Promote a word with just one skipped or excessive char if (sameLength) { Loading @@ -678,10 +680,10 @@ int Correction::RankingAlgorithm::calculateFinalFreq(const int inputIndex, const multiplyIntCapped(typedLetterMultiplier, &finalFreq); sameLength = true; } } adjustedProximityMatchedCount = min(max(0, ed - (outputIndex + 1 - inputLength)), proximityMatchedCount); } else { // TODO: Calculate the edit distance for transposed char const int matchWeight = powerIntCapped(typedLetterMultiplier, matchCount); multiplyIntCapped(matchWeight, &finalFreq); } Loading native/src/defines.h +1 −1 Original line number Diff line number Diff line Loading @@ -190,7 +190,7 @@ static void prof_out(void) { #define WORDS_WITH_MISSING_SPACE_CHARACTER_DEMOTION_RATE 67 #define WORDS_WITH_EXCESSIVE_CHARACTER_DEMOTION_RATE 75 #define WORDS_WITH_EXCESSIVE_CHARACTER_OUT_OF_PROXIMITY_DEMOTION_RATE 75 #define WORDS_WITH_TRANSPOSED_CHARACTERS_DEMOTION_RATE 60 #define WORDS_WITH_TRANSPOSED_CHARACTERS_DEMOTION_RATE 70 #define FULL_MATCHED_WORDS_PROMOTION_RATE 120 #define WORDS_WITH_PROXIMITY_CHARACTER_DEMOTION_RATE 90 #define WORDS_WITH_MATCH_SKIP_PROMOTION_RATE 105 Loading Loading
native/src/correction.cpp +14 −12 Original line number Diff line number Diff line Loading @@ -653,9 +653,10 @@ int Correction::RankingAlgorithm::calculateFinalFreq(const int inputIndex, const int finalFreq = freq; // TODO: Optimize this. // TODO: Ignoring edit distance for transposed char, for now if (transposedCount == 0 && (proximityMatchedCount > 0 || skipped || excessiveCount > 0)) { ed = getCurrentEditDistance(editDistanceTable, inputLength, outputIndex + 1); if (transposedCount > 0 || proximityMatchedCount > 0 || skipped || excessiveCount > 0) { ed = getCurrentEditDistance(editDistanceTable, inputLength, outputIndex + 1) - transposedCount; const int matchWeight = powerIntCapped(typedLetterMultiplier, max(inputLength, outputIndex + 1) - ed); multiplyIntCapped(matchWeight, &finalFreq); Loading @@ -667,6 +668,7 @@ int Correction::RankingAlgorithm::calculateFinalFreq(const int inputIndex, const ed = max(0, ed - quoteDiffCount); if (transposedCount < 1) { if (ed == 1 && (inputLength == outputIndex || inputLength == outputIndex + 2)) { // Promote a word with just one skipped or excessive char if (sameLength) { Loading @@ -678,10 +680,10 @@ int Correction::RankingAlgorithm::calculateFinalFreq(const int inputIndex, const multiplyIntCapped(typedLetterMultiplier, &finalFreq); sameLength = true; } } adjustedProximityMatchedCount = min(max(0, ed - (outputIndex + 1 - inputLength)), proximityMatchedCount); } else { // TODO: Calculate the edit distance for transposed char const int matchWeight = powerIntCapped(typedLetterMultiplier, matchCount); multiplyIntCapped(matchWeight, &finalFreq); } Loading
native/src/defines.h +1 −1 Original line number Diff line number Diff line Loading @@ -190,7 +190,7 @@ static void prof_out(void) { #define WORDS_WITH_MISSING_SPACE_CHARACTER_DEMOTION_RATE 67 #define WORDS_WITH_EXCESSIVE_CHARACTER_DEMOTION_RATE 75 #define WORDS_WITH_EXCESSIVE_CHARACTER_OUT_OF_PROXIMITY_DEMOTION_RATE 75 #define WORDS_WITH_TRANSPOSED_CHARACTERS_DEMOTION_RATE 60 #define WORDS_WITH_TRANSPOSED_CHARACTERS_DEMOTION_RATE 70 #define FULL_MATCHED_WORDS_PROMOTION_RATE 120 #define WORDS_WITH_PROXIMITY_CHARACTER_DEMOTION_RATE 90 #define WORDS_WITH_MATCH_SKIP_PROMOTION_RATE 105 Loading