Ejemplo n.º 1
0
        public Dictionary<char, char> Get(string ciphertext, LangCharacteristic lang)
        {
            ciphertext = ciphertext.Delete(' ');
            var letters = TextAnalysis.GetOccurrence(ciphertext, 1);
            var topLetters = letters.Take(2).Select(x => x.Key[0]).ToArray();

            Dictionary<char, char> res = new Dictionary<char, char>();
            res['e'] = topLetters[0];
            res['a'] = topLetters[1];

            return res;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Zjistí, jak moc daný text odpovídá zvyklostem daného jazyka.
        /// </summary>
        /// <param name="text">Jakýkoliv text daného jazyka</param>
        /// <param name="lang">Vlastnosti a charakteristiky jazyka</param>
        /// <returns>Procentuální vyjádření shody s vlastnostmi jazyka</returns>
        public static double SimilarityIndex(string text, LangCharacteristic lang)
        {
            double similarity = 0;

            similarity += 3 * SumSimilarity(text, lang.Letters);
            similarity += SumSimilarity(text, lang.Bigrams);
            similarity += SumSimilarity(text, lang.Trigrams);

            return similarity;
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Seřadí klíče od nejpravděpodobnějších po nejméně pravděpodobné
 /// </summary>
 /// <param name="keys"></param>
 /// <param name="ciphertext"></param>
 /// <param name="lang"></param>
 /// <returns></returns>
 private string[] OrderKeys(string[] keys, string ciphertext, LangCharacteristic lang)
 {
     var opentexts = GetOpentexts(keys, ciphertext);
     var probabilities = GetProbabilities(opentexts, keys, lang);
     var orderedKeys = probabilities.Keys.ToArray();
     return orderedKeys;
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Zjistí pravděpodobnost jednotlivých klíčů
        /// </summary>
        /// <param name="opentexts"></param>
        /// <param name="keys"></param>
        /// <param name="lang"></param>
        /// <returns></returns>
        private Dictionary<string, int> GetProbabilities(string[] opentexts, string[] keys, LangCharacteristic lang)
        {
            string[] topTopWords = lang.TopWords.Take(topWordsCount).ToArray();

            Dictionary<string, int> probabilities = new Dictionary<string, int>();

            for (int i = 0; i < keys.Length; i++)
                probabilities[keys[i]] = Analyse.WordsContains(opentexts[i], topTopWords);

            return probabilities.OrderByDescending(x => x.Value).ToDictionary(x => x.Key, x => x.Value);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Načte z disku požadovaná data
        /// </summary>
        public static void LoadFiles(Action actionIfNotSucces)
        {
            try
            {
                langChars = new Dictionary<Languages, LangCharacteristic>();

                var names = Enum.GetNames(typeof(Languages));

                foreach (string name in names)
                {
                    Languages l = (Languages)Enum.Parse(typeof(Languages), name);
                    langChars[l] = new LangCharacteristic(l);
                }
            }
            catch (Exception)
            {
                actionIfNotSucces();
            }
        }