示例#1
0
        public void Process(Block3Files block3Files, string inputString,
            Action<AlgorithmsStageType, BaseSentenceAlgorithm, BaseSentenceAlgorithmData> singleAlgorithmCompleteCallback,
            Action<AlgorithmsStageType, BaseSentenceAlgorithm> singleAlgorithmStartCallback)
        {
            Debug.Assert(block3Files != null);

            if (string.IsNullOrEmpty(inputString))
            {
                Log.InfoFormat("Читаем входное предложение из файла {0}", block3Files.InputFileName);
                _inputSentence = new InputSentence(block3Files.InputFS);
            }
            else
            {
                Log.Info("Читаем входное предложение из строки ввода");
                _inputSentence = new InputSentence(inputString);
            }

            Log.Info("Инициализация первичных алгоритмов обработки");
            _initializeFirstAlgoritms(_firstAlgorithms);
            Log.InfoFormat("Выполнено. {0} Информация о существующих алгоритмах: {1}", Environment.NewLine,
                _firstAlgorithms.ShortInfo());

            Log.Info("Применяем первичные алгоритмы.");
            _firstAlgorithms.ApplyAlgorithms(_inputSentence.InitialText, singleAlgorithmCompleteCallback, singleAlgorithmStartCallback);

            Log.Info("Инициализация АПР");
            _initializePreprocessingAlgoritms(_firstAlgorithms, _inputSentence);

            Log.Info("Применяем АПР.");
            var newSentenceText = _preProcessingAlgorithms.ApplyAPRAlgorithms(_inputSentence, _firstAlgorithms.FinalResult().Sentence, singleAlgorithmCompleteCallback, singleAlgorithmStartCallback);

            Log.Info("Финальная идентификация ЛО.");
            _initializeFinalAlgoritms();
            _finalAlgorithms.ApplyAlgorithms(newSentenceText, singleAlgorithmCompleteCallback, singleAlgorithmStartCallback);

            //SaveReults(inputSentence);
        }
示例#2
0
        private void _initializePreprocessingAlgoritms(AlgorithmsContainer firstAlgorithms, InputSentence inputSentence)
        {
            var elementsBeforeEnumerationIds = inputSentence.EnumerationsGroupNr.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList().Select(int.Parse).ToList();

            var finalUPs = firstAlgorithms.FinalResult().FinalResults.UniformPartsFinalResults;
            var finalQuasiUPs = firstAlgorithms.FinalResult().FinalResults.QuasiUPAttachmentFinalResults;
            var inserts = inputSentence.RemovedTextElementsInfo;

            var grammaticalBasises = firstAlgorithms.FinalResult().FinalResults.GrammaticalBasisesFinalResults;

            _preProcessingAlgorithms = new PreProcessingAlgorithmsContainer(firstAlgorithms.FinalResult().FinalResults)
            {
                InitialSentence = firstAlgorithms.FinalResult().Sentence,
                APR3Inserts = new InsertsPrePreprocessingAlgorithm(finalUPs, inserts, finalQuasiUPs),
                APR4CheckGB = new CheckGBPrePreprocessingAlgorithm(grammaticalBasises.All, finalUPs),
                APR2EnumerationBlock = new EnumerationPrePreprocessingAlgorithm(elementsBeforeEnumerationIds),
                PreProcessingSummary = new PreProcessingSummary()
            };
        }