Fix the issue on multiple words suggestion
Bug: 6509844 Change-Id: I823074a2b29befc3e60c63699ab4dc7719105c63main
parent
0b6b6ee542
commit
a0ac31fcaa
|
@ -977,7 +977,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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -503,8 +503,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());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue