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); } }
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); }