예제 #1
0
        public double CalculateDistance(IDistribution <T> obj1, IDistribution <T> obj2)
        {
            double result =
                obj1.DistinctRepresentedEvents.Union(obj2.DistinctRepresentedEvents)
                .Select(ngram => Math.Abs(obj1.GetEventFrequency(ngram) - obj2.GetEventFrequency(ngram)))
                .Sum() / 2;

            return(result);
        }
        public double CalculateDistance(IDistribution <string> languageModel1, IDistribution <string> languageModel2)
        {
            double result =
                1.0 -
                languageModel1.DistinctRepresentedEvents.Intersect(languageModel2.DistinctRepresentedEvents)
                .Select(ngram => Math.Min(languageModel1.GetEventFrequency(ngram), languageModel2.GetEventFrequency(ngram)))
                .Sum();

            return(result);
        }