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

Commit 449245c8 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android Git Automerger
Browse files

am 5544b966: am 3e5f4b53: Merge "Check the elapsed time for decaying."

* commit '5544b966':
  Check the elapsed time for decaying.
parents 1f6b9d7f 5544b966
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