Пример #1
0
        public ComparisonCreator(string basePath)
        {
            pathsToDictionaries = new List <Tuple <string, Language> >();
            pathsToDictionaries.Add(Tuple.Create($"{basePath}/words_base/english.txt", Language.English));
            pathsToDictionaries.Add(Tuple.Create($"{basePath}/words_base/polish.txt", Language.Polish));
            pathsToDictionaries.Add(Tuple.Create($"{basePath}/words_base/german.txt", Language.German));
            pathsToDictionaries.Add(Tuple.Create($"{basePath}/words_base/spanish.txt", Language.Spanish));
            pathsToDictionaries.Add(Tuple.Create($"{basePath}/words_base/portugese.txt", Language.Portuguese));
            pathsToDictionaries.Add(Tuple.Create($"{basePath}/words_base/italian.txt", Language.Italian));
            pathsToDictionaries.Add(Tuple.Create($"{basePath}/words_base/french.txt", Language.French));

            LanguageDictionaryFactory factory = new LanguageDictionaryFactory();

            this.languageDictionaries = factory.Create(pathsToDictionaries);

            this.pathsToArticles = new Dictionary <Language, string>();
            pathsToArticles.Add(Language.English, $"{basePath}/articles/english.txt");
            pathsToArticles.Add(Language.German, $"{basePath}/articles/german.txt");
            pathsToArticles.Add(Language.French, $"{basePath}/articles/french.txt");
            pathsToArticles.Add(Language.Spanish, $"{basePath}/articles/spanish.txt");
            pathsToArticles.Add(Language.Portuguese, $"{basePath}/articles/portugese.txt");
            pathsToArticles.Add(Language.Italian, $"{basePath}/articles/italian.txt");

            // NOT pathsToArticles.Add(Language.Polish, "../../articles/polish.txt");

            urlsToArticles = cacheArticles().Result;
        }
Пример #2
0
        public Alg1Analizer(string basePath)
        {
            List <Tuple <string, Language> > pathsAndLanguages = new List <Tuple <string, Language> >();

            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/english.txt", Language.English));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/polish.txt", Language.Polish));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/german.txt", Language.German));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/spanish.txt", Language.Spanish));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/portugese.txt", Language.Portuguese));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/italian.txt", Language.Italian));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/french.txt", Language.French));

            LanguageDictionaryFactory factory = new LanguageDictionaryFactory();

            this.languageDictionaries = factory.Create(pathsAndLanguages);
        }
Пример #3
0
        public void Run(string basePath)
        {
            Console.WriteLine("Hello World!");

            List <Tuple <string, Language> > pathsAndLanguages = new List <Tuple <string, Language> >();

            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/english.txt", Language.English));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/polish.txt", Language.Polish));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/german.txt", Language.German));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/spanish.txt", Language.Spanish));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/portugese.txt", Language.Portuguese));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/italian.txt", Language.Italian));
            pathsAndLanguages.Add(Tuple.Create($"{basePath}/words_base/french.txt", Language.French));

            LanguageDictionaryFactory        factory             = new LanguageDictionaryFactory();
            IEnumerable <LanguageDictionary> languageDitionaries = factory.Create(pathsAndLanguages);
        }
Пример #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Loading dictionary (will take a while)");
            LanguageDictionary dic = LanguageDictionaryFactory.fromGCIDE_XML();

            Console.WriteLine("Done.");
            Console.WriteLine(dic.Count() + " words imported.");
            Console.WriteLine();

            string fileName = "English.dic";

            Console.WriteLine("Saving file: " + fileName);
            dic.Save(fileName);
            Console.WriteLine();

            Console.WriteLine("Loading file: " + fileName);
            LanguageDictionary engLoad = LanguageDictionary.Load(fileName);

            Console.WriteLine(engLoad.Count() + " words loaded.");
            Console.WriteLine();

            string checkFileName = "English2.dic";

            Console.WriteLine("Comparing saved loaded file against original.");
            engLoad.Save(checkFileName);
            if (File.ReadAllText(fileName) == File.ReadAllText(checkFileName))
            {
                Console.WriteLine("\tSucsess");
            }
            else
            {
                Console.WriteLine("\tFailed");
            }
            Console.WriteLine();
            dic.Save(@"X:\Programming\Resources\dictionaries\English.dic");

            Console.WriteLine("Press any key to continue.");
            Console.ReadKey();
        }
Пример #5
0
        // Porównuje algorytmy 1 i 2 dla podanego języka w zależności od liczby słów w słowniku
        public void CreateComparisonOfAlgorithmEffectivenessOnDictionaryLength(Language analyzedLanguage)
        {
            string path = pathsToArticles[analyzedLanguage];
            int    numberOfArticlesToAnalyze = 10;

            // Dla jakiej liczby wyrazów w słowniku chcemy wykonać analizę
            List <int> dictionariesSizeToAnalyze = new List <int>();

            for (int i = 20; i <= 1000; i += 20)
            {
                dictionariesSizeToAnalyze.Add(i);
            }

            // Wielkość słownika - liczba poprawnych wykryć języka
            Dictionary <int, int> alg1SuccessfulDetection = new Dictionary <int, int>();
            Dictionary <int, int> alg2SuccessfulDetection = new Dictionary <int, int>();

            LanguageDictionaryFactory factory = new LanguageDictionaryFactory();

            foreach (int dictionarySize in dictionariesSizeToAnalyze)
            {
                IEnumerable <LanguageDictionary> dictionaries = factory.Create(pathsToDictionaries, dictionarySize);
                Alg1Analizer alg1 = new Alg1Analizer(dictionaries);
                Alg2Analizer alg2 = new Alg2Analizer(dictionaries);
                int          alg1SuccessfulDetectionCount = 0;
                int          alg2SuccessfulDetectionCount = 0;

                string[] lines = System.IO.File.ReadAllLines(path);
                foreach (string url in lines)
                {
                    string content = urlsToArticles[url].Content;

                    // Algorytm 1
                    Analysis analysis = alg1.Analize(content);
                    if (analysis.GetDiscoveredLanguage().Equals(analyzedLanguage))
                    {
                        alg1SuccessfulDetectionCount++;
                    }

                    // Algorytm 2
                    Analysis analysis2 = alg2.Analize(content);
                    if (analysis2.GetDiscoveredLanguage().Equals(analyzedLanguage))
                    {
                        alg2SuccessfulDetectionCount++;
                    }
                }
                alg1SuccessfulDetection.Add(dictionarySize, alg1SuccessfulDetectionCount);
                alg2SuccessfulDetection.Add(dictionarySize, alg2SuccessfulDetectionCount);
            }

            string csvPath = "../../comparisons/dictionary_length_comparison_" + analyzedLanguage.ToString() + ".csv";

            if (!File.Exists(path))
            {
                File.Create(path).Close();
            }
            using (TextWriter writer = new StreamWriter(csvPath, false, Encoding.UTF8)) {
                writer.WriteLine("Porównanie algorytmów 1 i 2 dla różnych długości słownika dla języka: " +
                                 analyzedLanguage.ToString() + "");
                writer.WriteLine(";Alg. 1; Alg. 2");
                foreach (int dictionarySize in dictionariesSizeToAnalyze)
                {
                    writer.WriteLine(dictionarySize + ";" + alg1SuccessfulDetection[dictionarySize] + ";" +
                                     alg2SuccessfulDetection[dictionarySize]);
                }
            }
        }