aboutsummaryrefslogtreecommitdiffstats
path: root/native/src
diff options
context:
space:
mode:
authorsatok <satok@google.com>2011-04-13 18:51:21 +0900
committersatok <satok@google.com>2011-04-13 18:51:21 +0900
commitd05c6e88347c9129dabe40eebf785c4758d0816c (patch)
tree1175bc6a611cbdcc56d3d408d87175d755ec3759 /native/src
parentcc6131053f34f5d69f463ea4513cebb93453fa49 (diff)
parenta6abb1f87c0061d7a409066586ba99d8fdbd86e2 (diff)
downloadlatinime-d05c6e88347c9129dabe40eebf785c4758d0816c.tar.gz
latinime-d05c6e88347c9129dabe40eebf785c4758d0816c.tar.xz
latinime-d05c6e88347c9129dabe40eebf785c4758d0816c.zip
Merge remote-tracking branch 'goog/master' into merge
Conflicts: java/res/xml/method.xml Change-Id: I033d512e23c84d6c803805c9b05eec88969f97df
Diffstat (limited to 'native/src')
-rw-r--r--native/src/defines.h3
-rw-r--r--native/src/unigram_dictionary.cpp9
2 files changed, 8 insertions, 4 deletions
diff --git a/native/src/defines.h b/native/src/defines.h
index 926120703..ff195f40c 100644
--- a/native/src/defines.h
+++ b/native/src/defines.h
@@ -138,7 +138,8 @@ static void prof_out(void) {
#define SUGGEST_WORDS_WITH_SPACE_PROXIMITY true
// The following "rate"s are used as a multiplier before dividing by 100, so they are in percent.
-#define WORDS_WITH_MISSING_CHARACTER_DEMOTION_RATE 70
+#define WORDS_WITH_MISSING_CHARACTER_DEMOTION_RATE 90
+#define WORDS_WITH_MISSING_CHARACTER_DEMOTION_START_POS_10X 12
#define WORDS_WITH_MISSING_SPACE_CHARACTER_DEMOTION_RATE 80
#define WORDS_WITH_EXCESSIVE_CHARACTER_DEMOTION_RATE 75
#define WORDS_WITH_EXCESSIVE_CHARACTER_OUT_OF_PROXIMITY_DEMOTION_RATE 75
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index c18829014..2ae2bca92 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -518,9 +518,12 @@ inline int UnigramDictionary::calculateFinalFreq(const int inputIndex, const int
// TODO: Demote by edit distance
int finalFreq = freq * matchWeight;
if (skipPos >= 0) {
- if (mInputLength >= 3) {
- multiplyRate(WORDS_WITH_MISSING_CHARACTER_DEMOTION_RATE *
- (mInputLength - 2) / (mInputLength - 1), &finalFreq);
+ if (mInputLength >= 2) {
+ const int demotionRate = WORDS_WITH_MISSING_CHARACTER_DEMOTION_RATE
+ * (10 * mInputLength - WORDS_WITH_MISSING_CHARACTER_DEMOTION_START_POS_10X)
+ / (10 * mInputLength
+ - WORDS_WITH_MISSING_CHARACTER_DEMOTION_START_POS_10X + 10);
+ multiplyRate(demotionRate, &finalFreq);
} else {
finalFreq = 0;
}