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

Commit 3e5f4b53 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge "Check the elapsed time for decaying."

parents 14d31d46 67c855ea
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@ 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;

+2 −2
Original line number Diff line number Diff line
@@ -360,13 +360,13 @@ int DynamicBigramListPolicy::followBigramLinkAndGetCurrentBigramPtNodePos(
}

bool DynamicBigramListPolicy::updateProbabilityForDecay(
        BigramListReadWriteUtils::BigramFlags bigramFlags, const int targetPtNodePos,
        const BigramListReadWriteUtils::BigramFlags bigramFlags, const int targetPtNodePos,
        int *const bigramEntryPos, bool *const outRemoved) const {
    *outRemoved = false;
    if (mIsDecayingDict) {
        // Update bigram probability for decaying.
        const int newProbability = ForgettingCurveUtils::getEncodedProbabilityToSave(
                BigramListReadWriteUtils::getProbabilityFromFlags(bigramFlags));
                BigramListReadWriteUtils::getProbabilityFromFlags(bigramFlags), mHeaderPolicy);
        if (ForgettingCurveUtils::isValidEncodedProbability(newProbability)) {
            // Write new probability.
            const BigramListReadWriteUtils::BigramFlags updatedBigramFlags =
+7 −3
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
namespace latinime {

class BufferWithExtendableBuffer;
class DictionaryHeaderStructurePolicy;
class DictionaryShortcutsStructurePolicy;

/*
@@ -34,10 +35,12 @@ class DictionaryShortcutsStructurePolicy;
 */
class DynamicBigramListPolicy : public DictionaryBigramsStructurePolicy {
 public:
    DynamicBigramListPolicy(BufferWithExtendableBuffer *const buffer,
    DynamicBigramListPolicy(const DictionaryHeaderStructurePolicy *const headerPolicy,
            BufferWithExtendableBuffer *const buffer,
            const DictionaryShortcutsStructurePolicy *const shortcutPolicy,
            const bool isDecayingDict)
            : mBuffer(buffer), mShortcutPolicy(shortcutPolicy), mIsDecayingDict(isDecayingDict) {}
            : mHeaderPolicy(headerPolicy), mBuffer(buffer), mShortcutPolicy(shortcutPolicy),
              mIsDecayingDict(isDecayingDict) {}

    ~DynamicBigramListPolicy() {}

@@ -74,6 +77,7 @@ class DynamicBigramListPolicy : public DictionaryBigramsStructurePolicy {
    static const int CONTINUING_BIGRAM_LINK_COUNT_LIMIT;
    static const int BIGRAM_ENTRY_COUNT_IN_A_BIGRAM_LIST_LIMIT;

    const DictionaryHeaderStructurePolicy *const mHeaderPolicy;
    BufferWithExtendableBuffer *const mBuffer;
    const DictionaryShortcutsStructurePolicy *const mShortcutPolicy;
    const bool mIsDecayingDict;
@@ -81,7 +85,7 @@ class DynamicBigramListPolicy : public DictionaryBigramsStructurePolicy {
    // Follow bigram link and return the position of bigram target PtNode that is currently valid.
    int followBigramLinkAndGetCurrentBigramPtNodePos(const int originalBigramPos) const;

    bool updateProbabilityForDecay(BigramListReadWriteUtils::BigramFlags bigramFlags,
    bool updateProbabilityForDecay(const BigramListReadWriteUtils::BigramFlags bigramFlags,
            const int targetPtNodePos, int *const bigramEntryPos, bool *const outRemoved) const;
};
} // namespace latinime
+3 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

#include "suggest/policyimpl/dictionary/dynamic_patricia_trie_gc_event_listeners.h"

#include "suggest/core/policy/dictionary_header_structure_policy.h"
#include "suggest/policyimpl/dictionary/utils/forgetting_curve_utils.h"

namespace latinime {
@@ -29,7 +30,8 @@ bool DynamicPatriciaTrieGcEventListeners
    bool isUselessPtNode = !node->isTerminal();
    if (node->isTerminal() && mIsDecayingDict) {
        const int newProbability =
                ForgettingCurveUtils::getEncodedProbabilityToSave(node->getProbability());
                ForgettingCurveUtils::getEncodedProbabilityToSave(node->getProbability(),
                        mHeaderPolicy);
        int writingPos = node->getProbabilityFieldPos();
        // Update probability.
        if (!DynamicPatriciaTrieWritingUtils::writeProbabilityAndAdvancePosition(
+10 −4
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@

namespace latinime {

class DictionaryHeaderStructurePolicy;

class DynamicPatriciaTrieGcEventListeners {
 public:
    // Updates all PtNodes that can be reached from the root. Checks if each PtNode is useless or
@@ -38,10 +40,12 @@ class DynamicPatriciaTrieGcEventListeners {
        : public DynamicPatriciaTrieReadingHelper::TraversingEventListener {
     public:
        TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted(
                const DictionaryHeaderStructurePolicy *const headerPolicy,
                DynamicPatriciaTrieWritingHelper *const writingHelper,
                BufferWithExtendableBuffer *const buffer, const bool isDecayingDict)
                : mWritingHelper(writingHelper), mBuffer(buffer), mIsDecayingDict(isDecayingDict),
                  mValueStack(), mChildrenValue(0), mValidUnigramCount(0) {}
                : mHeaderPolicy(headerPolicy), mWritingHelper(writingHelper), mBuffer(buffer),
                  mIsDecayingDict(isDecayingDict), mValueStack(), mChildrenValue(0),
                  mValidUnigramCount(0) {}

        ~TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted() {};

@@ -72,9 +76,10 @@ class DynamicPatriciaTrieGcEventListeners {
        DISALLOW_IMPLICIT_CONSTRUCTORS(
                TraversePolicyToUpdateUnigramProbabilityAndMarkUselessPtNodesAsDeleted);

        const DictionaryHeaderStructurePolicy *const mHeaderPolicy;
        DynamicPatriciaTrieWritingHelper *const mWritingHelper;
        BufferWithExtendableBuffer *const mBuffer;
        const int mIsDecayingDict;
        const bool mIsDecayingDict;
        std::vector<int> mValueStack;
        int mChildrenValue;
        int mValidUnigramCount;
@@ -85,7 +90,8 @@ class DynamicPatriciaTrieGcEventListeners {
    class TraversePolicyToUpdateBigramProbability
            : public DynamicPatriciaTrieReadingHelper::TraversingEventListener {
     public:
        TraversePolicyToUpdateBigramProbability(DynamicBigramListPolicy *const bigramPolicy)
        TraversePolicyToUpdateBigramProbability(
                DynamicBigramListPolicy *const bigramPolicy)
                : mBigramPolicy(bigramPolicy), mValidBigramEntryCount(0) {}

        bool onAscend() { return true; }
Loading