コード例 #1
0
 public virtual Edu.Stanford.Nlp.IE.Crf.FloatFactorTable SumOutEnd()
 {
     Edu.Stanford.Nlp.IE.Crf.FloatFactorTable ft = new Edu.Stanford.Nlp.IE.Crf.FloatFactorTable(numClasses, windowSize - 1);
     for (int i = 0; i < table.Length; i++)
     {
         ft.LogIncrementValue(i / numClasses, table[i]);
     }
     return(ft);
 }
コード例 #2
0
        public virtual void MultiplyInEnd(Edu.Stanford.Nlp.IE.Crf.FloatFactorTable other)
        {
            int divisor = SloppyMath.IntPow(numClasses, other.WindowSize());

            for (int i = 0; i < table.Length; i++)
            {
                table[i] += other.GetValue(i % divisor);
            }
        }
コード例 #3
0
 public virtual void DivideBy(Edu.Stanford.Nlp.IE.Crf.FloatFactorTable other)
 {
     for (int i = 0; i < table.Length; i++)
     {
         if (table[i] != float.NegativeInfinity || other.table[i] != float.NegativeInfinity)
         {
             table[i] -= other.table[i];
         }
     }
 }
コード例 #4
0
        public virtual Edu.Stanford.Nlp.IE.Crf.FloatFactorTable SumOutFront()
        {
            Edu.Stanford.Nlp.IE.Crf.FloatFactorTable ft = new Edu.Stanford.Nlp.IE.Crf.FloatFactorTable(numClasses, windowSize - 1);
            int mod = SloppyMath.IntPow(numClasses, windowSize - 1);

            for (int i = 0; i < table.Length; i++)
            {
                ft.LogIncrementValue(i % mod, table[i]);
            }
            return(ft);
        }
コード例 #5
0
 public static void Main(string[] args)
 {
     Edu.Stanford.Nlp.IE.Crf.FloatFactorTable ft = new Edu.Stanford.Nlp.IE.Crf.FloatFactorTable(6, 3);
     for (int i = 0; i < 6; i++)
     {
         for (int j = 0; j < 6; j++)
         {
             for (int k = 0; k < 6; k++)
             {
                 int[] b = new int[] { i, j, k };
                 ft.SetValue(b, (i * 4) + (j * 2) + k);
             }
         }
     }
     //System.out.println(ft);
     //System.out.println(ft.sumOutFront());
     Edu.Stanford.Nlp.IE.Crf.FloatFactorTable ft2 = new Edu.Stanford.Nlp.IE.Crf.FloatFactorTable(6, 2);
     for (int i_1 = 0; i_1 < 6; i_1++)
     {
         for (int j = 0; j < 6; j++)
         {
             int[] b = new int[] { i_1, j };
             ft2.SetValue(b, i_1 * 6 + j);
         }
     }
     System.Console.Out.WriteLine(ft);
     //FloatFactorTable ft3 = ft2.sumOutFront();
     //System.out.println(ft3);
     for (int i_2 = 0; i_2 < 6; i_2++)
     {
         for (int j = 0; j < 6; j++)
         {
             int[] b = new int[] { i_2, j };
             float t = 0;
             for (int k = 0; k < 6; k++)
             {
                 t += System.Math.Exp(ft.ConditionalLogProb(b, k));
                 log.Info(k + "|" + i_2 + "," + j + " : " + System.Math.Exp(ft.ConditionalLogProb(b, k)));
             }
             System.Console.Out.WriteLine(t);
         }
     }
 }