Loading native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +19 −18 Original line number Diff line number Diff line Loading @@ -364,10 +364,12 @@ static bool latinime_BinaryDictionary_addUnigramEntry(JNIEnv *env, jclass clazz, int codePoints[codePointCount]; env->GetIntArrayRegion(word, 0, codePointCount, codePoints); std::vector<UnigramProperty::ShortcutProperty> shortcuts; { std::vector<int> shortcutTargetCodePoints; JniDataUtils::jintarrayToVector(env, shortcutTarget, &shortcutTargetCodePoints); if (!shortcutTargetCodePoints.empty()) { shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability); shortcuts.emplace_back(std::move(shortcutTargetCodePoints), shortcutProbability); } } // Use 1 for count to indicate the word has inputted. const UnigramProperty unigramProperty(isBeginningOfSentence, isNotAWord, Loading Loading @@ -401,11 +403,9 @@ static bool latinime_BinaryDictionary_addNgramEntry(JNIEnv *env, jclass clazz, j jsize wordLength = env->GetArrayLength(word); int wordCodePoints[wordLength]; env->GetIntArrayRegion(word, 0, wordLength, wordCodePoints); const std::vector<int> bigramTargetCodePoints( wordCodePoints, wordCodePoints + wordLength); // Use 1 for count to indicate the bigram has inputted. const BigramProperty bigramProperty(&bigramTargetCodePoints, probability, timestamp, 0 /* level */, 1 /* count */); const BigramProperty bigramProperty(CodePointArrayView(wordCodePoints, wordLength).toVector(), probability, timestamp, 0 /* level */, 1 /* count */); return dictionary->addNgramEntry(&prevWordsInfo, &bigramProperty); } Loading Loading @@ -483,12 +483,14 @@ static int latinime_BinaryDictionary_addMultipleDictionaryEntries(JNIEnv *env, j jintArray shortcutTarget = static_cast<jintArray>( env->GetObjectField(languageModelParam, shortcutTargetFieldId)); std::vector<UnigramProperty::ShortcutProperty> shortcuts; { std::vector<int> shortcutTargetCodePoints; JniDataUtils::jintarrayToVector(env, shortcutTarget, &shortcutTargetCodePoints); if (!shortcutTargetCodePoints.empty()) { jint shortcutProbability = env->GetIntField(languageModelParam, shortcutProbabilityFieldId); shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability); shortcuts.emplace_back(std::move(shortcutTargetCodePoints), shortcutProbability); } } // Use 1 for count to indicate the word has inputted. const UnigramProperty unigramProperty(false /* isBeginningOfSentence */, isNotAWord, Loading @@ -498,11 +500,10 @@ static int latinime_BinaryDictionary_addMultipleDictionaryEntries(JNIEnv *env, j &unigramProperty); if (word0) { jint bigramProbability = env->GetIntField(languageModelParam, bigramProbabilityFieldId); const std::vector<int> bigramTargetCodePoints( word1CodePoints, word1CodePoints + word1Length); // Use 1 for count to indicate the bigram has inputted. const BigramProperty bigramProperty(&bigramTargetCodePoints, bigramProbability, timestamp, 0 /* level */, 1 /* count */); const BigramProperty bigramProperty( CodePointArrayView(word1CodePoints, word1Length).toVector(), bigramProbability, timestamp, 0 /* level */, 1 /* count */); const PrevWordsInfo prevWordsInfo(word0CodePoints, word0Length, false /* isBeginningOfSentence */); dictionary->addNgramEntry(&prevWordsInfo, &bigramProperty); Loading native/jni/src/suggest/core/dictionary/property/bigram_property.h +3 −3 Original line number Diff line number Diff line Loading @@ -26,9 +26,9 @@ namespace latinime { // TODO: Change to NgramProperty. class BigramProperty { public: BigramProperty(const std::vector<int> *const targetCodePoints, const int probability, const int timestamp, const int level, const int count) : mTargetCodePoints(*targetCodePoints), mProbability(probability), BigramProperty(const std::vector<int> &&targetCodePoints, const int probability, const int timestamp, const int level, const int count) : mTargetCodePoints(std::move(targetCodePoints)), mProbability(probability), mTimestamp(timestamp), mLevel(level), mCount(count) {} const std::vector<int> *getTargetCodePoints() const { Loading native/jni/src/suggest/core/dictionary/property/unigram_property.h +3 −2 Original line number Diff line number Diff line Loading @@ -27,8 +27,9 @@ class UnigramProperty { public: class ShortcutProperty { public: ShortcutProperty(const std::vector<int> *const targetCodePoints, const int probability) : mTargetCodePoints(*targetCodePoints), mProbability(probability) {} ShortcutProperty(const std::vector<int> &&targetCodePoints, const int probability) : mTargetCodePoints(std::move(targetCodePoints)), mProbability(probability) {} const std::vector<int> *getTargetCodePoints() const { return &mTargetCodePoints; Loading native/jni/src/suggest/core/dictionary/property/word_property.h +2 −3 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ #include "jni.h" #include "suggest/core/dictionary/property/bigram_property.h" #include "suggest/core/dictionary/property/unigram_property.h" #include "utils/int_array_view.h" namespace latinime { Loading @@ -34,9 +33,9 @@ class WordProperty { WordProperty() : mCodePoints(), mUnigramProperty(), mBigrams() {} WordProperty(const CodePointArrayView codePoints, const UnigramProperty *const unigramProperty, WordProperty(const std::vector<int> &&codePoints, const UnigramProperty *const unigramProperty, const std::vector<BigramProperty> *const bigrams) : mCodePoints(codePoints.begin(), codePoints.end()), mUnigramProperty(*unigramProperty), : mCodePoints(std::move(codePoints)), mUnigramProperty(*unigramProperty), mBigrams(*bigrams) {} void outputProperties(JNIEnv *const env, jintArray outCodePoints, jbooleanArray outFlags, Loading native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -521,15 +521,14 @@ const WordProperty Ver4PatriciaTriePolicy::getWordProperty( const int codePointCount = getCodePointsAndReturnCodePointCount( getWordIdFromTerminalPtNodePos(word1TerminalPtNodePos), MAX_WORD_LENGTH, bigramWord1CodePoints); const std::vector<int> word1(bigramWord1CodePoints, bigramWord1CodePoints + codePointCount); const HistoricalInfo *const historicalInfo = bigramEntry.getHistoricalInfo(); const int probability = bigramEntry.hasHistoricalInfo() ? ForgettingCurveUtils::decodeProbability( bigramEntry.getHistoricalInfo(), mHeaderPolicy) : bigramEntry.getProbability(); bigrams.emplace_back(&word1, probability, historicalInfo->getTimeStamp(), historicalInfo->getLevel(), bigrams.emplace_back( CodePointArrayView(bigramWord1CodePoints, codePointCount).toVector(), probability, historicalInfo->getTimeStamp(), historicalInfo->getLevel(), historicalInfo->getCount()); } } Loading @@ -546,15 +545,16 @@ const WordProperty Ver4PatriciaTriePolicy::getWordProperty( int shortcutProbability = NOT_A_PROBABILITY; shortcutDictContent->getShortcutEntryAndAdvancePosition(MAX_WORD_LENGTH, shortcutTarget, &shortcutTargetLength, &shortcutProbability, &hasNext, &shortcutPos); const std::vector<int> target(shortcutTarget, shortcutTarget + shortcutTargetLength); shortcuts.emplace_back(&target, shortcutProbability); shortcuts.emplace_back( CodePointArrayView(shortcutTarget, shortcutTargetLength).toVector(), shortcutProbability); } } const UnigramProperty unigramProperty(ptNodeParams.representsBeginningOfSentence(), ptNodeParams.isNotAWord(), ptNodeParams.isBlacklisted(), ptNodeParams.getProbability(), historicalInfo->getTimeStamp(), historicalInfo->getLevel(), historicalInfo->getCount(), &shortcuts); return WordProperty(wordCodePoints, &unigramProperty, &bigrams); return WordProperty(wordCodePoints.toVector(), &unigramProperty, &bigrams); } int Ver4PatriciaTriePolicy::getNextWordAndNextToken(const int token, int *const outCodePoints, Loading Loading
native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +19 −18 Original line number Diff line number Diff line Loading @@ -364,10 +364,12 @@ static bool latinime_BinaryDictionary_addUnigramEntry(JNIEnv *env, jclass clazz, int codePoints[codePointCount]; env->GetIntArrayRegion(word, 0, codePointCount, codePoints); std::vector<UnigramProperty::ShortcutProperty> shortcuts; { std::vector<int> shortcutTargetCodePoints; JniDataUtils::jintarrayToVector(env, shortcutTarget, &shortcutTargetCodePoints); if (!shortcutTargetCodePoints.empty()) { shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability); shortcuts.emplace_back(std::move(shortcutTargetCodePoints), shortcutProbability); } } // Use 1 for count to indicate the word has inputted. const UnigramProperty unigramProperty(isBeginningOfSentence, isNotAWord, Loading Loading @@ -401,11 +403,9 @@ static bool latinime_BinaryDictionary_addNgramEntry(JNIEnv *env, jclass clazz, j jsize wordLength = env->GetArrayLength(word); int wordCodePoints[wordLength]; env->GetIntArrayRegion(word, 0, wordLength, wordCodePoints); const std::vector<int> bigramTargetCodePoints( wordCodePoints, wordCodePoints + wordLength); // Use 1 for count to indicate the bigram has inputted. const BigramProperty bigramProperty(&bigramTargetCodePoints, probability, timestamp, 0 /* level */, 1 /* count */); const BigramProperty bigramProperty(CodePointArrayView(wordCodePoints, wordLength).toVector(), probability, timestamp, 0 /* level */, 1 /* count */); return dictionary->addNgramEntry(&prevWordsInfo, &bigramProperty); } Loading Loading @@ -483,12 +483,14 @@ static int latinime_BinaryDictionary_addMultipleDictionaryEntries(JNIEnv *env, j jintArray shortcutTarget = static_cast<jintArray>( env->GetObjectField(languageModelParam, shortcutTargetFieldId)); std::vector<UnigramProperty::ShortcutProperty> shortcuts; { std::vector<int> shortcutTargetCodePoints; JniDataUtils::jintarrayToVector(env, shortcutTarget, &shortcutTargetCodePoints); if (!shortcutTargetCodePoints.empty()) { jint shortcutProbability = env->GetIntField(languageModelParam, shortcutProbabilityFieldId); shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability); shortcuts.emplace_back(std::move(shortcutTargetCodePoints), shortcutProbability); } } // Use 1 for count to indicate the word has inputted. const UnigramProperty unigramProperty(false /* isBeginningOfSentence */, isNotAWord, Loading @@ -498,11 +500,10 @@ static int latinime_BinaryDictionary_addMultipleDictionaryEntries(JNIEnv *env, j &unigramProperty); if (word0) { jint bigramProbability = env->GetIntField(languageModelParam, bigramProbabilityFieldId); const std::vector<int> bigramTargetCodePoints( word1CodePoints, word1CodePoints + word1Length); // Use 1 for count to indicate the bigram has inputted. const BigramProperty bigramProperty(&bigramTargetCodePoints, bigramProbability, timestamp, 0 /* level */, 1 /* count */); const BigramProperty bigramProperty( CodePointArrayView(word1CodePoints, word1Length).toVector(), bigramProbability, timestamp, 0 /* level */, 1 /* count */); const PrevWordsInfo prevWordsInfo(word0CodePoints, word0Length, false /* isBeginningOfSentence */); dictionary->addNgramEntry(&prevWordsInfo, &bigramProperty); Loading
native/jni/src/suggest/core/dictionary/property/bigram_property.h +3 −3 Original line number Diff line number Diff line Loading @@ -26,9 +26,9 @@ namespace latinime { // TODO: Change to NgramProperty. class BigramProperty { public: BigramProperty(const std::vector<int> *const targetCodePoints, const int probability, const int timestamp, const int level, const int count) : mTargetCodePoints(*targetCodePoints), mProbability(probability), BigramProperty(const std::vector<int> &&targetCodePoints, const int probability, const int timestamp, const int level, const int count) : mTargetCodePoints(std::move(targetCodePoints)), mProbability(probability), mTimestamp(timestamp), mLevel(level), mCount(count) {} const std::vector<int> *getTargetCodePoints() const { Loading
native/jni/src/suggest/core/dictionary/property/unigram_property.h +3 −2 Original line number Diff line number Diff line Loading @@ -27,8 +27,9 @@ class UnigramProperty { public: class ShortcutProperty { public: ShortcutProperty(const std::vector<int> *const targetCodePoints, const int probability) : mTargetCodePoints(*targetCodePoints), mProbability(probability) {} ShortcutProperty(const std::vector<int> &&targetCodePoints, const int probability) : mTargetCodePoints(std::move(targetCodePoints)), mProbability(probability) {} const std::vector<int> *getTargetCodePoints() const { return &mTargetCodePoints; Loading
native/jni/src/suggest/core/dictionary/property/word_property.h +2 −3 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ #include "jni.h" #include "suggest/core/dictionary/property/bigram_property.h" #include "suggest/core/dictionary/property/unigram_property.h" #include "utils/int_array_view.h" namespace latinime { Loading @@ -34,9 +33,9 @@ class WordProperty { WordProperty() : mCodePoints(), mUnigramProperty(), mBigrams() {} WordProperty(const CodePointArrayView codePoints, const UnigramProperty *const unigramProperty, WordProperty(const std::vector<int> &&codePoints, const UnigramProperty *const unigramProperty, const std::vector<BigramProperty> *const bigrams) : mCodePoints(codePoints.begin(), codePoints.end()), mUnigramProperty(*unigramProperty), : mCodePoints(std::move(codePoints)), mUnigramProperty(*unigramProperty), mBigrams(*bigrams) {} void outputProperties(JNIEnv *const env, jintArray outCodePoints, jbooleanArray outFlags, Loading
native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -521,15 +521,14 @@ const WordProperty Ver4PatriciaTriePolicy::getWordProperty( const int codePointCount = getCodePointsAndReturnCodePointCount( getWordIdFromTerminalPtNodePos(word1TerminalPtNodePos), MAX_WORD_LENGTH, bigramWord1CodePoints); const std::vector<int> word1(bigramWord1CodePoints, bigramWord1CodePoints + codePointCount); const HistoricalInfo *const historicalInfo = bigramEntry.getHistoricalInfo(); const int probability = bigramEntry.hasHistoricalInfo() ? ForgettingCurveUtils::decodeProbability( bigramEntry.getHistoricalInfo(), mHeaderPolicy) : bigramEntry.getProbability(); bigrams.emplace_back(&word1, probability, historicalInfo->getTimeStamp(), historicalInfo->getLevel(), bigrams.emplace_back( CodePointArrayView(bigramWord1CodePoints, codePointCount).toVector(), probability, historicalInfo->getTimeStamp(), historicalInfo->getLevel(), historicalInfo->getCount()); } } Loading @@ -546,15 +545,16 @@ const WordProperty Ver4PatriciaTriePolicy::getWordProperty( int shortcutProbability = NOT_A_PROBABILITY; shortcutDictContent->getShortcutEntryAndAdvancePosition(MAX_WORD_LENGTH, shortcutTarget, &shortcutTargetLength, &shortcutProbability, &hasNext, &shortcutPos); const std::vector<int> target(shortcutTarget, shortcutTarget + shortcutTargetLength); shortcuts.emplace_back(&target, shortcutProbability); shortcuts.emplace_back( CodePointArrayView(shortcutTarget, shortcutTargetLength).toVector(), shortcutProbability); } } const UnigramProperty unigramProperty(ptNodeParams.representsBeginningOfSentence(), ptNodeParams.isNotAWord(), ptNodeParams.isBlacklisted(), ptNodeParams.getProbability(), historicalInfo->getTimeStamp(), historicalInfo->getLevel(), historicalInfo->getCount(), &shortcuts); return WordProperty(wordCodePoints, &unigramProperty, &bigrams); return WordProperty(wordCodePoints.toVector(), &unigramProperty, &bigrams); } int Ver4PatriciaTriePolicy::getNextWordAndNextToken(const int token, int *const outCodePoints, Loading