aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorsatok <satok@google.com>2011-01-26 21:20:21 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-01-26 21:20:21 -0800
commit241d221344c6e1da2cd4e8e9803855786d4a4a15 (patch)
tree117f68786a6f373ae91a21a799ed767ee3dd4500 /java/src
parent15cb2e57bf77c2cf2187d889bb5f10a0dfd21a85 (diff)
parent2580492aa05a1fe22e59e7d6ba3296b19e4ae4e7 (diff)
downloadlatinime-241d221344c6e1da2cd4e8e9803855786d4a4a15.tar.gz
latinime-241d221344c6e1da2cd4e8e9803855786d4a4a15.tar.xz
latinime-241d221344c6e1da2cd4e8e9803855786d4a4a15.zip
am 2580492a: am b5d7857f: Merge "Fix auto-correction threshold and promote full matched words" into honeycomb
* commit '2580492aa05a1fe22e59e7d6ba3296b19e4ae4e7': Fix auto-correction threshold and promote full matched words
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java2
-rw-r--r--java/src/com/android/inputmethod/latin/Utils.java5
2 files changed, 5 insertions, 2 deletions
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 04c63be51..ced355bb2 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -294,7 +294,7 @@ public class Suggest implements Dictionary.WordCallback {
typedWord, mSuggestions.get(0), mPriorities[0]);
if (LatinImeLogger.sDBG) {
Log.d(TAG, "Normalized " + typedWord + "," + mSuggestions.get(0) + ","
- + mPriorities[0] + normalizedScore
+ + mPriorities[0] + ", " + normalizedScore
+ "(" + mAutoCorrectionThreshold + ")");
}
if (normalizedScore >= mAutoCorrectionThreshold) {
diff --git a/java/src/com/android/inputmethod/latin/Utils.java b/java/src/com/android/inputmethod/latin/Utils.java
index bb7239daf..e6ec48cd2 100644
--- a/java/src/com/android/inputmethod/latin/Utils.java
+++ b/java/src/com/android/inputmethod/latin/Utils.java
@@ -275,9 +275,12 @@ public class Utils {
public static double calcNormalizedScore(CharSequence before, CharSequence after, int score) {
final int beforeLength = before.length();
final int afterLength = after.length();
+ if (beforeLength == 0 || afterLength == 0) return 0;
final int distance = editDistance(before, after);
+ // If afterLength < beforeLength, the algorithm is suggesting a word by excessive character
+ // correction.
final double maximumScore = MAX_INITIAL_SCORE
- * Math.pow(TYPED_LETTER_MULTIPLIER, beforeLength)
+ * Math.pow(TYPED_LETTER_MULTIPLIER, Math.min(beforeLength, afterLength))
* FULL_WORD_MULTIPLYER;
// add a weight based on edit distance.
// distance <= max(afterLength, beforeLength) == afterLength,