Пример #1
0
        private static List getNextGrammarNodesWithWords(GrammarNode grammarNode)
        {
            ArrayList arrayList = new ArrayList();

            GrammarArc[] successors = grammarNode.getSuccessors();
            int          num        = successors.Length;

            for (int i = 0; i < num; i++)
            {
                GrammarArc  grammarArc   = successors[i];
                GrammarNode grammarNode2 = grammarArc.getGrammarNode();
                if (grammarNode2.getAlternatives().Length == 0)
                {
                    if (grammarNode2.isFinalNode())
                    {
                        arrayList.add(grammarNode2);
                    }
                    else
                    {
                        arrayList.addAll(GrammarPoint.getNextGrammarNodesWithWords(grammarNode2));
                    }
                }
                else
                {
                    arrayList.add(grammarNode2);
                }
            }
            return(arrayList);
        }
Пример #2
0
 private Set getStartingContexts()
 {
     if (this.startingContexts == null)
     {
         this.startingContexts = new HashSet();
         if (this.node.isEmpty())
         {
             GrammarArc[] successors = this.getSuccessors();
             GrammarArc[] array      = successors;
             int          num        = array.Length;
             for (int i = 0; i < num; i++)
             {
                 GrammarArc          grammarArc = array[i];
                 FlatLinguist.GState gstate     = this.this_0.getGState(grammarArc.getGrammarNode());
                 this.startingContexts.addAll(gstate.getStartingContexts());
             }
         }
         else
         {
             Word            word           = this.node.getWord();
             Pronunciation[] pronunciations = word.getPronunciations();
             Pronunciation[] array2         = pronunciations;
             int             i = array2.Length;
             for (int j = 0; j < i; j++)
             {
                 Pronunciation pronunciation   = array2[j];
                 UnitContext   startingContext = this.getStartingContext(pronunciation);
                 this.startingContexts.add(startingContext);
             }
         }
     }
     return(this.startingContexts);
 }
Пример #3
0
            public virtual void connect()
            {
                GrammarArc[] successors = this.getSuccessors();
                int          num        = successors.Length;

                for (int i = 0; i < num; i++)
                {
                    GrammarArc          grammarArc = successors[i];
                    FlatLinguist.GState gstate     = this.this_0.getGState(grammarArc.getGrammarNode());
                    if (gstate.getNode().isEmpty() || !String.instancehelper_equals(gstate.getNode().getWord().getSpelling(), "<s>"))
                    {
                        float num2 = grammarArc.getProbability();
                        if (FlatLinguist.access_800(this.this_0) && !gstate.getNode().isEmpty())
                        {
                            int num3 = gstate.getNode().getWord().getPronunciations().Length;
                            num2 -= this.this_0.logMath.linearToLog((double)num3);
                        }
                        float    num4     = num2;
                        Iterator iterator = this.exitPoints.entrySet().iterator();
                        while (iterator.hasNext())
                        {
                            Map.Entry entry = (Map.Entry)iterator.next();
                            List      list  = gstate.getEntryPoints((ContextPair)entry.getKey());
                            if (list != null)
                            {
                                List list2 = (List)entry.getValue();
                                this.connect(list2, list, num4);
                            }
                        }
                    }
                }
            }
Пример #4
0
 internal SearchStateArc[] getNextGrammarStates(int num, int num2)
 {
     GrammarArc[] array = this.node.getSuccessors();
     array = this.filter(array, num2);
     SearchStateArc[] array2 = new SearchStateArc[array.Length];
     for (int i = 0; i < array.Length; i++)
     {
         GrammarArc grammarArc = array[i];
         array2[i] = new DynamicFlatLinguist.GrammarState(this.this_0, grammarArc.getGrammarNode(), grammarArc.getProbability(), num, num2);
     }
     return(array2);
 }
Пример #5
0
            private void dumpNextNodes()
            {
                [email protected]("     Next Grammar Nodes: ");
                GrammarArc[] successors = this.node.getSuccessors();
                int          num        = successors.Length;

                for (int i = 0; i < num; i++)
                {
                    GrammarArc grammarArc = successors[i];
                    [email protected](new StringBuilder().append("          ").append(grammarArc.getGrammarNode()).toString());
                }
            }
