Merge "Update unit test for beginning-of-sentence."
This commit is contained in:
commit
89899e14df
2 changed files with 25 additions and 12 deletions
|
@ -256,8 +256,25 @@ bool Ver4PatriciaTriePolicy::addNgramEntry(const PrevWordsInfo *const prevWordsI
|
|||
false /* tryLowerCaseSearch */);
|
||||
// TODO: Support N-gram.
|
||||
if (prevWordsPtNodePos[0] == NOT_A_DICT_POS) {
|
||||
if (prevWordsInfo->isNthPrevWordBeginningOfSentence(1 /* n */)) {
|
||||
const std::vector<UnigramProperty::ShortcutProperty> shortcuts;
|
||||
const UnigramProperty beginningOfSentenceUnigramProperty(
|
||||
true /* representsBeginningOfSentence */, true /* isNotAWord */,
|
||||
false /* isBlacklisted */, MAX_PROBABILITY /* probability */,
|
||||
NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */, &shortcuts);
|
||||
if (!addUnigramEntry(prevWordsInfo->getNthPrevWordCodePoints(1 /* n */),
|
||||
prevWordsInfo->getNthPrevWordCodePointCount(1 /* n */),
|
||||
&beginningOfSentenceUnigramProperty)) {
|
||||
AKLOGE("Cannot add unigram entry for the beginning-of-sentence.");
|
||||
return false;
|
||||
}
|
||||
// Refresh Terminal PtNode positions.
|
||||
prevWordsInfo->getPrevWordsTerminalPtNodePos(this, prevWordsPtNodePos,
|
||||
false /* tryLowerCaseSearch */);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
const int word1Pos = getTerminalPtNodePositionOfWord(
|
||||
bigramProperty->getTargetCodePoints()->data(),
|
||||
bigramProperty->getTargetCodePoints()->size(), false /* forceLowerCaseSearch */);
|
||||
|
|
|
@ -1450,27 +1450,23 @@ public class BinaryDictionaryTests extends AndroidTestCase {
|
|||
0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
|
||||
Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
|
||||
final int dummyProbability = 0;
|
||||
binaryDictionary.addUnigramEntry("", dummyProbability, "" /* shortcutTarget */,
|
||||
BinaryDictionary.NOT_A_PROBABILITY /* shortcutProbability */,
|
||||
true /* isBeginningOfSentence */, true /* isNotAWord */, false /* isBlacklisted */,
|
||||
BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
|
||||
final PrevWordsInfo prevWordsInfoStartOfSentence = PrevWordsInfo.BEGINNING_OF_SENTENCE;
|
||||
final PrevWordsInfo prevWordsInfoBeginningOfSentence = PrevWordsInfo.BEGINNING_OF_SENTENCE;
|
||||
final int bigramProbability = 200;
|
||||
addUnigramWord(binaryDictionary, "aaa", dummyProbability);
|
||||
binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "aaa", bigramProbability,
|
||||
binaryDictionary.addNgramEntry(prevWordsInfoBeginningOfSentence, "aaa", bigramProbability,
|
||||
BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
|
||||
assertEquals(bigramProbability,
|
||||
binaryDictionary.getNgramProbability(prevWordsInfoStartOfSentence, "aaa"));
|
||||
binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "aaa", bigramProbability,
|
||||
binaryDictionary.getNgramProbability(prevWordsInfoBeginningOfSentence, "aaa"));
|
||||
binaryDictionary.addNgramEntry(prevWordsInfoBeginningOfSentence, "aaa", bigramProbability,
|
||||
BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
|
||||
addUnigramWord(binaryDictionary, "bbb", dummyProbability);
|
||||
binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "bbb", bigramProbability,
|
||||
binaryDictionary.addNgramEntry(prevWordsInfoBeginningOfSentence, "bbb", bigramProbability,
|
||||
BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
|
||||
binaryDictionary.flushWithGC();
|
||||
assertEquals(bigramProbability,
|
||||
binaryDictionary.getNgramProbability(prevWordsInfoStartOfSentence, "aaa"));
|
||||
binaryDictionary.getNgramProbability(prevWordsInfoBeginningOfSentence, "aaa"));
|
||||
assertEquals(bigramProbability,
|
||||
binaryDictionary.getNgramProbability(prevWordsInfoStartOfSentence, "bbb"));
|
||||
binaryDictionary.getNgramProbability(prevWordsInfoBeginningOfSentence, "bbb"));
|
||||
}
|
||||
|
||||
public void testGetMaxFrequencyOfExactMatches() {
|
||||
|
|
Loading…
Reference in a new issue