From d8120ff72e10a8dd5357de71179891a0221b0072 Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Mon, 26 Dec 2011 20:12:25 +0900 Subject: [PATCH] Fix a bug where attributes would have the wrong freq (B0) The reading code is accepting 0..15 and this outputs 0..31. Change-Id: Ia638950dc2ce0b8743cbb6a71fbad866e9208786 --- .../com/android/inputmethod/latin/XmlDictInputOutput.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java b/tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java index 35a7b51d6..1535eb0b8 100644 --- a/tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java +++ b/tools/makedict/src/com/android/inputmethod/latin/XmlDictInputOutput.java @@ -123,6 +123,12 @@ public class XmlDictInputOutput { private final static String BIGRAM_W2_ATTRIBUTE = "w2"; private final static String BIGRAM_FREQ_ATTRIBUTE = "p"; + // 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 XML_TO_MEMORY_RATIO = XML_MAX / MEMORY_MAX; + String mW1; final HashMap> mBigramsMap; @@ -138,7 +144,7 @@ public class XmlDictInputOutput { } else if (BIGRAM_W2_TAG.equals(localName)) { String w2 = attrs.getValue(uri, BIGRAM_W2_ATTRIBUTE); int freq = Integer.parseInt(attrs.getValue(uri, BIGRAM_FREQ_ATTRIBUTE)); - WeightedString bigram = new WeightedString(w2, freq / 8); + WeightedString bigram = new WeightedString(w2, freq / XML_TO_MEMORY_RATIO); ArrayList bigramList = mBigramsMap.get(mW1); if (null == bigramList) bigramList = new ArrayList(); bigramList.add(bigram);