am a0ac31fc: Fix the issue on multiple words suggestion

* commit 'a0ac31fcaa01c21592a6e7af243c14dada65cf3e':
  Fix the issue on multiple words suggestion
main
satok 2012-05-23 05:06:08 -07:00 committed by Android Git Automerger
commit 074e8c9206
3 changed files with 9 additions and 3 deletions

View File

@ -978,7 +978,7 @@ int Correction::RankingAlgorithm::calcFreqForSplitMultipleWords(
} }
const int freq = freqArray[i]; const int freq = freqArray[i];
// Demote too short weak words // 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); multiplyRate(100 * freq / MAX_FREQ, &totalFreq);
} }
if (wordLength == 1) { if (wordLength == 1) {

View File

@ -228,6 +228,8 @@ static inline void prof_out(void) {
#define TWO_WORDS_CORRECTION_WITH_OTHER_ERROR_THRESHOLD 0.35 #define TWO_WORDS_CORRECTION_WITH_OTHER_ERROR_THRESHOLD 0.35
#define START_TWO_WORDS_CORRECTION_THRESHOLD 0.185 #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 #define MAX_DEPTH_MULTIPLIER 3

View File

@ -504,8 +504,12 @@ bool UnigramDictionary::getSubStringSuggestion(
freqArray, wordLengthArray, currentWordIndex + 1, isSpaceProximity, outputWord); freqArray, wordLengthArray, currentWordIndex + 1, isSpaceProximity, outputWord);
if (DEBUG_DICT) { if (DEBUG_DICT) {
DUMP_WORD(outputWord, tempOutputWordLength); DUMP_WORD(outputWord, tempOutputWordLength);
AKLOGI("Split two words: %d, %d, %d, %d, (%d) %d", freqArray[0], freqArray[1], pairFreq, for (int i = 0; i < currentWordIndex + 1; ++i) {
inputLength, wordLengthArray[0], tempOutputWordLength); 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()); addWord(outputWord, tempOutputWordLength, pairFreq, queuePool->getMasterQueue());
} }