Пример #1
0
 public InputSentenceFileProcessor()
 {
     _firstAlgorithms = new AlgorithmsContainer(new ComprenoSentenceParseAlgorithm(), AlgorithmsStageType.PreProcessingPrepare);
     _finalAlgorithms = new AlgorithmsContainer(new ComprenoSentenceParseAlgorithm(), AlgorithmsStageType.FinalProcessing);
 }
Пример #2
0
        private void _initializeFirstAlgoritms(AlgorithmsContainer algorithmsContainer)
        {
            // Алгоритм удален 26.09.2016
            // firstAlgoritms.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUniformPartsMain()); //ОЧ.1.3
            // firstAlgoritms.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUniformPartsPreliminary());  //ОЧ.0.3
            // firstAlgoritms.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUPRows()); //ОЧ.5.3

            // ОДНОРОДНЫЕ ЧЛЕНЫ

            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.ConjuctedWords()); //ОЧ.1.1
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.FindFalseConjunctionS()); //ОЧ.2.1

            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.KSO_UP2()); //ОЧ.2.1i
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.SubjectAndPredicateConjunction()); //ОЧ.2.2
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.ConjunctedWordsForPSS()); //ОЧ.3.1
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.PSSRows()); //ОЧ.5.6
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.PSSLinkFeature()); //ОЧ.7.4

            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.KSO_UP3()); //ОЧ.2.2i
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.BetweenAndI()); //ОЧ.2.3
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.WordWithLostConjunction()); //ОЧ.4.1
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.SPSSRows()); //ОЧ.5.3

            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.KSO_UP4()); //ОЧ.2.3i
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.FindElliptedNoun()); //ОЧ.2.4
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.UPAdjectiveForElliptedNoun()); //ОЧ.3.2
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.AdjectiveForElliptedNounRows()); //ОЧ.5.7
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.ElliptedNounLinkFeature()); //ОЧ.7.2

            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.KSO_UP5()); //ОЧ.2.4i
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.StandartUPRows()); //ОЧ.5.1
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.ConjunctedLinkFeature()); //ОЧ.7.1

            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.FindFalseParticleI()); //ОЧ.0.2
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.ParticleIParentConjuctedWords()); //ОЧ.1.2
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.ParticleIRows()); //ОЧ.5.2
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.ConjunctionILinkFeature()); //ОЧ.7.3

            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUniformPartsAttachmentPreliminary());  //ОЧ.0.4
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUniformPartsAttachmentMain()); //ОЧ.1.4.0
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUniformPartsAttachmentType1Stage1ShowData()); // ОЧ.1.4.1
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUniformPartsAttachmentType1Stage2ShowData()); // ОЧ.1.4.2
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUniformPartsAttachmentType2Stage2ShowData()); // ОЧ.1.4.3
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUPAttachmentRows()); //ОЧ.5.4
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUPAttachmentLinkFeature()); //ОЧ.7.5

            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUniformPartsAttachmentVerbPreliminary()); //ОЧ.0.5
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUniformPartsAttachmentVerbMain()); //ОЧ.1.5
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUPAttachmentVerbRows()); //ОЧ.5.5
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.QuasiUPAttachmentVerbLinkFeature()); //ОЧ.7.6

            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.UPRowsMergeAlgorithm()); //ОЧ.5.8
            algorithmsContainer.Add(new Block3Algorithms.Final.UniformsParts.Algorithms.FinalPostProcessingForSentence()); // Пост процессинг

            // СКАЗУЕМЫЕ

            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.SimplePredicate()); //СК.1.1
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.IndependentInfinitive()); //СК.2.1
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.AdverbialParticiplesAndPhantom()); //СК.1.2
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.Participles()); //СК.1.3

            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicateUnion()); //СК.2.2
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicateCorrection()); //СК.3.0
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicateParts()); //Предварительный 1
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicatePartsShowData()); //СК.3.2
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.ConjunctedPredicates()); // Предварительный 1
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.GenerateAllPredicates()); // Предварительный 2

            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicateTypesShowData()); //СК.4.1
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.InnerConjunctionPredicatesFeaturesShowData()); //СК.4.2.1
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.RightToJoinInfinitivesShowData()); //СК.4.2.2
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.ForbidJoiningInfinitivesShowData()); //СК.4.2.3
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.CombiningInnerConjPredicatesShowData()); //СК.4.2.4
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicatePartsStage2ShowData()); //СК.4.3
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicateTypesStage2ShowData()); //СК 4.6
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.OuterConjunctionPredicatesFeaturesShowData()); //СК 4.6.1
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.RightToJoinInfinitivesAndAuxVerbsShowData()); //СК 4.6.2
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.ForbidJoiningInfinitivesAndAuxVerbsShowData()); //СК 4.6.3
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.CombiningOuterConjPredicatesShowData()); //СК 4.6.4
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicatePartsStage3ShowData()); //СК 4.7
            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicateTypesStage3ShowData());//СК 4.8

            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicateModalityCheck()); //СК.4.9

            // ПОДЛЕЖАЩИЕ

            algorithmsContainer.Add(new Block3Algorithms.Final.Subject.Algorithms.SimpleSubject()); //ПДЛ.1.1
            algorithmsContainer.Add(new Block3Algorithms.Final.Subject.Algorithms.WhichSubject()); //ПДЛ.1.2
            algorithmsContainer.Add(new Block3Algorithms.Final.Subject.Algorithms.AllSimpleSubjects()); //ПДЛ.1.3

            algorithmsContainer.Add(new Block3Algorithms.Final.Subject.Algorithms.FalseSubjectReconstruction()); //ПДЛ.2.1
            algorithmsContainer.Add(new Block3Algorithms.Final.Subject.Algorithms.SubjectUpdateStage1()); //ПДЛ.2.2
            algorithmsContainer.Add(new Block3Algorithms.Final.Subject.Algorithms.SubjectPredicateСorrelation()); //ПДЛ.2.3

            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicatePartsStage4()); //СК 4.9

            algorithmsContainer.Add(new Block3Algorithms.Final.Subject.Algorithms.SubjectPostProcessing());

            // ОГС
            // КОД ОГС ПРАКТИЧЕСКИ НЕ ТЕСТИРОВАЛСЯ НА РЕАЛЬНЫХ ПРИМЕРАХ, ПОЭТОМУ ТАМ МОЖЕТ БЫТЬ НУ ОЧЕНЬ МНОГО ОШИБОК!!!

            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.DivorcedWordsRoot());//ОГС 0.1
            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.PhantomPredicateRoot());//ОГС 0.2
            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.AllOGSWords());//ОГС 0.3

            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.ParticleThis());//ОГС 1.1
            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.RestoreToBe()); //ОГС 1.2
            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.ComplementUniformParts()); //ОГС 1.3

            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.FindDivorcedSubject()); //ОГС 2.1.1
            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.FindDivorcedPredicate()); //ОГС 2.4.1

            algorithmsContainer.Add(new Block3Algorithms.Final.Predicate.Algorithms.PredicatesStage5ShowData()); //СК 5.1
            algorithmsContainer.Add(new Block3Algorithms.Final.Subject.Algorithms.SubjectUpdateStage2()); //ПДЛ 3.1
            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.QuasiUPAttachmentType1Update()); //ОГС 3.3
            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.UniformPartsUpdate()); // ОГС 3.4

            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.ThenConjunction()); //ОГС 4.1
            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.IfConjunction()); //ОГС 4.2
            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.NearestPredicateAfterThen()); //ОГС 4.3

            algorithmsContainer.Add(new Block3Algorithms.Final.DivorcedWords.Algorithms.OGSPostProcessing()); // Пост процессинг

            // ГРАММАТИЧЕСКАЯ ОСНОВА
            algorithmsContainer.Add(new Block3Algorithms.Final.GrammaticalBasis.Algorithms.SubjectPredicatePair());//ГО 5.3.1
            algorithmsContainer.Add(new Block3Algorithms.Final.GrammaticalBasis.Algorithms.GrammaticalBaseStage1());//ГО 5.3.3
            algorithmsContainer.Add(new Block3Algorithms.Final.GrammaticalBasis.Algorithms.ParticiplePair());//ГО 5.4.1
            algorithmsContainer.Add(new Block3Algorithms.Final.GrammaticalBasis.Algorithms.AdverbialParticiplePair());//ГО 5.7.1
            algorithmsContainer.Add(new Block3Algorithms.Final.GrammaticalBasis.Algorithms.AllGO());//ГО 5.8.1
            algorithmsContainer.Add(new Block3Algorithms.Final.GrammaticalBasis.Algorithms.SubjectsUpdateStage3());//ГО 5.9.1

            //Здесь и далее перенести в финальные алгоритмы

            algorithmsContainer.Add(new Block3Algorithms.Final.DirectObject.Algorithms.StandartDirectObject());//Д 1.1
            algorithmsContainer.Add(new Block3Algorithms.Final.DirectObject.Algorithms.WhichDirectObject());//Д 1.2
            algorithmsContainer.Add(new Block3Algorithms.Final.DirectObject.Algorithms.InfinitiveDirectObject());//Д 1.3
            algorithmsContainer.Add(new Block3Algorithms.Final.DirectObject.Algorithms.AllDirectObjects());//Д 1.4
            algorithmsContainer.Add(new Block3Algorithms.Final.DirectObject.Algorithms.FalseDirectObjectReconstruction());//Д 2.1
            algorithmsContainer.Add(new Block3Algorithms.Final.DirectObject.Algorithms.AllDirectObjectsStage2ShowData());//Д 2.2
            algorithmsContainer.Add(new Block3Algorithms.Final.DirectObject.Algorithms.DirectObjectPostProcessing());

            // Обезоднородненные простые предложения - перенести в финальные алгоритмы
            algorithmsContainer.Add(new Block3Algorithms.Final.SimpleSentencesWithNoUniformElements.Algorithms.MainAndSubordinatingPredicates());//ОПП 6.1.1
            algorithmsContainer.Add(new Block3Algorithms.Final.SimpleSentencesWithNoUniformElements.Algorithms.MainGrammaticalBasises());//ОПП 6.1.2
            algorithmsContainer.Add(new Block3Algorithms.Final.SimpleSentencesWithNoUniformElements.Algorithms.SubordinatingGrammaticalBasises());//ОПП 6.1.3
            algorithmsContainer.Add(new Block3Algorithms.Final.SimpleSentencesWithNoUniformElements.Algorithms.ConjunctedGBObjects());//ОПП 6.2.1
            algorithmsContainer.Add(new Block3Algorithms.Final.SimpleSentencesWithNoUniformElements.Algorithms.FindConjunctedGB());//ОПП 6.2.2
            algorithmsContainer.Add(new Block3Algorithms.Final.SimpleSentencesWithNoUniformElements.Algorithms.ConjunctedSSNU());//ОПП 6.2.3
            algorithmsContainer.Add(new Block3Algorithms.Final.SimpleSentencesWithNoUniformElements.Algorithms.SSNUWithConjunction());//ОПП 6.2.4
        }
Пример #3
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()
            };
        }