public void Init(TextSource referenceSource, int n) { if (_initPassed) { return; } _initPassed = true; if (n < 1) { _factor = 1; return; } int n1 = 0; IEnumerable <NGramCache> nGrams = referenceSource.GetNGramCache().NextSegment.Values; while (n > 1) { n--; nGrams = nGrams.SelectMany(el => el.NextSegment.Values); } foreach (var item in nGrams) { var frequency = Convert.ToInt32(item.Value); if (frequency == 1) { n1++; } } _factor = 1.0 - ((double)n1 / (double)referenceSource.GetAllSegments().Count()); }
public void Init(TextSource referenceSource, int n) { if (_initPassed) { return; } _initPassed = true; if (n < 1) { _b = 0; return; } _referenceSource = referenceSource; int n1 = 0; int n2 = 0; IEnumerable <NGramCache> nGrams = referenceSource.GetNGramCache().NextSegment.Values; while (n > 1) { n--; nGrams = nGrams.SelectMany(el => el.NextSegment.Values); } foreach (var item in nGrams) { var frequency = Convert.ToInt32(item.Value); if (frequency == 1) { n1++; } if (frequency == 2) { n2++; } } _b = (double)n1 / ((double)n1 + 2 * (double)n2); }