private RecognizerResult CreateChooseIntentResult(string text, Dictionary <string, RecognizerResult> recognizerResults)
        {
            // create IntentScore with { "recognizerId" : { ...RecognizerResult.. } }
            var chooseIntentResult = new IntentScore()
            {
                Score = 0.5F
            };

            var intents = new JObject();

            foreach (var recognizerResult in recognizerResults.Values)
            {
                var(topIntent, score) = recognizerResult.GetTopScoringIntent();
                chooseIntentResult.Properties[topIntent] = recognizerResult;
            }

            return(new RecognizerResult()
            {
                Text = text,
                Intents = new Dictionary <string, IntentScore>()
                {
                    { ChooseIntent, (IntentScore)chooseIntentResult }
                }
            });
        }
Ejemplo n.º 2
0
        private Task <RecognizerResult> RecognizeInternalAsync(ITurnContext turnContext, CancellationToken cancellationToken)
        {
            var text = turnContext.Activity.Text;

            if (string.IsNullOrWhiteSpace(text))
            {
                return(null);
            }
            else
            {
                foreach (var regexMap in _map)
                {
                    var match = regexMap.Key.Match(text);

                    if (match.Success)
                    {
                        var score = new IntentScore()
                        {
                            Score = 1.0
                        };
                        var intents = new Dictionary <string, IntentScore> {
                            { regexMap.Value, score }
                        };

                        return(Task.FromResult(new RecognizerResult()
                        {
                            Text = text,
                            Intents = intents,
                        }));
                    }
                }

                return(null);
            }
        }
Ejemplo n.º 3
0
        private (Intent intent, double score) UpdateCalendarLuisResultMock()
        {
            if (userInput == "update meeting")
            {
                IntentScore intentScore = new IntentScore();
                intentScore.Score = 0.9;
                this.Intents.Add(Calendar.Intent.ChangeCalendarEntry, intentScore);
                return(Calendar.Intent.ChangeCalendarEntry, 0.90);
            }

            return(Calendar.Intent.None, 0.0);
        }
Ejemplo n.º 4
0
        private (Intent intent, double score) NextCalendarLuisResultMock()
        {
            if (userInput == "what is my next meeting")
            {
                IntentScore intentScore = new IntentScore();
                intentScore.Score = 0.9;
                this.Intents.Add(Calendar.Intent.NextMeeting, intentScore);
                return(Calendar.Intent.NextMeeting, 0.90);
            }

            return(Calendar.Intent.None, 0.0);
        }
Ejemplo n.º 5
0
 public virtual Task <RecognizerResult> LuisIntentChange(DialogContext outerDc, RecognizerResult result, object options = null, CancellationToken cancellationToken = default)
 {
     //Kvoli volaniu NONE intentu kedže NONE intent nie je dialog
     if (result.GetTopScoringIntent().intent.ToLower() == "none")
     {
         result.Intents.Clear();
         IntentScore score = new IntentScore
         {
             Score = 1
         };
         result.Intents.Add(nameof(RootDialog), score);
     }
     return(Task.FromResult(result));
 }
Ejemplo n.º 6
0
        private (Intent intent, double score) SummaryCalendarTestLuisResultMock()
        {
            if (userInput == "What should I do today")
            {
                IntentScore intentScore = new IntentScore();
                intentScore.Score = 0.9;
                this.Intents.Add(Calendar.Intent.Summary, intentScore);
                return(Calendar.Intent.Summary, 0.90);
            }
            else if (userInput == "No")
            {
                return(Calendar.Intent.None, 0.90);
            }

            return(Calendar.Intent.None, 0.0);
        }
Ejemplo n.º 7
0
        private (Intent intent, double score) CreateCalendarLuisResultMock()
        {
            if (userInput == "Create a meeting")
            {
                IntentScore intentScore = new IntentScore();
                intentScore.Score = 0.9;
                this.Intents.Add(Calendar.Intent.CreateCalendarEntry, intentScore);
                return(Calendar.Intent.CreateCalendarEntry, 0.90);
            }
            else if (userInput == "Yes")
            {
                return(Calendar.Intent.None, 0.90);
            }

            return(Calendar.Intent.None, 0.0);
        }
        private Task <RecognizerResult> RecognizeInternalAsync(ITurnContext turnContext, CancellationToken cancellationToken)
        {
            string text = GetPlainText(turnContext);

            var emptyResult = Task.FromResult(new RecognizerResult()
            {
                Text    = string.Empty,
                Intents = new Dictionary <string, IntentScore> {
                    { "None", new IntentScore()
                      {
                          Score = 1.0,
                      } },
                },
            });

            if (string.IsNullOrWhiteSpace(text))
            {
                return(emptyResult);
            }
            else
            {
                foreach (var intent in IntentStrings.All)
                {
                    var regex = new Regex($@"^{intent}$", RegexOptions.IgnoreCase);
                    var match = regex.Match(text);

                    if (match.Success)
                    {
                        var score = new IntentScore()
                        {
                            Score = 1.0
                        };
                        var intents = new Dictionary <string, IntentScore> {
                            { intent, score }
                        };

                        return(Task.FromResult(new RecognizerResult()
                        {
                            Text = text,
                            Intents = intents,
                        }));
                    }
                }

                return(emptyResult);
            }
        }
        protected async Task <RecognizerResult> OnRecognize(SequenceContext sequenceContext, CancellationToken cancellationToken = default)
        {
            var context = sequenceContext.Context;

            if (Recognizer != null)
            {
                var result = await Recognizer.RecognizeAsync(sequenceContext, cancellationToken).ConfigureAwait(false);

                if (result.Intents.Any())
                {
                    // just deal with topIntent
                    IntentScore topScore  = null;
                    var         topIntent = string.Empty;
                    foreach (var intent in result.Intents)
                    {
                        if (topScore == null || topScore.Score < intent.Value.Score)
                        {
                            topIntent = intent.Key;
                            topScore  = intent.Value;
                        }
                    }

                    result.Intents.Clear();
                    result.Intents.Add(topIntent, topScore);
                }
                else
                {
                    result.Intents.Add("None", new IntentScore {
                        Score = 0.0
                    });
                }

                return(result);
            }

            // none intent if there is no recognizer
            return(new RecognizerResult
            {
                Text = context.Activity.Text ?? string.Empty,
                Intents = new Dictionary <string, IntentScore> {
                    { "None", new IntentScore {
                          Score = 0.0
                      } }
                },
            });
        }