From 0c0b8207cdabc1f5c1a81441c1ab0cb715e458ea Mon Sep 17 00:00:00 2001 From: Keisuke Kuroyanagi Date: Tue, 16 Sep 2014 15:37:09 +0900 Subject: [PATCH] Support adding n-gram entry in structure policy. Bug: 14425059 Change-Id: Ia207d3c4735b1d6d43f18d18a70d28af613cb458 --- .../structure/pt_common/dynamic_pt_updating_helper.h | 2 ++ .../structure/v4/ver4_patricia_trie_node_writer.cpp | 10 ++++------ .../structure/v4/ver4_patricia_trie_policy.cpp | 11 +---------- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h index 97c05c1ea..b61d9dbe3 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h @@ -43,10 +43,12 @@ class DynamicPtUpdatingHelper { const int *const wordCodePoints, const int codePointCount, const UnigramProperty *const unigramProperty, bool *const outAddedNewUnigram); + // TODO: Remove after stopping supporting v402. // Add an n-gram entry. bool addNgramEntry(const PtNodePosArrayView prevWordsPtNodePos, const int wordPos, const BigramProperty *const bigramProperty, bool *const outAddedNewEntry); + // TODO: Remove after stopping supporting v402. // Remove an n-gram entry. bool removeNgramEntry(const PtNodePosArrayView prevWordsPtNodePos, const int wordPos); diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp index 9ca712470..bc6e0ddab 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp @@ -211,19 +211,17 @@ bool Ver4PatriciaTrieNodeWriter::writeNewTerminalPtNodeAndAdvancePosition( bool Ver4PatriciaTrieNodeWriter::addNgramEntry(const WordIdArrayView prevWordIds, const int wordId, const BigramProperty *const bigramProperty, bool *const outAddedNewBigram) { - // TODO: Support n-gram. LanguageModelDictContent *const languageModelDictContent = mBuffers->getMutableLanguageModelDictContent(); const ProbabilityEntry probabilityEntry = - languageModelDictContent->getNgramProbabilityEntry( - prevWordIds.limit(1 /* maxSize */), wordId); + languageModelDictContent->getNgramProbabilityEntry(prevWordIds, wordId); const ProbabilityEntry probabilityEntryOfBigramProperty(bigramProperty); const ProbabilityEntry updatedProbabilityEntry = createUpdatedEntryFrom( &probabilityEntry, &probabilityEntryOfBigramProperty); if (!languageModelDictContent->setNgramProbabilityEntry( - prevWordIds.limit(1 /* maxSize */), wordId, &updatedProbabilityEntry)) { - AKLOGE("Cannot add new ngram entry. prevWordId: %d, wordId: %d", - prevWordIds[0], wordId); + prevWordIds, wordId, &updatedProbabilityEntry)) { + AKLOGE("Cannot add new ngram entry. prevWordId[0]: %d, prevWordId.size(): %zd, wordId: %d", + prevWordIds[0], prevWordIds.size(), wordId); return false; } if (!probabilityEntry.isValid() && outAddedNewBigram) { diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp index d537711b0..a03e2a5eb 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp @@ -335,17 +335,8 @@ bool Ver4PatriciaTriePolicy::addNgramEntry(const PrevWordsInfo *const prevWordsI if (wordId == NOT_A_WORD_ID) { return false; } - // TODO: Support N-gram. bool addedNewEntry = false; - WordIdArray prevWordsPtNodePos; - for (size_t i = 0; i < prevWordsPtNodePos.size(); ++i) { - prevWordsPtNodePos[i] = mBuffers->getTerminalPositionLookupTable() - ->getTerminalPtNodePosition(prevWordIds[i]); - } - const int wordPtNodePos = mBuffers->getTerminalPositionLookupTable() - ->getTerminalPtNodePosition(wordId); - if (mUpdatingHelper.addNgramEntry(WordIdArrayView::fromArray(prevWordsPtNodePos), - wordPtNodePos, bigramProperty, &addedNewEntry)) { + if (mNodeWriter.addNgramEntry(prevWordIds, wordId, bigramProperty, &addedNewEntry)) { if (addedNewEntry) { mBigramCount++; }