コード例 #1
0
        public static List <float> CalculateProbability(KeyValuePair <NGram <T>, HashSet <NGram <T> > > set, NGramDistribution <T> distrubtion)
        {
            distrubtion.NullCheck();

            float sum = set.Value.Select(x => distrubtion.RetrieveCount(x)).Sum();

            return(set.Value
                   .Select(x => (float)distrubtion.RetrieveCount(x) / sum)
                   .ToList());
        }
コード例 #2
0
        /// <summary>
        /// Assuming NGram[] is homogenous
        /// </summary>
        public static float CalculateProbability(
            Dictionary <NGram <T>, HashSet <NGram <T> > > blockedGrams,
            NGramDistribution <T> distrubution,
            NGram <T>[] array,
            int x,
            int y)
        {
            if (!blockedGrams.ContainsKey(array[x]))
            {
                return(0);
            }
            var value = blockedGrams[array[x]];

            if (!value.Contains(array[y]))
            {
                return(0);
            }

            float sumCount = distrubution
                             .AsParallel()
                             .Where(z => value.Contains(z.Key))
                             .Sum(q => q.Value);

            return(distrubution.RetrieveCount(array[y]) / sumCount);
        }