Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57816c7a authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Check header attributes for forgetting curve.

Bug: 13197276
Change-Id: Ib360010f309fd1ed3e81cf23aa10c1cfe82781a6
parent f818b1aa
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -44,8 +44,6 @@ class DictionaryHeaderStructurePolicy {

    virtual float getMultiWordCostMultiplier() const = 0;

    virtual int getLastDecayedTime() const = 0;

    virtual void readHeaderValueOrQuestionMark(const char *const key, int *outValue,
            int outValueSize) const = 0;

+5 −3
Original line number Diff line number Diff line
@@ -37,7 +37,8 @@ void Ver4BigramListPolicy::getNextBigram(int *const outBigramPos, int *const out
    if (outProbability) {
        if (bigramEntry.hasHistoricalInfo()) {
            *outProbability =
                    ForgettingCurveUtils::decodeProbability(bigramEntry.getHistoricalInfo());
                    ForgettingCurveUtils::decodeProbability(bigramEntry.getHistoricalInfo(),
                            mHeaderPolicy);
        } else {
            *outProbability = bigramEntry.getProbability();
        }
@@ -160,7 +161,7 @@ bool Ver4BigramListPolicy::updateAllBigramEntriesAndDeleteUselessEntries(const i
            }
        } else if (bigramEntry.hasHistoricalInfo()) {
            const HistoricalInfo historicalInfo = ForgettingCurveUtils::createHistoricalInfoToSave(
                    bigramEntry.getHistoricalInfo());
                    bigramEntry.getHistoricalInfo(), mHeaderPolicy);
            if (ForgettingCurveUtils::needsToKeep(&historicalInfo)) {
                const BigramEntry updatedBigramEntry =
                        bigramEntry.updateHistoricalInfoAndGetEntry(&historicalInfo);
@@ -230,7 +231,8 @@ const BigramEntry Ver4BigramListPolicy::createUpdatedBigramEntryFrom(
    if (mHeaderPolicy->hasHistoricalInfoOfWords()) {
        const HistoricalInfo updatedHistoricalInfo =
                ForgettingCurveUtils::createUpdatedHistoricalInfo(
                        originalBigramEntry->getHistoricalInfo(), newProbability, timestamp);
                        originalBigramEntry->getHistoricalInfo(), newProbability, timestamp,
                        mHeaderPolicy);
        return originalBigramEntry->updateHistoricalInfoAndGetEntry(&updatedHistoricalInfo);
    } else {
        return originalBigramEntry->updateProbabilityAndGetEntry(newProbability);
+2 −0
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@ const char *const HeaderPolicy::HAS_HISTORICAL_INFO_KEY = "HAS_HISTORICAL_INFO";
const char *const HeaderPolicy::LOCALE_KEY = "locale"; // match Java declaration
const int HeaderPolicy::DEFAULT_MULTIPLE_WORDS_DEMOTION_RATE = 100;
const float HeaderPolicy::MULTIPLE_WORD_COST_MULTIPLIER_SCALE = 100.0f;
const int HeaderPolicy::DEFAULT_FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP = 4;
const int HeaderPolicy::DEFAULT_FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID = 0;

// Used for logging. Question mark is used to indicate that the key is not found.
void HeaderPolicy::readHeaderValueOrQuestionMark(const char *const key, int *outValue,
+10 −0
Original line number Diff line number Diff line
@@ -159,6 +159,14 @@ class HeaderPolicy : public DictionaryHeaderStructurePolicy {
        return &mAttributeMap;
    }

    AK_FORCE_INLINE int getForgettingCurveOccurrencesToLevelUp() const {
        return DEFAULT_FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP;
    }

    AK_FORCE_INLINE int getForgettingCurveProbabilityValuesTableId() const {
        return DEFAULT_FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID;
    }

    void readHeaderValueOrQuestionMark(const char *const key,
            int *outValue, int outValueSize) const;

@@ -185,6 +193,8 @@ class HeaderPolicy : public DictionaryHeaderStructurePolicy {
    static const char *const LOCALE_KEY;
    static const int DEFAULT_MULTIPLE_WORDS_DEMOTION_RATE;
    static const float MULTIPLE_WORD_COST_MULTIPLIER_SCALE;
    static const int DEFAULT_FORGETTING_CURVE_OCCURRENCES_TO_LEVEL_UP;
    static const int DEFAULT_FORGETTING_CURVE_PROBABILITY_VALUES_TABLE_ID;

    const FormatUtils::FORMAT_VERSION mDictFormatVersion;
    const HeaderReadWriteUtils::DictionaryFlags mDictionaryFlags;
+1 −1
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ const PtNodeParams Ver4PatriciaTrieNodeReader::fetchPtNodeInfoFromBufferAndProce
                mProbabilityDictContent->getProbabilityEntry(terminalId);
        if (probabilityEntry.hasHistoricalInfo()) {
            probability = ForgettingCurveUtils::decodeProbability(
                    probabilityEntry.getHistoricalInfo());
                    probabilityEntry.getHistoricalInfo(), mHeaderPolicy);
        } else {
            probability = probabilityEntry.getProbability();
        }
Loading