public static void DoTest() { NameDivideService nameDivider = new NameDivideService(KanjiList); isTest = true; while (isTest) { Console.WriteLine("お試しモードです。名前をコンソールに入力してください。"); Console.Write(">"); string name = Console.ReadLine(); if (name == "quit") { isTest = false; } else if (name == string.Empty) { } else { if (nameDivider.getNameCandidate(name) != null) { Console.WriteLine(nameDivider.getNameCandidate(name)[0].Sentence); } else { Console.WriteLine("名前が正しくありません"); } } } }
public static void CheckAccuracy() { NameDivideService nameDivider = new NameDivideService(KanjiList); Console.WriteLine("ファイルのパス名を入力してください。"); Console.Write(">"); string path = Console.ReadLine(); if (path == "quit") { return; } else if (File.Exists(path) == false) { Console.WriteLine("ファイルを見つけられません。パス名が正しいか確認してください。"); return; } string line = string.Empty; StringBuilder sb = new StringBuilder(); int nameCount = 0; int mistakeCount = 0; using (StreamReader sr = new StreamReader(path, Encoding.UTF8)) { while ((line = sr.ReadLine()) != null) { string noSpaceName = line.Replace(" ", ""); if (nameDivider.getNameCandidate(noSpaceName) == null) { Console.WriteLine($"{nameCount + 1}件目の名前が正しくありません。エラーが発生したため処理が完了されませんでした。"); return; } string dividedName = nameDivider.getNameCandidate(noSpaceName)[0].Sentence; if (line == dividedName) { sb.AppendLine($"true,{dividedName}"); } else { sb.AppendLine($"false,{dividedName}"); mistakeCount++; } nameCount++; } using (StreamWriter sw = new StreamWriter($".\\NameDivideResult{System.DateTime.Now.ToString("MMddhhmmss")}.txt")) { sw.WriteLine(sb.ToString()); } Console.WriteLine($"{nameCount}件の処理が正常に終了しました。間違えた数:{mistakeCount}正解率:{Math.Round((double)(nameCount - mistakeCount)/nameCount,3)}"); } }
public static void DivideNameFromTextOrderByCertaintyFactor() { NameDivideService nameDivider = new NameDivideService(KanjiList); NameListWithCertainlyFactor = new List <NameWithCertainlyFactor>(); Console.WriteLine("ファイルのパス名を入力してください。"); Console.Write(">"); string path = Console.ReadLine(); if (path == "quit") { return; } else if (File.Exists(path) == false) { Console.WriteLine("ファイルを見つけられません。パス名が正しいか確認してください。"); return; } string line = string.Empty; StringBuilder sb = new StringBuilder(); int nameCount = 0; using (StreamReader sr = new StreamReader(path, Encoding.UTF8)) { while ((line = sr.ReadLine()) != null) { if (nameDivider.getNameCandidate(line) != null) { SetCertainlyFactor(nameDivider.getNameCandidate(line), nameCount + 1); } else { Console.WriteLine($"{nameCount + 1}件目の名前が正しくありません。エラーが発生したため処理が完了されませんでした。"); return; } nameCount++; } NameListWithCertainlyFactor.Sort((a, b) => (int)(a.CertainlyFactor * 100000) - (int)(b.CertainlyFactor * 100000)); using (StreamWriter sw = new StreamWriter($".\\NameDivideResult{System.DateTime.Now.ToString("MMddhhmmss")}.txt")) { foreach (NameWithCertainlyFactor nwcf in NameListWithCertainlyFactor) { sw.WriteLine(nwcf.ToString()); } } } Console.WriteLine($"{nameCount}件の処理が正常に終了しました。"); }
public static void DivideNameFromText() { NameDivideService nameDivider = new NameDivideService(KanjiList); Console.WriteLine("ファイルのパス名を入力してください。"); Console.Write(">"); string path = Console.ReadLine(); if (path == "quit") { return; } else if (File.Exists(path) == false) { Console.WriteLine("ファイルを見つけられません。パス名が正しいか確認してください。"); return; } string line = string.Empty; StringBuilder sb = new StringBuilder(); int nameCount = 0; using (StreamReader sr = new StreamReader(path, Encoding.UTF8)) { while ((line = sr.ReadLine()) != null) { if (nameDivider.getNameCandidate(line) != null) { sb.AppendLine(nameDivider.getNameCandidate(line)[0].Sentence); } else { Console.WriteLine($"{nameCount + 1}件目の名前が正しくありません。エラーが発生したため処理が完了されませんでした。"); return; } nameCount++; } using (StreamWriter sw = new StreamWriter($".\\NameDivideResult{System.DateTime.Now.ToString("MMddhhmmss")}.txt")) { sw.WriteLine(sb.ToString()); } } Console.WriteLine($"{nameCount}件の処理が正常に終了しました。"); }