public CheckGBPrePreprocessingAlgorithm(GrammaticalBasises gbs, UniformPartsFinalResults ups) : base(AlgorithmProcessingType.PreProcessing, AlgorithmObjectType.WholeSentence, AlgorithmNames.PreProcessing.CheckGB, needPrintSourceData: false, needCopySentence: true) { _grammaticalBasises = gbs; _uniformParts = ups; }
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; }
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); } }
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 }; } }
protected override BaseSentenceAlgorithmData InitSourceData(List<BaseSentenceAlgorithm> algorithms) { _uniformPartsFinalResults = algorithms.FindByInternalName(AlgorithmNames.DivorcedWords.RestoreToBe.InternalName).AlgResult.FinalResults.UniformPartsFinalResults; return new BaseSentenceAlgorithmData(); }
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; }
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; }
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; }