private void GenerateNewKeys()
        {
            foreach (var key in BestKeys.Keys)
            {
                Crossover(key, BestKeys.First().Key);
            }

            foreach (var key in BestKeys.Keys)
            {
                for (int i = 0; i < 5; i++)
                {
                    Mutation(key);
                }
            }
        }
        private void Selection()
        {
            BestKeys.Clear();

            foreach (var key in AllKeys.Keys.ToArray())
            {
                Stat.TextAnalysis(Text, key);
                AllKeys[key] = Stat.MeaningfullnessMetric();
            }

            var sortedKeys = (from key in AllKeys
                              orderby key.Value
                              select key).ToList();

            for (int i = 0; i < BestKeysAmount; i++)
            {
                BestKeys.Add(sortedKeys[i].Key, sortedKeys[i].Value);
            }

            AllKeys.Clear();
        }