Exemple #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);
        }
        private void CreateAiWordsGroup(List <Word> words, AiGroup aiGroup, WordDbContext wordDbContext)
        {
            var cols = words.Skip(aiGroup.Start).Take(aiGroup.Last + 1);

            foreach (var word in cols)
            {
                var aiGroupWord = new AiGroupWord();
                aiGroupWord.AiWord  = word.AiWord;
                aiGroupWord.AiGroup = aiGroup;
                wordDbContext.Add(aiGroupWord);
            }
        }
Exemple #4
0
        public async Task <ResultCrmDb> AddUser(CrmDbModel.Model.LoadDocument.User user)
        {
            var result = new ResultCrmDb();

            try
            {
                if (string.IsNullOrWhiteSpace(user.Account))
                {
                    return(result);
                }


                _wordDbContext.Add(user);
                await _wordDbContext.SaveChangesAsync();
            }
            catch (Exception e)
            {
                result.AddError("-", e.Message);
            }

            return(result);
        }
        public bool CreateTraningInDB(string jsonSource)
        {
            int index = 0;

            try
            {
                IVocalabry               iVocalabry         = new Vocalabry(_wordDbContext);
                IEngineParser            engineParser       = new EngineParser(iVocalabry.GetNonPersistentVocalabry());
                List <ClassificatorItem> oMycustomclassname = Newtonsoft.Json.JsonConvert.DeserializeObject <List <ClassificatorItem> >(jsonSource);
                foreach (var item in oMycustomclassname)
                {
                    index++;
                    if (index < 204)
                    {
                        continue;
                    }
                    h_message newMessage = new h_message();
                    newMessage.TextType     = item.type_name;
                    newMessage.TextCategory = item.cat_name;
                    newMessage.TextKind     = item.kind_name;
                    var    array     = engineParser.GetOuptputVectors(item.type_name);
                    string tmpVector = string.Empty;
                    foreach (var vector in GetTrainSet(array))
                    {
                        tmpVector += (vector.ToString()).Replace(',', '.') + ",";
                    }

                    tmpVector         = tmpVector.Remove(tmpVector.Length - 1);
                    newMessage.Vector = tmpVector;
                    _wordDbContext.Add(newMessage);
                    _wordDbContext.SaveChanges();
                }
                _wordDbContext.SaveChanges();
                Console.WriteLine(oMycustomclassname.Count);

                return(true);
            }
            catch (Exception ex)
            {
                try
                {
                    _wordDbContext.SaveChanges();
                    return(false);
                }
                catch
                {
                    return(false);
                }
            }
        }
        protected async Task <AiDescription> FindOrAddAiDescription(WordDbContext wordDbContext, string name)
        {
            AiDescription description = await wordDbContext.AiDescription.FirstOrDefaultAsync(f => f.Name == name);

            if (description == null)
            {
                description = new AiDescription()
                {
                    Name = name
                };
                wordDbContext.AiDescription.Add(description);
                wordDbContext.Add(description);
            }
            return(description);
        }