Exemple #1
0
 public HMMNode[] getHMMNodes(EndNode endNode)
 {
     HMMNode[] array = (HMMNode[])this.endNodeMap.get(endNode.getKey());
     if (array == null)
     {
         HashMap  hashMap     = new HashMap();
         Unit     baseUnit    = endNode.getBaseUnit();
         Unit     leftContext = endNode.getLeftContext();
         Iterator iterator    = this.entryPoints.iterator();
         while (iterator.hasNext())
         {
             Unit    unit    = (Unit)iterator.next();
             HMM     hmm     = this.hmmPool.getHMM(baseUnit, leftContext, unit, HMMPosition.__END);
             HMMNode hmmnode = (HMMNode)hashMap.get(hmm);
             if (hmmnode == null)
             {
                 hmmnode = new HMMNode(hmm, 0f);
                 hashMap.put(hmm, hmmnode);
             }
             hmmnode.addRC(unit);
             Node[] successors = endNode.getSuccessors();
             int    num        = successors.Length;
             for (int i = 0; i < num; i++)
             {
                 Node     node     = successors[i];
                 WordNode wordNode = (WordNode)node;
                 hmmnode.addSuccessor(wordNode);
             }
         }
         array = (HMMNode[])hashMap.values().toArray(new HMMNode[hashMap.size()]);
         this.endNodeMap.put(endNode.getKey(), array);
     }
     return(array);
 }
Exemple #2
0
        internal virtual EndNode addSuccessor(EndNode endNode, float num)
        {
            Unit    baseUnit = endNode.getBaseUnit();
            EndNode endNode2 = (EndNode)this.getSuccessor(baseUnit);

            if (endNode2 == null)
            {
                this.putSuccessor(baseUnit, endNode);
            }
            else
            {
                if (endNode2.getUnigramProbability() < num)
                {
                    endNode2.setUnigramProbability(num);
                }
                endNode = endNode2;
            }
            return(endNode);
        }