Пример #6
0
            private void pullRightContexts()
            {
                GrammarArc[] successors = this.getSuccessors();
                GrammarArc[] array      = successors;
                int          num        = array.Length;

                for (int i = 0; i < num; i++)
                {
                    GrammarArc          grammarArc = array[i];
                    FlatLinguist.GState gstate     = this.this_0.getGState(grammarArc.getGrammarNode());
                    this.rightContexts.addAll(gstate.getStartingContexts());
                }
            }
Пример #7
0
 internal GrammarArc[] filter(GrammarArc[] array, int num)
 {
     if (num != 0)
     {
         ArrayList    arrayList = new ArrayList();
         GrammarArc[] array2    = array;
         int          num2      = array2.Length;
         for (int i = 0; i < num2; i++)
         {
             GrammarArc  grammarArc  = array2[i];
             GrammarNode grammarNode = grammarArc.getGrammarNode();
             if (this.hasEntryContext(grammarNode, num))
             {
                 arrayList.add(grammarArc);
             }
         }
         array = (GrammarArc[])arrayList.toArray(new GrammarArc[arrayList.size()]);
     }
     return(array);
 }
Пример #8
0
            internal virtual void pushLeftContexts(Set set, Collection collection)
            {
                if (set.contains(this.getNode()))
                {
                    return;
                }
                set.add(this.getNode());
                GrammarArc[] successors = this.getSuccessors();
                int          num        = successors.Length;

                for (int i = 0; i < num; i++)
                {
                    GrammarArc          grammarArc = successors[i];
                    FlatLinguist.GState gstate     = this.this_0.getGState(grammarArc.getGrammarNode());
                    gstate.addLeftContext(collection);
                    if (gstate.getNode().isEmpty())
                    {
                        gstate.pushLeftContexts(set, collection);
                    }
                }
            }
Пример #9
0
 private void initUnitMaps(GrammarNode grammarNode)
 {
     if (this.nodeToNextUnitArrayMap.get(grammarNode) == null)
     {
         HashSet      hashSet    = new HashSet();
         HashSet      hashSet2   = new HashSet();
         GrammarArc[] successors = grammarNode.getSuccessors();
         GrammarArc[] array      = successors;
         int          num        = array.Length;
         for (int i = 0; i < num; i++)
         {
             GrammarArc  grammarArc   = array[i];
             GrammarNode grammarNode2 = grammarArc.getGrammarNode();
             this.collectNextUnits(grammarNode2, hashSet, hashSet2);
         }
         int[] array2 = new int[hashSet2.size()];
         num = 0;
         Iterator iterator = hashSet2.iterator();
         while (iterator.hasNext())
         {
             Unit  unit   = (Unit)iterator.next();
             int[] array3 = array2;
             int   num2   = num;
             num++;
             array3[num2] = unit.getBaseID();
         }
         this.nodeToNextUnitArrayMap.put(grammarNode, array2);
     }
     if (this.nodeToUnitSetMap.get(grammarNode) == null)
     {
         HashSet hashSet  = new HashSet();
         HashSet hashSet2 = new HashSet();
         this.collectNextUnits(grammarNode, hashSet, hashSet2);
         this.nodeToUnitSetMap.put(grammarNode, hashSet2);
     }
 }
Пример #10
0
 private void collectNextUnits(GrammarNode grammarNode, Set set, Set set2)
 {
     if (set.contains(grammarNode))
     {
         return;
     }
     set.add(grammarNode);
     if (grammarNode.isFinalNode())
     {
         set2.add(UnitManager.__SILENCE);
     }
     else if (!grammarNode.isEmpty())
     {
         Word            word           = grammarNode.getWord();
         Pronunciation[] pronunciations = word.getPronunciations();
         Pronunciation[] array          = pronunciations;
         int             i = array.Length;
         for (int j = 0; j < i; j++)
         {
             Pronunciation pronunciation = array[j];
             set2.add(pronunciation.getUnits()[0]);
         }
     }
     else
     {
         GrammarArc[] successors = grammarNode.getSuccessors();
         GrammarArc[] array2     = successors;
         int          num        = array2.Length;
         for (int i = 0; i < num; i++)
         {
             GrammarArc  grammarArc   = array2[i];
             GrammarNode grammarNode2 = grammarArc.getGrammarNode();
             this.collectNextUnits(grammarNode2, set, set2);
         }
     }
 }