From 4455fe2c894f8aabaf2b3105b72f9193226d4aba Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Fri, 11 May 2012 19:28:05 +0900 Subject: [PATCH] Refactor a method Rename it, rename parameters, and add a parameter that will be necessary soon. Also, rescale the bigram frequency as necessary. Bug: 6313806 Change-Id: I192543cfb6ab6bccda4a1a53c8e67fbf50a257b0 --- .../latin/makedict/BinaryDictInputOutput.java | 24 +++++++++++-------- .../latin/makedict/XmlDictInputOutput.java | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java index d82d503c4..4845a33a5 100644 --- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java +++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictInputOutput.java @@ -722,15 +722,16 @@ public class BinaryDictInputOutput { } /** - * Makes the flag value for an attribute. + * Makes the flag value for a bigram. * - * @param more whether there are more attributes after this one. - * @param offset the offset of the attribute. - * @param frequency the frequency of the attribute, 0..15 + * @param more whether there are more bigrams after this one. + * @param offset the offset of the bigram. + * @param bigramFrequency the frequency of the bigram, 0..15. + * @param unigramFrequency the unigram frequency of the same word. * @return the flags */ - private static final int makeAttributeFlags(final boolean more, final int offset, - final int frequency) { + private static final int makeBigramFlags(final boolean more, final int offset, + final int bigramFrequency, final int unigramFrequency) { int bigramFlags = (more ? FLAG_ATTRIBUTE_HAS_NEXT : 0) + (offset < 0 ? FLAG_ATTRIBUTE_OFFSET_NEGATIVE : 0); switch (getByteSize(offset)) { @@ -746,7 +747,7 @@ public class BinaryDictInputOutput { default: throw new RuntimeException("Strange offset size"); } - bigramFlags += frequency & FLAG_ATTRIBUTE_FREQUENCY; + bigramFlags += bigramFrequency & FLAG_ATTRIBUTE_FREQUENCY; return bigramFlags; } @@ -854,11 +855,14 @@ public class BinaryDictInputOutput { final Iterator bigramIterator = group.mBigrams.iterator(); while (bigramIterator.hasNext()) { final WeightedString bigram = (WeightedString)bigramIterator.next(); - final int addressOfBigram = findAddressOfWord(dict, bigram.mWord); + final CharGroup target = + FusionDictionary.findWordInTree(dict.mRoot, bigram.mWord); + final int addressOfBigram = target.mCachedAddress; + final int unigramFrequencyForThisWord = target.mFrequency; ++groupAddress; final int offset = addressOfBigram - groupAddress; - int bigramFlags = makeAttributeFlags(bigramIterator.hasNext(), offset, - bigram.mFrequency); + int bigramFlags = makeBigramFlags(bigramIterator.hasNext(), offset, + bigram.mFrequency, unigramFrequencyForThisWord); buffer[index++] = (byte)bigramFlags; final int bigramShift = writeVariableAddress(buffer, index, Math.abs(offset)); index += bigramShift; diff --git a/tools/makedict/src/com/android/inputmethod/latin/makedict/XmlDictInputOutput.java b/tools/makedict/src/com/android/inputmethod/latin/makedict/XmlDictInputOutput.java index d86719a1d..52f124dfb 100644 --- a/tools/makedict/src/com/android/inputmethod/latin/makedict/XmlDictInputOutput.java +++ b/tools/makedict/src/com/android/inputmethod/latin/makedict/XmlDictInputOutput.java @@ -154,7 +154,7 @@ public class XmlDictInputOutput { // In this version of the XML file, the bigram frequency is given as an int 0..XML_MAX private final static int XML_MAX = 256; // In memory and in the binary dictionary the bigram frequency is 0..MEMORY_MAX - private final static int MEMORY_MAX = 16; + private final static int MEMORY_MAX = 256; private final static int XML_TO_MEMORY_RATIO = XML_MAX / MEMORY_MAX; private String mSrc;