Beispiel #1
0
        public async Task <TrainingCorpus> ExtractorCorpus(TAgent agent)
        {
            var corpus = new TrainingCorpus()
            {
                Entities = new List <TrainingEntity>(),
                UserSays = new List <TrainingIntentExpression <TrainingIntentExpressionPart> >()
            };

            List <string> entities = new List <string>();

            // generate entity list
            agent.Intents.ForEach(intent =>
            {
                intent.Entities.ForEach(entity =>
                {
                    if (!entities.Contains(entity.Entity))
                    {
                        corpus.Entities.Add(new TrainingEntity
                        {
                            Entity = entity.Entity,
                            Values = new List <TrainingEntitySynonym>
                            {
                                new TrainingEntitySynonym
                                {
                                    Value    = entity.Value,
                                    Synonyms = new List <string>
                                    {
                                        entity.Value
                                    }
                                }
                            }
                        });
                        entities.Add(entity.Entity);
                    }
                });
            });

            agent.Intents.ForEach(intent =>
            {
                var express = new TrainingIntentExpression <TrainingIntentExpressionPart>()
                {
                    Text     = intent.Text,
                    Intent   = intent.Intent,
                    Entities = intent.Entities
                };

                corpus.UserSays.Add(express);
            });

            return(corpus);
        }
Beispiel #2
0
        public async Task <TrainingCorpus> ExtractorCorpus(TAgent agent)
        {
            var corpus = new TrainingCorpus();

            corpus.Entities = agent.Entities.Select(x => new TrainingEntity
            {
                Entity = x.EntityName,
                Values = x.Examples.Select(y => new TrainingEntitySynonym
                {
                    Value    = y.Value,
                    Synonyms = y.Synonyms
                }).ToList()
            }).ToList();

            corpus.UserSays = new List <TrainingIntentExpression <TrainingIntentExpressionPart> >();

            foreach (DomainModel domain in agent.Domains)
            {
                foreach (IntentModel intent in domain.Intents)
                {
                    foreach (IntentExampleModel example in intent.Examples)
                    {
                        var say = new TrainingIntentExpression <TrainingIntentExpressionPart>()
                        {
                            Intent   = intent.IntentName,
                            Text     = example.UserSays,
                            Entities = example.Entities.Select(x => new TrainingIntentExpressionPart
                            {
                                Entity = x.Entity,
                                Start  = x.Start,
                                Value  = x.Value
                            }).ToList()
                        };

                        corpus.UserSays.Add(say);
                    }
                }
            }

            return(corpus);
        }