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; }
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); }
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); }
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(); }
// 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]); } } }