public IntentExpression ToIntentExpression(IntentExpression expression = null) { if (expression == null) { expression = new IntentExpression { Id = Guid.NewGuid().ToString(), Data = Data.Select(x => x.ToIntentExpressionPart()).ToList() }; } return(expression); }
private void ImportIntentUserSays(Intent intent, List <SebisIntent> sentences) { intent.UserSays = new List <IntentExpression>(); var userSays = sentences.Where(x => x.Name == intent.Name).ToList(); userSays.ForEach(say => { var expression = new IntentExpression(); say.Entities = say.Entities.OrderBy(x => x.Start).ToList(); int pos = 0; say.Entities.ForEach(x => { ConvertWordPosToCharPos(say.Text, x, pos); pos = x.End + 1; }); expression.Data = new List <IntentExpressionPart>(); pos = 0; for (int entityIdx = 0; entityIdx < say.Entities.Count; entityIdx++) { var entity = say.Entities[entityIdx]; // previous if (entity.Start > 0) { expression.Data.Add(new IntentExpressionPart { Text = say.Text.Substring(pos, entity.Start - pos), Start = pos }); } // self expression.Data.Add(new IntentExpressionPart { Alias = entity.Entity, Meta = entity.Entity, Text = say.Text.Substring(entity.Start, entity.Value.Length), Start = entity.Start }); pos = entity.End + 1; if (pos < say.Text.Length && entityIdx == say.Entities.Count - 1) { // end expression.Data.Add(new IntentExpressionPart { Text = say.Text.Substring(pos), Start = pos }); } } int second = 0; expression.Data.ForEach(x => x.UpdatedTime = DateTime.UtcNow.AddSeconds(second++)); intent.UserSays.Add(expression); }); }