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

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

Merge "Remove unigram probability from dicNode."

parents 7db0ee86 d53aea5a
Loading
Loading
Loading
Loading
+2 −9
Original line number Diff line number Diff line
@@ -137,15 +137,13 @@ class DicNode {
    }

    void initAsChild(const DicNode *const dicNode, const int childrenPtNodeArrayPos,
            const int unigramProbability, const int wordId,
            const CodePointArrayView mergedCodePoints) {
            const int wordId, const CodePointArrayView mergedCodePoints) {
        uint16_t newDepth = static_cast<uint16_t>(dicNode->getNodeCodePointCount() + 1);
        mIsCachedForNextSuggestion = dicNode->mIsCachedForNextSuggestion;
        const uint16_t newLeavingDepth = static_cast<uint16_t>(
                dicNode->mDicNodeProperties.getLeavingDepth() + mergedCodePoints.size());
        mDicNodeProperties.init(childrenPtNodeArrayPos, mergedCodePoints[0],
                unigramProbability, wordId, newDepth, newLeavingDepth,
                dicNode->mDicNodeProperties.getPrevWordIds());
                wordId, newDepth, newLeavingDepth, dicNode->mDicNodeProperties.getPrevWordIds());
        mDicNodeState.init(&dicNode->mDicNodeState, mergedCodePoints.size(),
                mergedCodePoints.data());
        PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
@@ -215,11 +213,6 @@ class DicNode {
        return mDicNodeProperties.getChildrenPtNodeArrayPos();
    }

    // TODO: Remove
    int getUnigramProbability() const {
        return mDicNodeProperties.getUnigramProbability();
    }

    AK_FORCE_INLINE bool isTerminalDicNode() const {
        const bool isTerminalPtNode = mDicNodeProperties.isTerminal();
        const int currentDicNodeDepth = getNodeCodePointCount();
+2 −4
Original line number Diff line number Diff line
@@ -60,12 +60,10 @@ class DicNodeVector {
    }

    void pushLeavingChild(const DicNode *const dicNode, const int childrenPtNodeArrayPos,
            const int unigramProbability, const int wordId,
            const CodePointArrayView mergedCodePoints) {
            const int wordId, const CodePointArrayView mergedCodePoints) {
        ASSERT(!mLock);
        mDicNodes.emplace_back();
        mDicNodes.back().initAsChild(dicNode, childrenPtNodeArrayPos, unigramProbability,
                wordId, mergedCodePoints);
        mDicNodes.back().initAsChild(dicNode, childrenPtNodeArrayPos, wordId, mergedCodePoints);
    }

    DicNode *operator[](const int id) {
+4 −16
Original line number Diff line number Diff line
@@ -29,19 +29,16 @@ namespace latinime {
class DicNodeProperties {
 public:
    AK_FORCE_INLINE DicNodeProperties()
            : mChildrenPtNodeArrayPos(NOT_A_DICT_POS), mUnigramProbability(NOT_A_PROBABILITY),
              mDicNodeCodePoint(NOT_A_CODE_POINT), mWordId(NOT_A_WORD_ID), mDepth(0),
              mLeavingDepth(0) {}
            : mChildrenPtNodeArrayPos(NOT_A_DICT_POS), mDicNodeCodePoint(NOT_A_CODE_POINT),
              mWordId(NOT_A_WORD_ID), mDepth(0), mLeavingDepth(0) {}

    ~DicNodeProperties() {}

    // Should be called only once per DicNode is initialized.
    void init(const int childrenPos, const int nodeCodePoint, const int unigramProbability,
            const int wordId, const uint16_t depth, const uint16_t leavingDepth,
            const int *const prevWordIds) {
    void init(const int childrenPos, const int nodeCodePoint, const int wordId,
            const uint16_t depth, const uint16_t leavingDepth, const int *const prevWordIds) {
        mChildrenPtNodeArrayPos = childrenPos;
        mDicNodeCodePoint = nodeCodePoint;
        mUnigramProbability = unigramProbability;
        mWordId = wordId;
        mDepth = depth;
        mLeavingDepth = leavingDepth;
@@ -52,7 +49,6 @@ class DicNodeProperties {
    void init(const int rootPtNodeArrayPos, const int *const prevWordIds) {
        mChildrenPtNodeArrayPos = rootPtNodeArrayPos;
        mDicNodeCodePoint = NOT_A_CODE_POINT;
        mUnigramProbability = NOT_A_PROBABILITY;
        mWordId = NOT_A_WORD_ID;
        mDepth = 0;
        mLeavingDepth = 0;
@@ -62,7 +58,6 @@ class DicNodeProperties {
    void initByCopy(const DicNodeProperties *const dicNodeProp) {
        mChildrenPtNodeArrayPos = dicNodeProp->mChildrenPtNodeArrayPos;
        mDicNodeCodePoint = dicNodeProp->mDicNodeCodePoint;
        mUnigramProbability = dicNodeProp->mUnigramProbability;
        mWordId = dicNodeProp->mWordId;
        mDepth = dicNodeProp->mDepth;
        mLeavingDepth = dicNodeProp->mLeavingDepth;
@@ -73,7 +68,6 @@ class DicNodeProperties {
    void init(const DicNodeProperties *const dicNodeProp, const int codePoint) {
        mChildrenPtNodeArrayPos = dicNodeProp->mChildrenPtNodeArrayPos;
        mDicNodeCodePoint = codePoint; // Overwrite the node char of a passing child
        mUnigramProbability = dicNodeProp->mUnigramProbability;
        mWordId = dicNodeProp->mWordId;
        mDepth = dicNodeProp->mDepth + 1; // Increment the depth of a passing child
        mLeavingDepth = dicNodeProp->mLeavingDepth;
@@ -84,10 +78,6 @@ class DicNodeProperties {
        return mChildrenPtNodeArrayPos;
    }

    int getUnigramProbability() const {
        return mUnigramProbability;
    }

    int getDicNodeCodePoint() const {
        return mDicNodeCodePoint;
    }
@@ -122,8 +112,6 @@ class DicNodeProperties {
    // Use a default copy constructor and an assign operator because shallow copies are ok
    // for this class
    int mChildrenPtNodeArrayPos;
    // TODO: Remove
    int mUnigramProbability;
    int mDicNodeCodePoint;
    int mWordId;
    uint16_t mDepth;
+1 −1
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ void Ver4PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const d
        }
        const int wordId = isTerminal ? ptNodeParams.getHeadPos() : NOT_A_WORD_ID;
        childDicNodes->pushLeavingChild(dicNode, ptNodeParams.getChildrenPos(),
                ptNodeParams.getProbability(), wordId, ptNodeParams.getCodePointArrayView());
                wordId, ptNodeParams.getCodePointArrayView());
    }
    if (readingHelper.isError()) {
        mIsCorrupted = true;
+1 −1
Original line number Diff line number Diff line
@@ -407,7 +407,7 @@ int PatriciaTriePolicy::createAndGetLeavingChildNode(const DicNode *const dicNod
    // Skip PtNodes don't start with Unicode code point because they represent non-word information.
    if (CharUtils::isInUnicodeSpace(mergedNodeCodePoints[0])) {
        const int wordId = PatriciaTrieReadingUtils::isTerminal(flags) ? ptNodePos : NOT_A_WORD_ID;
        childDicNodes->pushLeavingChild(dicNode, childrenPos, probability, wordId,
        childDicNodes->pushLeavingChild(dicNode, childrenPos, wordId,
                CodePointArrayView(mergedNodeCodePoints, mergedNodeCodePointCount));
    }
    return siblingPos;
Loading