Merge "Change method name of getDepth and getTotalLength."

main
Keisuke Kuroynagi 2013-06-21 06:58:37 +00:00 committed by Android (Google) Code Review
commit e105fdfaea
3 changed files with 24 additions and 24 deletions

View File

@ -28,13 +28,13 @@
#if DEBUG_DICT #if DEBUG_DICT
#define LOGI_SHOW_ADD_COST_PROP \ #define LOGI_SHOW_ADD_COST_PROP \
do { char charBuf[50]; \ do { char charBuf[50]; \
INTS_TO_CHARS(getOutputWordBuf(), getDepth(), charBuf); \ INTS_TO_CHARS(getOutputWordBuf(), getNodeCodePointCount(), charBuf); \
AKLOGI("%20s, \"%c\", size = %03d, total = %03d, index(0) = %02d, dist = %.4f, %s,,", \ AKLOGI("%20s, \"%c\", size = %03d, total = %03d, index(0) = %02d, dist = %.4f, %s,,", \
__FUNCTION__, getNodeCodePoint(), inputSize, getTotalInputIndex(), \ __FUNCTION__, getNodeCodePoint(), inputSize, getTotalInputIndex(), \
getInputIndex(0), getNormalizedCompoundDistance(), charBuf); } while (0) getInputIndex(0), getNormalizedCompoundDistance(), charBuf); } while (0)
#define DUMP_WORD_AND_SCORE(header) \ #define DUMP_WORD_AND_SCORE(header) \
do { char charBuf[50]; char prevWordCharBuf[50]; \ do { char charBuf[50]; char prevWordCharBuf[50]; \
INTS_TO_CHARS(getOutputWordBuf(), getDepth(), charBuf); \ INTS_TO_CHARS(getOutputWordBuf(), getNodeCodePointCount(), charBuf); \
INTS_TO_CHARS(mDicNodeState.mDicNodeStatePrevWord.mPrevWord, \ INTS_TO_CHARS(mDicNodeState.mDicNodeStatePrevWord.mPrevWord, \
mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength(), prevWordCharBuf); \ mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength(), prevWordCharBuf); \
AKLOGI("#%8s, %5f, %5f, %5f, %5f, %s, %s, %d,,", header, \ AKLOGI("#%8s, %5f, %5f, %5f, %5f, %s, %s, %d,,", header, \
@ -162,7 +162,7 @@ class DicNode {
const bool isTerminal, const bool hasMultipleChars, const bool hasChildren, const bool isTerminal, const bool hasMultipleChars, const bool hasChildren,
const uint16_t additionalSubwordLength, const int *additionalSubword) { const uint16_t additionalSubwordLength, const int *additionalSubword) {
mIsUsed = true; mIsUsed = true;
uint16_t newDepth = static_cast<uint16_t>(dicNode->getDepth() + 1); uint16_t newDepth = static_cast<uint16_t>(dicNode->getNodeCodePointCount() + 1);
mIsCachedForNextSuggestion = dicNode->mIsCachedForNextSuggestion; mIsCachedForNextSuggestion = dicNode->mIsCachedForNextSuggestion;
const uint16_t newLeavingDepth = static_cast<uint16_t>( const uint16_t newLeavingDepth = static_cast<uint16_t>(
dicNode->mDicNodeProperties.getLeavingDepth() + additionalSubwordLength); dicNode->mDicNodeProperties.getLeavingDepth() + additionalSubwordLength);
@ -185,7 +185,7 @@ class DicNode {
} }
bool isRoot() const { bool isRoot() const {
return getDepth() == 0; return getNodeCodePointCount() == 0;
} }
bool hasChildren() const { bool hasChildren() const {
@ -193,12 +193,12 @@ class DicNode {
} }
bool isLeavingNode() const { bool isLeavingNode() const {
ASSERT(getDepth() <= getLeavingDepth()); ASSERT(getNodeCodePointCount() <= getLeavingDepth());
return getDepth() == getLeavingDepth(); return getNodeCodePointCount() == getLeavingDepth();
} }
AK_FORCE_INLINE bool isFirstLetter() const { AK_FORCE_INLINE bool isFirstLetter() const {
return getDepth() == 1; return getNodeCodePointCount() == 1;
} }
bool isCached() const { bool isCached() const {
@ -211,7 +211,7 @@ class DicNode {
// Used to expand the node in DicNodeUtils // Used to expand the node in DicNodeUtils
int getNodeTypedCodePoint() const { int getNodeTypedCodePoint() const {
return mDicNodeState.mDicNodeStateOutput.getCodePointAt(getDepth()); return mDicNodeState.mDicNodeStateOutput.getCodePointAt(getNodeCodePointCount());
} }
bool isImpossibleBigramWord() const { bool isImpossibleBigramWord() const {
@ -220,7 +220,7 @@ class DicNode {
} }
const int prevWordLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength() const int prevWordLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength()
- mDicNodeState.mDicNodeStatePrevWord.getPrevWordStart() - 1; - mDicNodeState.mDicNodeStatePrevWord.getPrevWordStart() - 1;
const int currentWordLen = getDepth(); const int currentWordLen = getNodeCodePointCount();
return (prevWordLen == 1 && currentWordLen == 1); return (prevWordLen == 1 && currentWordLen == 1);
} }
@ -268,13 +268,13 @@ class DicNode {
AK_FORCE_INLINE bool isTerminalWordNode() const { AK_FORCE_INLINE bool isTerminalWordNode() const {
const bool isTerminalNodes = mDicNodeProperties.isTerminal(); const bool isTerminalNodes = mDicNodeProperties.isTerminal();
const int currentNodeDepth = getDepth(); const int currentNodeDepth = getNodeCodePointCount();
const int terminalNodeDepth = mDicNodeProperties.getLeavingDepth(); const int terminalNodeDepth = mDicNodeProperties.getLeavingDepth();
return isTerminalNodes && currentNodeDepth > 0 && currentNodeDepth == terminalNodeDepth; return isTerminalNodes && currentNodeDepth > 0 && currentNodeDepth == terminalNodeDepth;
} }
bool shouldBeFilterdBySafetyNetForBigram() const { bool shouldBeFilterdBySafetyNetForBigram() const {
const uint16_t currentDepth = getDepth(); const uint16_t currentDepth = getNodeCodePointCount();
const int prevWordLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength() const int prevWordLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength()
- mDicNodeState.mDicNodeStatePrevWord.getPrevWordStart() - 1; - mDicNodeState.mDicNodeStatePrevWord.getPrevWordStart() - 1;
return !(currentDepth > 0 && (currentDepth != 1 || prevWordLen != 1)); return !(currentDepth > 0 && (currentDepth != 1 || prevWordLen != 1));
@ -286,7 +286,7 @@ class DicNode {
bool isTotalInputSizeExceedingLimit() const { bool isTotalInputSizeExceedingLimit() const {
const int prevWordsLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength(); const int prevWordsLen = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength();
const int currentWordDepth = getDepth(); const int currentWordDepth = getNodeCodePointCount();
// TODO: 3 can be 2? Needs to be investigated. // TODO: 3 can be 2? Needs to be investigated.
// TODO: Have a const variable for 3 (or 2) // TODO: Have a const variable for 3 (or 2)
return prevWordsLen + currentWordDepth > MAX_WORD_LENGTH - 3; return prevWordsLen + currentWordDepth > MAX_WORD_LENGTH - 3;
@ -321,7 +321,7 @@ class DicNode {
void outputResult(int *dest) const { void outputResult(int *dest) const {
const uint16_t prevWordLength = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength(); const uint16_t prevWordLength = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength();
const uint16_t currentDepth = getDepth(); const uint16_t currentDepth = getNodeCodePointCount();
DicNodeUtils::appendTwoWords(mDicNodeState.mDicNodeStatePrevWord.mPrevWord, DicNodeUtils::appendTwoWords(mDicNodeState.mDicNodeStatePrevWord.mPrevWord,
prevWordLength, getOutputWordBuf(), currentDepth, dest); prevWordLength, getOutputWordBuf(), currentDepth, dest);
DUMP_WORD_AND_SCORE("OUTPUT"); DUMP_WORD_AND_SCORE("OUTPUT");
@ -480,13 +480,13 @@ class DicNode {
return mDicNodeProperties.getAttributesPos(); return mDicNodeProperties.getAttributesPos();
} }
inline uint16_t getDepth() const { inline uint16_t getNodeCodePointCount() const {
return mDicNodeProperties.getDepth(); return mDicNodeProperties.getDepth();
} }
// "Length" includes spaces. // Returns code point count including spaces
inline uint16_t getTotalLength() const { inline uint16_t getTotalNodeCodePointCount() const {
return getDepth() + mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength(); return getNodeCodePointCount() + mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength();
} }
AK_FORCE_INLINE void dump(const char *tag) const { AK_FORCE_INLINE void dump(const char *tag) const {
@ -521,8 +521,8 @@ class DicNode {
} else if (diff < -MIN_DIFF) { } else if (diff < -MIN_DIFF) {
return false; return false;
} }
const int depth = getDepth(); const int depth = getNodeCodePointCount();
const int depthDiff = right->getDepth() - depth; const int depthDiff = right->getNodeCodePointCount() - depth;
if (depthDiff != 0) { if (depthDiff != 0) {
return depthDiff > 0; return depthDiff > 0;
} }

View File

@ -147,7 +147,7 @@ class TypingTraversal : public Traversal {
AK_FORCE_INLINE bool sameAsTyped( AK_FORCE_INLINE bool sameAsTyped(
const DicTraverseSession *const traverseSession, const DicNode *const dicNode) const { const DicTraverseSession *const traverseSession, const DicNode *const dicNode) const {
return traverseSession->getProximityInfoState(0)->sameAsTyped( return traverseSession->getProximityInfoState(0)->sameAsTyped(
dicNode->getOutputWordBuf(), dicNode->getDepth()); dicNode->getOutputWordBuf(), dicNode->getNodeCodePointCount());
} }
AK_FORCE_INLINE int getMaxCacheSize() const { AK_FORCE_INLINE int getMaxCacheSize() const {
@ -171,7 +171,7 @@ class TypingTraversal : public Traversal {
return false; return false;
} }
const int c = dicNode->getOutputWordBuf()[0]; const int c = dicNode->getOutputWordBuf()[0];
const bool shortCappedWord = dicNode->getDepth() const bool shortCappedWord = dicNode->getNodeCodePointCount()
< ScoringParams::THRESHOLD_SHORT_WORD_LENGTH && CharUtils::isAsciiUpper(c); < ScoringParams::THRESHOLD_SHORT_WORD_LENGTH && CharUtils::isAsciiUpper(c);
return !shortCappedWord return !shortCappedWord
|| probability >= ScoringParams::THRESHOLD_NEXT_WORD_PROBABILITY_FOR_CAPPED; || probability >= ScoringParams::THRESHOLD_NEXT_WORD_PROBABILITY_FOR_CAPPED;

View File

@ -55,7 +55,7 @@ class TypingWeighting : public Weighting {
const bool isZeroCostOmission = parentDicNode->isZeroCostOmission(); const bool isZeroCostOmission = parentDicNode->isZeroCostOmission();
const bool sameCodePoint = dicNode->isSameNodeCodePoint(parentDicNode); const bool sameCodePoint = dicNode->isSameNodeCodePoint(parentDicNode);
// If the traversal omitted the first letter then the dicNode should now be on the second. // If the traversal omitted the first letter then the dicNode should now be on the second.
const bool isFirstLetterOmission = dicNode->getDepth() == 2; const bool isFirstLetterOmission = dicNode->getNodeCodePointCount() == 2;
float cost = 0.0f; float cost = 0.0f;
if (isZeroCostOmission) { if (isZeroCostOmission) {
cost = 0.0f; cost = 0.0f;
@ -83,7 +83,7 @@ class TypingWeighting : public Weighting {
const bool isProximity = isProximityDicNode(traverseSession, dicNode); const bool isProximity = isProximityDicNode(traverseSession, dicNode);
float cost = isProximity ? (isFirstChar ? ScoringParams::FIRST_PROXIMITY_COST float cost = isProximity ? (isFirstChar ? ScoringParams::FIRST_PROXIMITY_COST
: ScoringParams::PROXIMITY_COST) : 0.0f; : ScoringParams::PROXIMITY_COST) : 0.0f;
if (dicNode->getDepth() == 2) { if (dicNode->getNodeCodePointCount() == 2) {
// At the second character of the current word, we check if the first char is uppercase // At the second character of the current word, we check if the first char is uppercase
// and the word is a second or later word of a multiple word suggestion. We demote it // and the word is a second or later word of a multiple word suggestion. We demote it
// if so. // if so.
@ -131,7 +131,7 @@ class TypingWeighting : public Weighting {
const float dist = traverseSession->getProximityInfoState(0)->getPointToKeyLength( const float dist = traverseSession->getProximityInfoState(0)->getPointToKeyLength(
parentPointIndex + 1, currentCodePoint); parentPointIndex + 1, currentCodePoint);
const float weightedDistance = dist * ScoringParams::DISTANCE_WEIGHT_LENGTH; const float weightedDistance = dist * ScoringParams::DISTANCE_WEIGHT_LENGTH;
const bool singleChar = dicNode->getDepth() == 1; const bool singleChar = dicNode->getNodeCodePointCount() == 1;
const float cost = (singleChar ? ScoringParams::INSERTION_COST_FIRST_CHAR : 0.0f) const float cost = (singleChar ? ScoringParams::INSERTION_COST_FIRST_CHAR : 0.0f)
+ (sameCodePoint ? ScoringParams::INSERTION_COST_SAME_CHAR + (sameCodePoint ? ScoringParams::INSERTION_COST_SAME_CHAR
: ScoringParams::INSERTION_COST); : ScoringParams::INSERTION_COST);