Example #1
0
        private void checkClasses()
        {
            HashMap  hashMap  = new HashMap();
            Iterator iterator = this.wordToClassProbabilities.values().iterator();

            while (iterator.hasNext())
            {
                ClassProbability classProbability = (ClassProbability)iterator.next();
                Float            @float           = (Float)hashMap.get(classProbability.getClassName());
                if (@float == null)
                {
                    hashMap.put(classProbability.getClassName(), Float.valueOf(0f));
                }
                else
                {
                    hashMap.put(classProbability.getClassName(), Float.valueOf((float)this.logMath.logToLinear(classProbability.getLogProbability()) + @float.floatValue()));
                }
            }
            iterator = hashMap.entrySet().iterator();
            while (iterator.hasNext())
            {
                Map.Entry entry = (Map.Entry)iterator.next();
                if (Math.abs((double)1f - (double)((Float)entry.getValue()).floatValue()) > 0.001)
                {
                    this.logger.warning(new StringBuilder().append("Word probabilities for class ").append((string)entry.getKey()).append(" sum to ").append(entry.getValue()).toString());
                }
            }
        }
        public override float getProbability(WordSequence wordSequence)
        {
            Word[] array = new Word[wordSequence.size()];
            float  num   = 0f;

            for (int i = 0; i < array.Length; i++)
            {
                Word             word             = wordSequence.getWord(i);
                ClassProbability classProbability = this.classMap.getClassProbability(word.getSpelling());
                array[i] = ((classProbability != null) ? this.classMap.getClassAsWord(classProbability.getClassName()) : word);
                if (i == array.Length - 1 && classProbability != null)
                {
                    num = classProbability.getLogProbability();
                }
            }
            float probability = this.classLM.getProbability(new WordSequence(array));

            return(probability + num);
        }