public Increment ( IEnumerable |
||
ngram | IEnumerable |
|
amount | double | |
return | 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); }
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; }
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); }