Esempio n. 1
0
        //-------------------------------------------------------
        // 翻訳のメイン
        //     KJ_browserの中にも同じものをコピーで持っている点注意
        //
        public WordChain MorphologicScan(WordChain wChain)
        {
            #if DEBUG_LOG
            KJ_Analyzer.StartDebugLog();
            KJ_Analyzer.WriteDebugLog("MorphologicScan");
            #endif

            if (!wChain.Exist())
            {
                return(wChain);
            }

            WordTable wTable = wChain.Head;

            // 解析ループ  1回目
            // 翻訳前処理(助詞分離など先に  熟語の精度を上げるため)
            //  고정 관념을 ---> 고정 관념 을に分離しておくため(熟語判定用)
            while (wTable != null)
            {
                this.sTrans.pBarStep(); // プログレスバーを進める


                // 1回目処理
                wTable = firstScan(wChain, wTable);

                wTable = wTable.next;   // 次の語へ
            } // 翻訳前処理ここまで


            // 解析ループ  2回目  (翻訳のメインループ)
            wTable = wChain.Head;  //   再度先頭から
            while (wTable != null)
            {
                this.sTrans.pBarStep(); // プログレスバーを進める


                // 2回目処理
                wTable = secondScan(wChain, wTable);

                wTable = wTable.next;   // 次の語へ
            } // 翻訳のメインループ ここまで

            #if DEBUG_LOG
            KJ_Analyzer.EndDebugLog();
            #endif

            return(wChain);
        }