diff options
author | 2012-05-23 19:55:27 +0900 | |
---|---|---|
committer | 2012-05-23 20:40:59 +0900 | |
commit | a0ac31fcaa01c21592a6e7af243c14dada65cf3e (patch) | |
tree | 25823d1dd38b8e62726f3dea32aacbc7d16d5f32 | |
parent | 0b6b6ee542c0e143868538acdf5b161013c0b1de (diff) | |
download | latinime-a0ac31fcaa01c21592a6e7af243c14dada65cf3e.tar.gz latinime-a0ac31fcaa01c21592a6e7af243c14dada65cf3e.tar.xz latinime-a0ac31fcaa01c21592a6e7af243c14dada65cf3e.zip |
Fix the issue on multiple words suggestion
Bug: 6509844
Change-Id: I823074a2b29befc3e60c63699ab4dc7719105c63
-rw-r--r-- | native/jni/src/correction.cpp | 2 | ||||
-rw-r--r-- | native/jni/src/defines.h | 2 | ||||
-rw-r--r-- | native/jni/src/unigram_dictionary.cpp | 8 |
3 files changed, 9 insertions, 3 deletions
diff --git a/native/jni/src/correction.cpp b/native/jni/src/correction.cpp index 5ae34cd02..fe3f292c1 100644 --- a/native/jni/src/correction.cpp +++ b/native/jni/src/correction.cpp @@ -977,7 +977,7 @@ int Correction::RankingAlgorithm::calcFreqForSplitMultipleWords( } const int freq = freqArray[i]; // Demote too short weak words - if (wordLength <= 4 && freq <= MAX_FREQ * 2 / 3 /* heuristic... */) { + if (wordLength <= 4 && freq <= SUPPRESS_SHORT_MULTIPLE_WORDS_THRESHOLD_FREQ) { multiplyRate(100 * freq / MAX_FREQ, &totalFreq); } if (wordLength == 1) { diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h index dfc5238a0..19f843446 100644 --- a/native/jni/src/defines.h +++ b/native/jni/src/defines.h @@ -228,6 +228,8 @@ static inline void prof_out(void) { #define TWO_WORDS_CORRECTION_WITH_OTHER_ERROR_THRESHOLD 0.35 #define START_TWO_WORDS_CORRECTION_THRESHOLD 0.185 +/* heuristic... This should be changed if we change the unit of the frequency. */ +#define SUPPRESS_SHORT_MULTIPLE_WORDS_THRESHOLD_FREQ (MAX_FREQ * 58 / 100) #define MAX_DEPTH_MULTIPLIER 3 diff --git a/native/jni/src/unigram_dictionary.cpp b/native/jni/src/unigram_dictionary.cpp index 3c826e918..828582848 100644 --- a/native/jni/src/unigram_dictionary.cpp +++ b/native/jni/src/unigram_dictionary.cpp @@ -503,8 +503,12 @@ bool UnigramDictionary::getSubStringSuggestion( freqArray, wordLengthArray, currentWordIndex + 1, isSpaceProximity, outputWord); if (DEBUG_DICT) { DUMP_WORD(outputWord, tempOutputWordLength); - AKLOGI("Split two words: %d, %d, %d, %d, (%d) %d", freqArray[0], freqArray[1], pairFreq, - inputLength, wordLengthArray[0], tempOutputWordLength); + for (int i = 0; i < currentWordIndex + 1; ++i) { + AKLOGI("Split %d,%d words: freq = %d, length = %d", i, currentWordIndex + 1, + freqArray[i], wordLengthArray[i]); + } + AKLOGI("Split two words: freq = %d, length = %d, %d, isSpace ? %d", pairFreq, + inputLength, tempOutputWordLength, isSpaceProximity); } addWord(outputWord, tempOutputWordLength, pairFreq, queuePool->getMasterQueue()); } |