aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-06-16 16:56:57 +0900
committerKeisuke Kuroyanagi <ksk@google.com>2014-06-16 17:00:12 +0900
commit356539699aaaeb4e444447acbbe13db7497fc067 (patch)
tree425ff7de0eb58f697047c9d8c8386d177690cfc0 /java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
parent1a4d815b0bba824cb6893ad9f6ef0597c9740378 (diff)
downloadlatinime-356539699aaaeb4e444447acbbe13db7497fc067.tar.gz
latinime-356539699aaaeb4e444447acbbe13db7497fc067.tar.xz
latinime-356539699aaaeb4e444447acbbe13db7497fc067.zip
Add a method to update contextual dictionary.
Bug: 14161647 Change-Id: I2111f841c94e31d62b670da4236fc738df03a708
Diffstat (limited to 'java/src/com/android/inputmethod/latin/DictionaryFacilitator.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) {