Esempio n. 1
0
        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("名前が正しくありません");
                    }
                }
            }
        }
Esempio n. 2
0
        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)}");
            }
        }
Esempio n. 3
0
        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}件の処理が正常に終了しました。");
        }
Esempio n. 4
0
        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}件の処理が正常に終了しました。");
        }