diff options
author | 2013-04-25 11:59:31 -0700 | |
---|---|---|
committer | 2013-04-25 20:30:15 -0700 | |
commit | fd02ec10f0a0374096e88fa30a0e126d6ff11c72 (patch) | |
tree | d5a2ec85ec387febc08d03f9edb36df30875d72b | |
parent | df3ca0420bedc77e76f2c5a411f30d836bf8a286 (diff) | |
download | latinime-fd02ec10f0a0374096e88fa30a0e126d6ff11c72.tar.gz latinime-fd02ec10f0a0374096e88fa30a0e126d6ff11c72.tar.xz latinime-fd02ec10f0a0374096e88fa30a0e126d6ff11c72.zip |
Always consider corrections of intentional omissions (e.g., apostrophe)
Example: "thts" -> "that's"
Bug: 8721815
Change-Id: I8c1efbf651d2569ba3600516cc7447d46bf30fa4
-rw-r--r-- | native/jni/src/suggest/core/policy/traversal.h | 3 | ||||
-rw-r--r-- | native/jni/src/suggest/core/suggest.cpp | 4 | ||||
-rw-r--r-- | native/jni/src/suggest/policyimpl/typing/typing_traversal.h | 9 |
3 files changed, 12 insertions, 4 deletions
diff --git a/native/jni/src/suggest/core/policy/traversal.h b/native/jni/src/suggest/core/policy/traversal.h index 02c358aec..d3146da7f 100644 --- a/native/jni/src/suggest/core/policy/traversal.h +++ b/native/jni/src/suggest/core/policy/traversal.h @@ -28,7 +28,8 @@ class Traversal { virtual int getMaxPointerCount() const = 0; virtual bool allowsErrorCorrections(const DicNode *const dicNode) const = 0; virtual bool isOmission(const DicTraverseSession *const traverseSession, - const DicNode *const dicNode, const DicNode *const childDicNode) const = 0; + const DicNode *const dicNode, const DicNode *const childDicNode, + const bool allowsErrorCorrections) const = 0; virtual bool isSpaceSubstitutionTerminal(const DicTraverseSession *const traverseSession, const DicNode *const dicNode) const = 0; virtual bool isSpaceOmissionTerminal(const DicTraverseSession *const traverseSession, diff --git a/native/jni/src/suggest/core/suggest.cpp b/native/jni/src/suggest/core/suggest.cpp index b1a5ff24e..4f94a9a3b 100644 --- a/native/jni/src/suggest/core/suggest.cpp +++ b/native/jni/src/suggest/core/suggest.cpp @@ -296,8 +296,8 @@ void Suggest::expandCurrentDicNodes(DicTraverseSession *traverseSession) const { correctionDicNode.advanceDigraphIndex(); processDicNodeAsDigraph(traverseSession, &correctionDicNode); } - if (allowsErrorCorrections - && TRAVERSAL->isOmission(traverseSession, &dicNode, childDicNode)) { + if (TRAVERSAL->isOmission(traverseSession, &dicNode, childDicNode, + allowsErrorCorrections)) { // TODO: (Gesture) Change weight between omission and substitution errors // TODO: (Gesture) Terminal node should not be handled as omission correctionDicNode.initByCopy(childDicNode); diff --git a/native/jni/src/suggest/policyimpl/typing/typing_traversal.h b/native/jni/src/suggest/policyimpl/typing/typing_traversal.h index 9f8347452..fb1fb79d1 100644 --- a/native/jni/src/suggest/policyimpl/typing/typing_traversal.h +++ b/native/jni/src/suggest/policyimpl/typing/typing_traversal.h @@ -43,10 +43,17 @@ class TypingTraversal : public Traversal { } AK_FORCE_INLINE bool isOmission(const DicTraverseSession *const traverseSession, - const DicNode *const dicNode, const DicNode *const childDicNode) const { + const DicNode *const dicNode, const DicNode *const childDicNode, + const bool allowsErrorCorrections) const { if (!CORRECT_OMISSION) { return false; } + // Note: Always consider intentional omissions (like apostrophes) since they are common. + const bool canConsiderOmission = + allowsErrorCorrections || childDicNode->canBeIntentionalOmission(); + if (!canConsiderOmission) { + return false; + } const int inputSize = traverseSession->getInputSize(); // TODO: Don't refer to isCompletion? if (dicNode->isCompletion(inputSize)) { |