Increment() публичный Метод

public Increment ( IEnumerable ngram, double amount ) : void
ngram IEnumerable
amount double
Результат void
        private double GetBeta(string[] ngram)
        {
            string[] shortGram = ngram.GetNGram(0, ngram.Length - 1);

            double beta;

            if (_betaCache.TryFindValue(shortGram, out beta) && beta != 0)
            {
                return(beta);
            }

            double a = 0.0, b = 0.0;

            foreach (var item in _referenceSource.GetAllSegments())
            {
                ngram[ngram.Length - 1] = item; // replace last segment
                int frequencyA = _referenceSource.FindOccurrences(ngram);

                if (frequencyA > 0)
                {
                    var bNGram     = ngram.GetNGram(1, ngram.Length - 1);
                    int frequencyB = _referenceSource.FindOccurrences(bNGram);

                    a += GetProbabilityIfPresent(ngram, frequencyA);
                    b += GetProbabilityIfPresent(bNGram, frequencyB);
                }
            }

            beta = (1.0 - a) / (1.0 - b);
            _betaCache.Increment(shortGram, beta);
            return(beta);
        }
Пример #2
0
        public static NGramCache Aggregate(IEnumerable<NGramCache> nGramCaches)
        {
            var result = new NGramCache();

            foreach (var item in nGramCaches)
            {
                IEnumerable<NGramCache> nGrams = item.NextSegment.Values;

                while(nGrams.Count() > 0)
                {
                    foreach (var xGram in nGrams)
                    {
                        result.Increment(xGram.NGram, xGram.Value);
                    }

                    // next n
                    nGrams = nGrams.SelectMany(el => el.NextSegment.Values);
                }
            }

            return result;
        }
Пример #3
0
        public static NGramCache Aggregate(IEnumerable <NGramCache> nGramCaches)
        {
            var result = new NGramCache();

            foreach (var item in nGramCaches)
            {
                IEnumerable <NGramCache> nGrams = item.NextSegment.Values;

                while (nGrams.Count() > 0)
                {
                    foreach (var xGram in nGrams)
                    {
                        result.Increment(xGram.NGram, xGram.Value);
                    }

                    // next n
                    nGrams = nGrams.SelectMany(el => el.NextSegment.Values);
                }
            }

            return(result);
        }