Loading native/jni/src/suggest/core/dicnode/dic_node.h +7 −3 Original line number Diff line number Diff line Loading @@ -213,14 +213,18 @@ class DicNode { return mDicNodeState.mDicNodeStateOutput.getCodePointAt(getNodeCodePointCount()); } bool isImpossibleBigramWord() const { // Check if the current word and the previous word can be considered as a valid multiple word // suggestion. bool isValidMultipleWordSuggestion() const { if (isBlacklistedOrNotAWord()) { return true; return false; } // Treat suggestion as invalid if the current and the previous word are single character // words. const int prevWordLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength() - mDicNodeState.mDicNodeStatePrevWord.getPrevWordStart() - 1; const int currentWordLen = getNodeCodePointCount(); return (prevWordLen == 1 && currentWordLen == 1); return (prevWordLen != 1 || currentWordLen != 1); } bool isFirstCharUppercase() const { Loading native/jni/src/suggest/core/dicnode/dic_node_utils.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ namespace latinime { /* static */ float DicNodeUtils::getBigramNodeImprobability( const BinaryDictionaryInfo *const binaryDictionaryInfo, const DicNode *const node, MultiBigramMap *multiBigramMap) { if (node->isImpossibleBigramWord()) { if (node->hasMultipleWords() && !node->isValidMultipleWordSuggestion()) { return static_cast<float>(MAX_VALUE_FOR_WEIGHTING); } const int probability = getBigramNodeProbability(binaryDictionaryInfo, node, multiBigramMap); Loading native/jni/src/suggest/policyimpl/typing/typing_scoring.h +4 −4 Original line number Diff line number Diff line Loading @@ -55,10 +55,10 @@ class TypingScoring : public Scoring { const int inputSize, const bool forceCommit) const { const float maxDistance = ScoringParams::DISTANCE_WEIGHT_LANGUAGE + static_cast<float>(inputSize) * ScoringParams::TYPING_MAX_OUTPUT_SCORE_PER_INPUT; return static_cast<int>((ScoringParams::TYPING_BASE_OUTPUT_SCORE - (compoundDistance / maxDistance) + (forceCommit ? ScoringParams::AUTOCORRECT_OUTPUT_THRESHOLD : 0.0f)) * SUGGEST_INTERFACE_OUTPUT_SCALE); const float score = ScoringParams::TYPING_BASE_OUTPUT_SCORE - compoundDistance / maxDistance + (forceCommit ? ScoringParams::AUTOCORRECT_OUTPUT_THRESHOLD : 0.0f); return static_cast<int>(score * SUGGEST_INTERFACE_OUTPUT_SCALE); } AK_FORCE_INLINE float getDoubleLetterDemotionDistanceCost(const int terminalIndex, Loading Loading
native/jni/src/suggest/core/dicnode/dic_node.h +7 −3 Original line number Diff line number Diff line Loading @@ -213,14 +213,18 @@ class DicNode { return mDicNodeState.mDicNodeStateOutput.getCodePointAt(getNodeCodePointCount()); } bool isImpossibleBigramWord() const { // Check if the current word and the previous word can be considered as a valid multiple word // suggestion. bool isValidMultipleWordSuggestion() const { if (isBlacklistedOrNotAWord()) { return true; return false; } // Treat suggestion as invalid if the current and the previous word are single character // words. const int prevWordLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength() - mDicNodeState.mDicNodeStatePrevWord.getPrevWordStart() - 1; const int currentWordLen = getNodeCodePointCount(); return (prevWordLen == 1 && currentWordLen == 1); return (prevWordLen != 1 || currentWordLen != 1); } bool isFirstCharUppercase() const { Loading
native/jni/src/suggest/core/dicnode/dic_node_utils.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ namespace latinime { /* static */ float DicNodeUtils::getBigramNodeImprobability( const BinaryDictionaryInfo *const binaryDictionaryInfo, const DicNode *const node, MultiBigramMap *multiBigramMap) { if (node->isImpossibleBigramWord()) { if (node->hasMultipleWords() && !node->isValidMultipleWordSuggestion()) { return static_cast<float>(MAX_VALUE_FOR_WEIGHTING); } const int probability = getBigramNodeProbability(binaryDictionaryInfo, node, multiBigramMap); Loading
native/jni/src/suggest/policyimpl/typing/typing_scoring.h +4 −4 Original line number Diff line number Diff line Loading @@ -55,10 +55,10 @@ class TypingScoring : public Scoring { const int inputSize, const bool forceCommit) const { const float maxDistance = ScoringParams::DISTANCE_WEIGHT_LANGUAGE + static_cast<float>(inputSize) * ScoringParams::TYPING_MAX_OUTPUT_SCORE_PER_INPUT; return static_cast<int>((ScoringParams::TYPING_BASE_OUTPUT_SCORE - (compoundDistance / maxDistance) + (forceCommit ? ScoringParams::AUTOCORRECT_OUTPUT_THRESHOLD : 0.0f)) * SUGGEST_INTERFACE_OUTPUT_SCALE); const float score = ScoringParams::TYPING_BASE_OUTPUT_SCORE - compoundDistance / maxDistance + (forceCommit ? ScoringParams::AUTOCORRECT_OUTPUT_THRESHOLD : 0.0f); return static_cast<int>(score * SUGGEST_INTERFACE_OUTPUT_SCALE); } AK_FORCE_INLINE float getDoubleLetterDemotionDistanceCost(const int terminalIndex, Loading