aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-06-16 08:17:19 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-06-10 22:31:57 +0000
commit17f03583c85bfd03b94bcaa75fe717d344d48445 (patch)
tree31b2015bfb79df39c1c461765db054a52f337732 /java
parent54360424a17bc03ed168d8dd2e1fc36b9cbeae9b (diff)
parent356539699aaaeb4e444447acbbe13db7497fc067 (diff)
downloadlatinime-17f03583c85bfd03b94bcaa75fe717d344d48445.tar.gz
latinime-17f03583c85bfd03b94bcaa75fe717d344d48445.tar.xz
latinime-17f03583c85bfd03b94bcaa75fe717d344d48445.zip
Merge "Add a method to update contextual dictionary."
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFacilitator.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
index e6e2bcbc7..05ebe1160 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
@@ -351,6 +351,11 @@ public class DictionaryFacilitator {
mDistracterFilter.close();
}
+ @UsedForTesting
+ public ExpandableBinaryDictionary getSubDictForTesting(final String dictName) {
+ return mDictionaries.getSubDict(dictName);
+ }
+
// The main dictionary could have been loaded asynchronously. Don't cache the return value
// of this method.
public boolean hasInitializedMainDictionary() {
@@ -607,6 +612,41 @@ public class DictionaryFacilitator {
personalizationDict.addMultipleDictionaryEntriesDynamically(languageModelParams, callback);
}
+ public void addPhraseToContextualDictionary(final String[] phrase, final int probability,
+ final int bigramProbabilityForWords, final int bigramProbabilityForPhrases) {
+ final ExpandableBinaryDictionary contextualDict =
+ mDictionaries.getSubDict(Dictionary.TYPE_CONTEXTUAL);
+ if (contextualDict == null) {
+ return;
+ }
+ PrevWordsInfo prevWordsInfo = PrevWordsInfo.BEGINNING_OF_SENTENCE;
+ for (int i = 0; i < phrase.length; i++) {
+ if (i < phrase.length - 1) {
+ final String[] subPhrase =
+ Arrays.copyOfRange(phrase, i /* start */, phrase.length);
+ final String subPhraseStr = TextUtils.join(Constants.WORD_SEPARATOR, subPhrase);
+ contextualDict.addUnigramEntryWithCheckingDistracter(
+ subPhraseStr, probability, null /* shortcutTarget */,
+ Dictionary.NOT_A_PROBABILITY /* shortcutFreq */,
+ false /* isNotAWord */, false /* isBlacklisted */,
+ BinaryDictionary.NOT_A_VALID_TIMESTAMP,
+ DistracterFilter.EMPTY_DISTRACTER_FILTER);
+ contextualDict.addNgramEntry(prevWordsInfo, subPhraseStr,
+ bigramProbabilityForPhrases, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+
+ }
+ contextualDict.addUnigramEntryWithCheckingDistracter(
+ phrase[i], probability, null /* shortcutTarget */,
+ Dictionary.NOT_A_PROBABILITY /* shortcutFreq */,
+ false /* isNotAWord */, false /* isBlacklisted */,
+ BinaryDictionary.NOT_A_VALID_TIMESTAMP,
+ DistracterFilter.EMPTY_DISTRACTER_FILTER);
+ contextualDict.addNgramEntry(prevWordsInfo, phrase[i],
+ bigramProbabilityForWords, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+ prevWordsInfo = new PrevWordsInfo(phrase[i]);
+ }
+ }
+
public void dumpDictionaryForDebug(final String dictName) {
final ExpandableBinaryDictionary dictToDump = mDictionaries.getSubDict(dictName);
if (dictToDump == null) {