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