Пример #1
0
        public virtual async Task <AiSentence> Create(AotModel model)//TO:DO Тут должен быть массив
        {
            try
            {
                AiSentence aiSentence = new AiSentence();
                string     result     = string.Empty;
                int        i          = 0;
                foreach (var word in model.Words)
                {
                    result += word.Str + " ";
                    var aiWord = new CrmDbModel.Model.Ai.AiWord();
                    aiWord.AiSentence    = aiSentence;
                    aiWord.Text          = word.Str;
                    aiWord.NormalizeText = word.Homonyms[0];
                    aiWord.Grm           = string.Join("", model.Variants[0].Units[i].Grm);
                    aiWord.HomNo         = model.Variants[0].Units[i].HomNo.ToString();
                    word.AiWord          = aiWord;
                    _wordDbContext.Add(aiWord);
                    i++;
                }
                aiSentence.Text = result;
                _wordDbContext.Add(aiSentence);
                await _aiGroup.ParseGroups(_wordDbContext, model.Variants[0], model.Words.ToList(), aiSentence);

                return(aiSentence);
            }
            catch (Exception ex)
            {
                throw new Exception("Не удалось создать предложение по словам полсе синтаксического разбора, ошибка -" + ex.Message);
            }
        }
        public async Task <List <AiGroup> > ParseGroups(WordDbContext wordDbContext, Variant variant, List <Word> words, AiSentence aiSentence)
        {
            List <AiGroup> result  = new List <AiGroup>();
            var            gropups = variant.Groups.ToList();
            int            i       = 0;

            foreach (var item in gropups)
            {
                AiGroup aiGroup = new AiGroup();
                aiGroup.AiDescription = await FindOrAddAiDescription(wordDbContext, item.Descr);

                aiGroup.Last   = (int)item.Last;
                aiGroup.Start  = (int)item.Start;
                aiGroup.IsSubj = item.IsSubj;
                aiGroup.IsGoup = item.IsGroup;
                item.AiGroup   = aiGroup;
                SetParent(gropups, item, i == 0 ? -1 : i);
                result.Add(aiGroup);
                aiGroup.AiSentence = aiSentence;
                wordDbContext.Add(aiGroup);
                CreateAiWordsGroup(words, aiGroup, wordDbContext);
                i++;
            }
            //SetParentIdGroups(result);
            return(result);
        }