private TreebankStats.ObservedCorpusStats GatherStats(DiskTreebank tb, string name)
 {
     TreebankStats.ObservedCorpusStats ocs = new TreebankStats.ObservedCorpusStats(name);
     if (makeVocab)
     {
         trainVocab = Generics.NewHashSet();
     }
     System.Console.Out.WriteLine("Reading treebank:");
     foreach (Tree t in tb)
     {
         Pair <int, int> treeFacts = DissectTree(t, ocs, makeVocab);
         ocs.AddStatsForTree(t.Yield().Count, treeFacts.First(), treeFacts.Second());
         if (ocs.numTrees % 100 == 0)
         {
             System.Console.Out.Write(".");
         }
         else
         {
             if (ocs.numTrees % 8001 == 0)
             {
                 System.Console.Out.WriteLine();
             }
         }
     }
     ocs.ComputeFinalValues();
     System.Console.Out.WriteLine("done!");
     return(ocs);
 }
 private static TreebankStats.ObservedCorpusStats AggregateStats(IList <TreebankStats.ObservedCorpusStats> allStats)
 {
     if (allStats.Count == 0)
     {
         return(null);
     }
     else
     {
         if (allStats.Count == 1)
         {
             return(allStats[0]);
         }
     }
     TreebankStats.ObservedCorpusStats agStats = new TreebankStats.ObservedCorpusStats("CORPUS");
     foreach (TreebankStats.ObservedCorpusStats ocs in allStats)
     {
         agStats.numTrees += ocs.numTrees;
         agStats.breadth2 += ocs.breadth2;
         Sharpen.Collections.AddAll(agStats.breadths, ocs.breadths);
         agStats.depth2 += ocs.depth2;
         Sharpen.Collections.AddAll(agStats.depths, ocs.depths);
         agStats.length2 += ocs.length2;
         Sharpen.Collections.AddAll(agStats.lengths, ocs.lengths);
         if (ocs.minLength < agStats.minLength)
         {
             agStats.minLength = ocs.minLength;
         }
         if (ocs.maxLength > agStats.maxLength)
         {
             agStats.maxLength = ocs.maxLength;
         }
         if (ocs.minBreadth < agStats.minBreadth)
         {
             agStats.minBreadth = ocs.minBreadth;
         }
         if (ocs.maxBreadth > agStats.maxBreadth)
         {
             agStats.maxBreadth = ocs.maxBreadth;
         }
         if (ocs.minDepth < agStats.minDepth)
         {
             agStats.minDepth = ocs.minDepth;
         }
         if (ocs.maxDepth > agStats.maxDepth)
         {
             agStats.maxDepth = ocs.maxDepth;
         }
         agStats.words.AddAll(ocs.words);
         agStats.posTags.AddAll(ocs.posTags);
         agStats.phrasalBranching2.AddAll(ocs.phrasalBranching2);
         agStats.phrasalBranchingNum2.AddAll(ocs.phrasalBranchingNum2);
     }
     agStats.ComputeFinalValues();
     return(agStats);
 }