Activate bigram predictions from the binary dictionary
Change-Id: If1cc50539d7677b854b1cd3bea3423c8c0865de5
This commit is contained in:
parent
05f09b6d58
commit
ad290d6505
2 changed files with 8 additions and 10 deletions
|
@ -139,22 +139,19 @@ public class BinaryDictionary extends Dictionary {
|
||||||
Arrays.fill(mBigramScores, 0);
|
Arrays.fill(mBigramScores, 0);
|
||||||
|
|
||||||
int codesSize = codes.size();
|
int codesSize = codes.size();
|
||||||
if (codesSize <= 0) {
|
|
||||||
// Do not return bigrams from BinaryDictionary when nothing was typed.
|
|
||||||
// Only use user-history bigrams (or whatever other bigram dictionaries decide).
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Arrays.fill(mInputCodes, -1);
|
Arrays.fill(mInputCodes, -1);
|
||||||
int[] alternatives = codes.getCodesAt(0);
|
if (codesSize > 0) {
|
||||||
System.arraycopy(alternatives, 0, mInputCodes, 0,
|
int[] alternatives = codes.getCodesAt(0);
|
||||||
Math.min(alternatives.length, MAX_PROXIMITY_CHARS_SIZE));
|
System.arraycopy(alternatives, 0, mInputCodes, 0,
|
||||||
|
Math.min(alternatives.length, MAX_PROXIMITY_CHARS_SIZE));
|
||||||
|
}
|
||||||
|
|
||||||
int count = getBigramsNative(mNativeDict, chars, chars.length, mInputCodes, codesSize,
|
int count = getBigramsNative(mNativeDict, chars, chars.length, mInputCodes, codesSize,
|
||||||
mOutputChars_bigrams, mBigramScores, MAX_WORD_LENGTH, MAX_BIGRAMS,
|
mOutputChars_bigrams, mBigramScores, MAX_WORD_LENGTH, MAX_BIGRAMS,
|
||||||
MAX_PROXIMITY_CHARS_SIZE);
|
MAX_PROXIMITY_CHARS_SIZE);
|
||||||
|
|
||||||
for (int j = 0; j < count; ++j) {
|
for (int j = 0; j < count; ++j) {
|
||||||
if (mBigramScores[j] < 1) break;
|
if (codesSize > 0 && mBigramScores[j] < 1) break;
|
||||||
final int start = j * MAX_WORD_LENGTH;
|
final int start = j * MAX_WORD_LENGTH;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
while (len < MAX_WORD_LENGTH && mOutputChars_bigrams[start + len] != 0) {
|
while (len < MAX_WORD_LENGTH && mOutputChars_bigrams[start + len] != 0) {
|
||||||
|
|
|
@ -134,7 +134,8 @@ int BigramDictionary::getBigrams(unsigned short *prevWord, int prevWordLength, i
|
||||||
const int length = BinaryFormat::getWordAtAddress(root, bigramPos, MAX_WORD_LENGTH,
|
const int length = BinaryFormat::getWordAtAddress(root, bigramPos, MAX_WORD_LENGTH,
|
||||||
bigramBuffer);
|
bigramBuffer);
|
||||||
|
|
||||||
if (checkFirstCharacter(bigramBuffer)) {
|
// codesSize == 0 means we are trying to find bigram predictions.
|
||||||
|
if (codesSize < 1 || checkFirstCharacter(bigramBuffer)) {
|
||||||
const int frequency = UnigramDictionary::MASK_ATTRIBUTE_FREQUENCY & bigramFlags;
|
const int frequency = UnigramDictionary::MASK_ATTRIBUTE_FREQUENCY & bigramFlags;
|
||||||
addWordBigram(bigramBuffer, length, frequency);
|
addWordBigram(bigramBuffer, length, frequency);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue