コード例 #1
0
 public CheckGBPrePreprocessingAlgorithm(GrammaticalBasises gbs, UniformPartsFinalResults ups)
     : base(AlgorithmProcessingType.PreProcessing,
     AlgorithmObjectType.WholeSentence,
     AlgorithmNames.PreProcessing.CheckGB,
     needPrintSourceData: false,
     needCopySentence: true)
 {
     _grammaticalBasises = gbs;
     _uniformParts = ups;
 }
コード例 #2
0
 public InsertsPrePreprocessingAlgorithm(UniformPartsFinalResults upRows, RemovedTextElementsInfo insertsInfo, QuasiUPAttachmentFinalResults quasiUPs)
     : base(AlgorithmProcessingType.PreProcessing,
     AlgorithmObjectType.WholeSentence,
     AlgorithmNames.PreProcessing.Inserts,
     needPrintSourceData: false,
     needCopySentence: true)
 {
     _upRows = upRows;
     _insertsInfo = insertsInfo;
     _quasiUPs = quasiUPs;
 }
コード例 #3
0
        public PhantomPredicateInfo(int id, List<SentenceElement> elements, UniformPartsFinalResults uniformPartsFinalResults)
        {
            AnotherRoots = new List<SentenceElement>();
            OriginalRoot = new List<SentenceElement>();

            PhantomPredicate = elements.Find(x => x.Id == id);
            if (uniformPartsFinalResults.All.Any(x => x.Id == PhantomPredicate.Id))
            {
                var phantomPredicateRowNr = uniformPartsFinalResults.All.Find(x => x.Id == PhantomPredicate.Id).RowNr;
                var upsForPredicate = uniformPartsFinalResults.All.FindAll(x => x.RowNr == phantomPredicateRowNr && x.Id != PhantomPredicate.Id);
                AnotherRoots = elements.FindAll(y => upsForPredicate.Select(x => x.Id).Contains(y.Id));

                var minOrderDistance = upsForPredicate.Min(x => PhantomPredicate.Order - x.Order);
                PreviousRoot = elements.Find(y => y.Id == upsForPredicate.Find(x => PhantomPredicate.Order - x.Order == minOrderDistance).Id);
                OriginalRoot = elements.FindAll(x => x.ConjunctedWithId == PhantomPredicate.Id);
            }
        }
コード例 #4
0
        private object[] _processParticiple(SentenceElement element, Sentence sentence, UniformPartsFinalResults upRows)
        {
            var participleId = element.Id;

            var hasChildrenNotServicePart = sentence.SyntacticChildren(participleId).Any(x =>
                x.SyntacticRole.Value != SyntacticRole.ParticleNegative.Value
                && x.SyntacticRole.Value != SyntacticRole.CoordinatingConjunction.Value
                && x.SyntacticRole.Value != SyntacticRole.Particle.Value);
            if (hasChildrenNotServicePart)
            {
                Log.InfoFormat("  Обнаружили потомка не СЧР. Причастие -- Причастие Финальное 1");
                var finalParticiple1 = participleId;
                return new object[] {participleId, finalParticiple1, -1, finalParticiple1, -1};
            }

            Log.InfoFormat("Причастие - Причастие - предварительное 2)");

            if (!upRows.All.Any(x => x.Id == participleId))
            {
                Log.InfoFormat("  Причастие не принадлежит ни одному из рядов. Причастие -- Признак 1");
                var participleFeature = participleId;
                return new object[] {participleId, -1, -1, -1, participleFeature};
            }

            var rowNr = upRows.All.Find(x => x.Id == participleId).RowNr;
            Log.InfoFormat("  Причастие принадлежит к ряду ОЧ {0}. Причастие - предваритиельное 3", rowNr);

            if (sentence.Elements.FindAll(x => upRows.All.Select(y => y.Id).Contains(x.SyntacticParentWordId)).Any(x =>
                x.SyntacticRole.Value != SyntacticRole.ParticleNegative.Value
                && x.SyntacticRole.Value != SyntacticRole.CoordinatingConjunction.Value
                && x.SyntacticRole.Value != SyntacticRole.Particle.Value))
            {
                Log.InfoFormat("  У сочиненных с рассматриваемым причастий нет потомков не СЧР. Причастие -- Признак 2");
                var participleFeature = participleId;
                return new object[] { participleId, -1, -1, -1, participleFeature };
            }
            else
            {
                Log.InfoFormat("  У сочиненных с рассматриваемым причастий есть хотя бы один потомок не СЧР. Причастие -- Финальное 2");
                var participleFinal2 = participleId;
                return new object[] { participleId, -1, participleFinal2, participleFinal2, -1 };
            }
        }
コード例 #5
0
        protected override BaseSentenceAlgorithmData InitSourceData(List<BaseSentenceAlgorithm> algorithms)
        {
            _uniformPartsFinalResults = algorithms.FindByInternalName(AlgorithmNames.DivorcedWords.RestoreToBe.InternalName).AlgResult.FinalResults.UniformPartsFinalResults;

            return new BaseSentenceAlgorithmData();
        }
コード例 #6
0
        public override object Clone()
        {
            var result = new UniformPartsFinalResults(_needToMerge, _algorithmActiveLOType);

            foreach (var row in this.Items)
                result.Items.Add(row);

            result.DataArraysForCheckColunmNames = DataArraysForCheckColunmNames.ToDictionary(entry => entry.Key, entry => entry.Value);

            return result;
        }
コード例 #7
0
 protected override BaseSentenceAlgorithmData InitSourceData(List<BaseSentenceAlgorithm> algorithms)
 {
     _uniformPartsFinalResults = algorithms.Find(x => x.Info.InternalName == AlgorithmNames.DivorcedWords.ParticleThis.InternalName).AlgResult.FinalResults.UniformPartsFinalResults;
     return algorithms.Find(x => x.Info.InternalName == AlgorithmNames.DivorcedWords.ParticleThis.InternalName).AlgResult;
 }
コード例 #8
0
 protected override BaseSentenceAlgorithmData InitSourceData(List<BaseSentenceAlgorithm> algorithms)
 {
     _uniformPartsFinalResults = algorithms.FindByInternalName(AlgorithmNames.DivorcedWords.RestoreToBe.InternalName).AlgResult.FinalResults.UniformPartsFinalResults;
     _firstPredicateIds =
         algorithms.FindHelperDataTableByAlgInternalName(AlgorithmNames.DivorcedWords.RestoreToBe.InternalName)
             .ColumnIntPositiveValues(HelperDataParticleThisPredicateAfterParticle.Name);
     return algorithms.FindByInternalName(AlgorithmNames.DivorcedWords.RestoreToBe.InternalName).AlgResult;
 }