GetNGramCache() 공개 메소드

public GetNGramCache ( ) : NGramCache
리턴 peng04.logic.NGramCache
예제 #1
0
        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);
        }
예제 #2
0
        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());
        }