public void Update(VariationalInferenceParameter varInference, CorpusDocument document)
        {
            for (int i = 0; i < CovarianceSufficientStatistic.RowCount; i++)
            {
                MuSufficientStatistic[i] = MuSufficientStatistic[i] + varInference.Lambda[i];
                for (int j = 0; j < CovarianceSufficientStatistic.ColumnCount; j++)
                {
                    double tmp = varInference.Lambda[i] * varInference.Lambda[j];
                    if (i == j)
                    {
                        CovarianceSufficientStatistic[i, j] = CovarianceSufficientStatistic[i, j] + varInference.Nu[i] + tmp;
                    }
                    else
                    {
                        CovarianceSufficientStatistic[i, j] = CovarianceSufficientStatistic[i, j] + tmp;
                    }
                }
            }

            for (int i = 0; i < document.NbTerms; i++)
            {
                for (int j = 0; j < BetaSufficientStatistic.RowCount; j++)
                {
                    var word  = document.GetWord(i);
                    var count = document.GetCount(i);
                    BetaSufficientStatistic[j, word] = BetaSufficientStatistic[j, word] + count * varInference.Phi[i, j];
                }
            }

            NData++;
        }
예제 #2
0
        public Bundle(int k, CorpusDocument document, LLNAModel model, VariationalInferenceParameter inference)
        {
            SumPhi = Vector <double> .Build.Dense(k - 1, 0);

            Document     = document;
            Model        = model;
            VarInference = inference;
            Init(k);
        }