Example #1
0
        private Sentence ConvertToSentence(Parse parse)
        {
            if (parse.Type == MaximumEntropyParser.TopNode)
            {
                parse = parse.GetChildren()[0];
            }

            PartSentence parseSentence = ConvertParseToSentence(parse);
            var          result        = new Sentence(parseSentence);

            if (!parse.IsPosTag)
            {
                AddChildNodes(result, parseSentence, parse.GetChildren());
            }
            else
            {
                //внутри есть только слова
                Word word = ConvertToWord(result, parse);
                parseSentence.AddWord(word);
            }
            return(result);
        }
Example #2
0
        private void AddChildNodes(Sentence sentence, PartSentence partSentence, IEnumerable <Parse> childParses)
        {
            foreach (Parse childParse in childParses)
            {
                if (childParse.Type == MaximumEntropyParser.TokenNode)
                {
                    continue;
                }

                if (childParse.IsPosTag)
                {
                    //внутри есть только слова
                    Word word = ConvertToWord(sentence, childParse);
                    partSentence.AddWord(word);
                    continue;
                }

                //есть вложенные части предложений - обработать их
                PartSentence childPartSentence = ConvertParseToSentence(childParse);
                childPartSentence.Parent = partSentence;
                partSentence.AddChildren(childPartSentence);
                AddChildNodes(sentence, childPartSentence, childParse.GetChildren());
            }
        }