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

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

Merge "Quit using dicNode.getUnigramProbability()."

parents 664d5c87 c32356c2
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -54,15 +54,18 @@ namespace latinime {
        current.swap(next);
        current.swap(next);
    }
    }


    int maxUnigramProbability = NOT_A_PROBABILITY;
    int maxProbability = NOT_A_PROBABILITY;
    for (const DicNode &dicNode : current) {
    for (const DicNode &dicNode : current) {
        if (!dicNode.isTerminalDicNode()) {
        if (!dicNode.isTerminalDicNode()) {
            continue;
            continue;
        }
        }
        const WordAttributes wordAttributes =
                dictionaryStructurePolicy->getWordAttributesInContext(dicNode.getPrevWordIds(),
                        dicNode.getWordId(), nullptr /* multiBigramMap */);
        // dicNode can contain case errors, accent errors, intentional omissions or digraphs.
        // dicNode can contain case errors, accent errors, intentional omissions or digraphs.
        maxUnigramProbability = std::max(maxUnigramProbability, dicNode.getUnigramProbability());
        maxProbability = std::max(maxProbability, wordAttributes.getProbability());
    }
    }
    return maxUnigramProbability;
    return maxProbability;
}
}


/* static */ void DictionaryUtils::processChildDicNodes(
/* static */ void DictionaryUtils::processChildDicNodes(
+2 −1
Original line number Original line Diff line number Diff line
@@ -48,7 +48,8 @@ class Traversal {
    virtual int getTerminalCacheSize() const = 0;
    virtual int getTerminalCacheSize() const = 0;
    virtual bool isPossibleOmissionChildNode(const DicTraverseSession *const traverseSession,
    virtual bool isPossibleOmissionChildNode(const DicTraverseSession *const traverseSession,
            const DicNode *const parentDicNode, const DicNode *const dicNode) const = 0;
            const DicNode *const parentDicNode, const DicNode *const dicNode) const = 0;
    virtual bool isGoodToTraverseNextWord(const DicNode *const dicNode) const = 0;
    virtual bool isGoodToTraverseNextWord(const DicNode *const dicNode,
            const int probability) const = 0;


 protected:
 protected:
    Traversal() {}
    Traversal() {}
+6 −1
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@
#include "suggest/core/dicnode/dic_node_vector.h"
#include "suggest/core/dicnode/dic_node_vector.h"
#include "suggest/core/dictionary/dictionary.h"
#include "suggest/core/dictionary/dictionary.h"
#include "suggest/core/dictionary/digraph_utils.h"
#include "suggest/core/dictionary/digraph_utils.h"
#include "suggest/core/dictionary/word_attributes.h"
#include "suggest/core/layout/proximity_info.h"
#include "suggest/core/layout/proximity_info.h"
#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
#include "suggest/core/policy/dictionary_structure_with_buffer_policy.h"
#include "suggest/core/policy/traversal.h"
#include "suggest/core/policy/traversal.h"
@@ -412,7 +413,11 @@ void Suggest::weightChildNode(DicTraverseSession *traverseSession, DicNode *dicN
 */
 */
void Suggest::createNextWordDicNode(DicTraverseSession *traverseSession, DicNode *dicNode,
void Suggest::createNextWordDicNode(DicTraverseSession *traverseSession, DicNode *dicNode,
        const bool spaceSubstitution) const {
        const bool spaceSubstitution) const {
    if (!TRAVERSAL->isGoodToTraverseNextWord(dicNode)) {
    const WordAttributes wordAttributes =
            traverseSession->getDictionaryStructurePolicy()->getWordAttributesInContext(
                    dicNode->getPrevWordIds(), dicNode->getWordId(),
                    traverseSession->getMultiBigramMap());
    if (!TRAVERSAL->isGoodToTraverseNextWord(dicNode, wordAttributes.getProbability())) {
        return;
        return;
    }
    }


+2 −3
Original line number Original line Diff line number Diff line
@@ -161,9 +161,8 @@ class TypingTraversal : public Traversal {
        return true;
        return true;
    }
    }


    AK_FORCE_INLINE bool isGoodToTraverseNextWord(const DicNode *const dicNode) const {
    AK_FORCE_INLINE bool isGoodToTraverseNextWord(const DicNode *const dicNode,
        // TODO: Quit using unigram probability and use probability in the context.
            const int probability) const {
        const int probability = dicNode->getUnigramProbability();
        if (probability < ScoringParams::THRESHOLD_NEXT_WORD_PROBABILITY) {
        if (probability < ScoringParams::THRESHOLD_NEXT_WORD_PROBABILITY) {
            return false;
            return false;
        }
        }