Loading java/src/com/android/inputmethod/latin/BinaryDictionary.java +1 −1 Original line number Diff line number Diff line Loading @@ -26,12 +26,12 @@ import com.android.inputmethod.latin.makedict.DictionaryHeader; import com.android.inputmethod.latin.makedict.FormatSpec; import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions; import com.android.inputmethod.latin.makedict.UnsupportedFormatException; import com.android.inputmethod.latin.makedict.WordProperty; import com.android.inputmethod.latin.settings.NativeSuggestOptions; import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.JniUtils; import com.android.inputmethod.latin.utils.LanguageModelParam; import com.android.inputmethod.latin.utils.StringUtils; import com.android.inputmethod.latin.utils.WordProperty; import java.io.File; import java.util.ArrayList; Loading java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +1 −1 Original line number Diff line number Diff line Loading @@ -23,13 +23,13 @@ import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.makedict.DictionaryHeader; import com.android.inputmethod.latin.makedict.FormatSpec; import com.android.inputmethod.latin.makedict.WordProperty; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.utils.AsyncResultHolder; import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.FileUtils; import com.android.inputmethod.latin.utils.LanguageModelParam; import com.android.inputmethod.latin.utils.PrioritizedSerialExecutor; import com.android.inputmethod.latin.utils.WordProperty; import java.io.File; import java.util.ArrayList; Loading java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java +9 −7 Original line number Diff line number Diff line Loading @@ -606,19 +606,21 @@ public final class BinaryDictDecoderUtils { FusionDictionary newDict = new FusionDictionary(root, fileHeader.mDictionaryOptions); if (null != dict) { for (final Word w : dict) { if (w.mIsBlacklistEntry) { newDict.addBlacklistEntry(w.mWord, w.mShortcutTargets, w.mIsNotAWord); for (final WordProperty wordProperty : dict) { if (wordProperty.mIsBlacklistEntry) { newDict.addBlacklistEntry(wordProperty.mWord, wordProperty.mShortcutTargets, wordProperty.mIsNotAWord); } else { newDict.add(w.mWord, w.mFrequency, w.mShortcutTargets, w.mIsNotAWord); newDict.add(wordProperty.mWord, wordProperty.getProbability(), wordProperty.mShortcutTargets, wordProperty.mIsNotAWord); } } for (final Word w : dict) { for (final WordProperty wordProperty : dict) { // By construction a binary dictionary may not have bigrams pointing to // words that are not also registered as unigrams so we don't have to avoid // them explicitly here. for (final WeightedString bigram : w.mBigrams) { newDict.setBigram(w.mWord, bigram.mWord, bigram.getProbability()); for (final WeightedString bigram : wordProperty.mBigrams) { newDict.setBigram(wordProperty.mWord, bigram.mWord, bigram.getProbability()); } } } Loading java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java +11 −9 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import java.util.LinkedList; * A dictionary that can fusion heads and tails of words for more compression. */ @UsedForTesting public final class FusionDictionary implements Iterable<Word> { public final class FusionDictionary implements Iterable<WordProperty> { private static final boolean DBG = MakedictLog.DBG; private static int CHARACTER_NOT_FOUND_INDEX = -1; Loading Loading @@ -76,8 +76,12 @@ public final class FusionDictionary implements Iterable<Word> { public ProbabilityInfo mProbabilityInfo; public WeightedString(final String word, final int probability) { this(word, new ProbabilityInfo(probability)); } public WeightedString(final String word, final ProbabilityInfo probabilityInfo) { mWord = word; mProbabilityInfo = new ProbabilityInfo(probability); mProbabilityInfo = probabilityInfo; } public int getProbability() { Loading @@ -90,9 +94,7 @@ public final class FusionDictionary implements Iterable<Word> { @Override public int hashCode() { return Arrays.hashCode(new Object[] { mWord, mProbabilityInfo.mProbability, mProbabilityInfo.mTimestamp, mProbabilityInfo.mLevel, mProbabilityInfo.mCount }); return Arrays.hashCode(new Object[] { mWord, mProbabilityInfo}); } @Override Loading Loading @@ -704,7 +706,7 @@ public final class FusionDictionary implements Iterable<Word> { * * This is purely for convenience. */ public static final class DictionaryIterator implements Iterator<Word> { public static final class DictionaryIterator implements Iterator<WordProperty> { private static final class Position { public Iterator<PtNode> pos; public int length; Loading Loading @@ -734,7 +736,7 @@ public final class FusionDictionary implements Iterable<Word> { } @Override public Word next() { public WordProperty next() { Position currentPos = mPositions.getLast(); mCurrentString.setLength(currentPos.length); Loading @@ -751,7 +753,7 @@ public final class FusionDictionary implements Iterable<Word> { mPositions.addLast(currentPos); } if (currentPtNode.mFrequency >= 0) { return new Word(mCurrentString.toString(), currentPtNode.mFrequency, return new WordProperty(mCurrentString.toString(), currentPtNode.mFrequency, currentPtNode.mShortcutTargets, currentPtNode.mBigrams, currentPtNode.mIsNotAWord, currentPtNode.mIsBlacklistEntry); } Loading @@ -777,7 +779,7 @@ public final class FusionDictionary implements Iterable<Word> { * and say : for (Word w : x) {} */ @Override public Iterator<Word> iterator() { public Iterator<WordProperty> iterator() { return new DictionaryIterator(mRootNodeArray.mData); } } java/src/com/android/inputmethod/latin/makedict/ProbabilityInfo.java +22 −10 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.inputmethod.latin.makedict; import com.android.inputmethod.latin.BinaryDictionary; import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString; import java.util.Arrays; public final class ProbabilityInfo { public final int mProbability; // mTimestamp, mLevel and mCount are historical info. These values are depend on the Loading @@ -44,9 +46,19 @@ public final class ProbabilityInfo { return mTimestamp != BinaryDictionary.NOT_A_VALID_TIMESTAMP; } @Override public int hashCode() { if (hasHistoricalInfo()) { return Arrays.hashCode(new Object[] { mProbability, mTimestamp, mLevel, mCount }); } else { return Arrays.hashCode(new Object[] { mProbability }); } } @Override public String toString() { return mTimestamp + ":" + mLevel + ":" + mCount; return "f=" + mProbability + (hasHistoricalInfo() ? ",historicalInfo=" + mTimestamp + ":" + mLevel + ":" + mCount : ""); } @Override Loading Loading
java/src/com/android/inputmethod/latin/BinaryDictionary.java +1 −1 Original line number Diff line number Diff line Loading @@ -26,12 +26,12 @@ import com.android.inputmethod.latin.makedict.DictionaryHeader; import com.android.inputmethod.latin.makedict.FormatSpec; import com.android.inputmethod.latin.makedict.FusionDictionary.DictionaryOptions; import com.android.inputmethod.latin.makedict.UnsupportedFormatException; import com.android.inputmethod.latin.makedict.WordProperty; import com.android.inputmethod.latin.settings.NativeSuggestOptions; import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.JniUtils; import com.android.inputmethod.latin.utils.LanguageModelParam; import com.android.inputmethod.latin.utils.StringUtils; import com.android.inputmethod.latin.utils.WordProperty; import java.io.File; import java.util.ArrayList; Loading
java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +1 −1 Original line number Diff line number Diff line Loading @@ -23,13 +23,13 @@ import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.makedict.DictionaryHeader; import com.android.inputmethod.latin.makedict.FormatSpec; import com.android.inputmethod.latin.makedict.WordProperty; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.utils.AsyncResultHolder; import com.android.inputmethod.latin.utils.CollectionUtils; import com.android.inputmethod.latin.utils.FileUtils; import com.android.inputmethod.latin.utils.LanguageModelParam; import com.android.inputmethod.latin.utils.PrioritizedSerialExecutor; import com.android.inputmethod.latin.utils.WordProperty; import java.io.File; import java.util.ArrayList; Loading
java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java +9 −7 Original line number Diff line number Diff line Loading @@ -606,19 +606,21 @@ public final class BinaryDictDecoderUtils { FusionDictionary newDict = new FusionDictionary(root, fileHeader.mDictionaryOptions); if (null != dict) { for (final Word w : dict) { if (w.mIsBlacklistEntry) { newDict.addBlacklistEntry(w.mWord, w.mShortcutTargets, w.mIsNotAWord); for (final WordProperty wordProperty : dict) { if (wordProperty.mIsBlacklistEntry) { newDict.addBlacklistEntry(wordProperty.mWord, wordProperty.mShortcutTargets, wordProperty.mIsNotAWord); } else { newDict.add(w.mWord, w.mFrequency, w.mShortcutTargets, w.mIsNotAWord); newDict.add(wordProperty.mWord, wordProperty.getProbability(), wordProperty.mShortcutTargets, wordProperty.mIsNotAWord); } } for (final Word w : dict) { for (final WordProperty wordProperty : dict) { // By construction a binary dictionary may not have bigrams pointing to // words that are not also registered as unigrams so we don't have to avoid // them explicitly here. for (final WeightedString bigram : w.mBigrams) { newDict.setBigram(w.mWord, bigram.mWord, bigram.getProbability()); for (final WeightedString bigram : wordProperty.mBigrams) { newDict.setBigram(wordProperty.mWord, bigram.mWord, bigram.getProbability()); } } } Loading
java/src/com/android/inputmethod/latin/makedict/FusionDictionary.java +11 −9 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import java.util.LinkedList; * A dictionary that can fusion heads and tails of words for more compression. */ @UsedForTesting public final class FusionDictionary implements Iterable<Word> { public final class FusionDictionary implements Iterable<WordProperty> { private static final boolean DBG = MakedictLog.DBG; private static int CHARACTER_NOT_FOUND_INDEX = -1; Loading Loading @@ -76,8 +76,12 @@ public final class FusionDictionary implements Iterable<Word> { public ProbabilityInfo mProbabilityInfo; public WeightedString(final String word, final int probability) { this(word, new ProbabilityInfo(probability)); } public WeightedString(final String word, final ProbabilityInfo probabilityInfo) { mWord = word; mProbabilityInfo = new ProbabilityInfo(probability); mProbabilityInfo = probabilityInfo; } public int getProbability() { Loading @@ -90,9 +94,7 @@ public final class FusionDictionary implements Iterable<Word> { @Override public int hashCode() { return Arrays.hashCode(new Object[] { mWord, mProbabilityInfo.mProbability, mProbabilityInfo.mTimestamp, mProbabilityInfo.mLevel, mProbabilityInfo.mCount }); return Arrays.hashCode(new Object[] { mWord, mProbabilityInfo}); } @Override Loading Loading @@ -704,7 +706,7 @@ public final class FusionDictionary implements Iterable<Word> { * * This is purely for convenience. */ public static final class DictionaryIterator implements Iterator<Word> { public static final class DictionaryIterator implements Iterator<WordProperty> { private static final class Position { public Iterator<PtNode> pos; public int length; Loading Loading @@ -734,7 +736,7 @@ public final class FusionDictionary implements Iterable<Word> { } @Override public Word next() { public WordProperty next() { Position currentPos = mPositions.getLast(); mCurrentString.setLength(currentPos.length); Loading @@ -751,7 +753,7 @@ public final class FusionDictionary implements Iterable<Word> { mPositions.addLast(currentPos); } if (currentPtNode.mFrequency >= 0) { return new Word(mCurrentString.toString(), currentPtNode.mFrequency, return new WordProperty(mCurrentString.toString(), currentPtNode.mFrequency, currentPtNode.mShortcutTargets, currentPtNode.mBigrams, currentPtNode.mIsNotAWord, currentPtNode.mIsBlacklistEntry); } Loading @@ -777,7 +779,7 @@ public final class FusionDictionary implements Iterable<Word> { * and say : for (Word w : x) {} */ @Override public Iterator<Word> iterator() { public Iterator<WordProperty> iterator() { return new DictionaryIterator(mRootNodeArray.mData); } }
java/src/com/android/inputmethod/latin/makedict/ProbabilityInfo.java +22 −10 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.inputmethod.latin.makedict; import com.android.inputmethod.latin.BinaryDictionary; import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString; import java.util.Arrays; public final class ProbabilityInfo { public final int mProbability; // mTimestamp, mLevel and mCount are historical info. These values are depend on the Loading @@ -44,9 +46,19 @@ public final class ProbabilityInfo { return mTimestamp != BinaryDictionary.NOT_A_VALID_TIMESTAMP; } @Override public int hashCode() { if (hasHistoricalInfo()) { return Arrays.hashCode(new Object[] { mProbability, mTimestamp, mLevel, mCount }); } else { return Arrays.hashCode(new Object[] { mProbability }); } } @Override public String toString() { return mTimestamp + ":" + mLevel + ":" + mCount; return "f=" + mProbability + (hasHistoricalInfo() ? ",historicalInfo=" + mTimestamp + ":" + mLevel + ":" + mCount : ""); } @Override Loading