Exemplo n.º 1
0
        private IOrderedEnumerable<SentenceElement> _compileMeaningPart(Stage4ResultElement meaningPart)
        {
            var result = new List<SentenceElement> { meaningPart };

            result.AddRange(meaningPart.ServiceParts);
            result.AddRange(meaningPart.AddedWordsCase1);
            result.AddRange(meaningPart.AddedWordsCase2);

            return result.OrderBy(word => word.Order);
        }
Exemplo n.º 2
0
        public override void ProcessSentence(Sentence sentence)
        {
            _sentence = sentence;
            Debug.Assert(sentence.ElementList != null);
            Debug.Assert(sentence.ElementList.Count > 0);
            List<SentenceElement> words = sentence.ElementList;

            // разворачиваем все, что добавили на 3-м этапе в список резльтатов 4-го и после этого плюсуем к ним СЧР
            foreach (var itemStage3 in _meaningPartStage3Result.Items)
            {
                Stage4ResultElement item = new Stage4ResultElement();
                item.CopyFromSourceWord(itemStage3);
                item.AddedWordsCase1 = itemStage3.AddedWordsCase1;
                item.AddedWordsCase2 = itemStage3.AddedWordsCase2;
                Result.Items.Add(item);
            }

            foreach (var itemStage4 in Result.Items)
            {
                itemStage4.ServiceParts.AddRange(words.FindAll(x => (x.SyntacticParentWordId == itemStage4.Id) && (x.IsServicePart)));

                // TODO: провести поиск СЧР для составных частей Add1 и Add2

                // добавляем второй проход по выявленным СЧР, чтобы выявить ситуации "не были удовлетворены" (частица + вспом.глагол + XXX)
                List<SentenceElement> servicePartsSecondLevel = new List<SentenceElement>();
                foreach (var servicePart in itemStage4.ServiceParts)
                    servicePartsSecondLevel.AddRange(words.FindAll(x => (x.SyntacticParentWordId == servicePart.Id) && (x.IsServicePart)));
                itemStage4.ServiceParts.AddRange(servicePartsSecondLevel);
            }
        }