Exemple #1
0
        public async Task TestEntityRecognize()
        {
            var mockResult = new Result
            {
                Score = 0.9,
                Label = new Label {
                    Name = "mockLabel"
                }
            };

            var mockScore = new List <Result> {
                mockResult
            };
            var mockResolver = new MockResolver(mockScore);
            var recognizer   = new OrchestratorAdaptiveRecognizer(string.Empty, string.Empty, mockResolver)
            {
                ModelPath                = new StringExpression("fakePath"),
                SnapshotPath             = new StringExpression("fakePath"),
                ExternalEntityRecognizer = new NumberEntityRecognizer()
            };

            var adapter  = new TestAdapter(TestAdapter.CreateConversation("ds"));
            var activity = MessageFactory.Text("12");
            var context  = new TurnContext(adapter, activity);

            var dc     = new DialogContext(new DialogSet(), context, new DialogState());
            var result = await recognizer.RecognizeAsync(dc, activity, default);

            Assert.NotNull(result.Entities);
            Assert.Equal(new JValue("12"), result.Entities["number"][0]);
            var resolution = result.Entities["$instance"]["number"][0]["resolution"];

            Assert.Equal(new JValue("integer"), resolution["subtype"]);
            Assert.Equal(new JValue("12"), resolution["value"]);
        }
Exemple #2
0
        public async Task TestIntentRecognize()
        {
            var mockResult = new Result
            {
                Score = 0.9,
                Label = new Label
                {
                    Name = "mockLabel"
                }
            };

            var mockScore = new List <Result>()
            {
                mockResult
            };
            var mockResolver = new MockResolver(mockScore);
            var recognizer   = new OrchestratorAdaptiveRecognizer(string.Empty, string.Empty, mockResolver)
            {
                ModelPath    = new StringExpression("fakePath"),
                SnapshotPath = new StringExpression("fakePath")
            };

            TestAdapter adapter  = new TestAdapter(TestAdapter.CreateConversation("ds"));
            var         activity = MessageFactory.Text("hi");
            var         context  = new TurnContext(adapter, activity);

            var dc     = new DialogContext(new DialogSet(), context, new DialogState());
            var result = await recognizer.RecognizeAsync(dc, activity, default);

            Assert.AreEqual(1, result.Intents.Count);
            Assert.IsTrue(result.Intents.ContainsKey("mockLabel"));
            Assert.AreEqual(0.9, result.Intents["mockLabel"].Score);
        }
        public async Task TestIntentRecognizeLogsTelemetry(bool?logPersonalInformation)
        {
            var mockResult = new Result
            {
                Score = 0.9,
                Label = new Label {
                    Name = "mockLabel"
                }
            };

            var mockScore = new List <Result> {
                mockResult
            };
            var mockResolver    = new MockResolver(mockScore);
            var telemetryClient = new Mock <IBotTelemetryClient>();
            var recognizer      = new OrchestratorAdaptiveRecognizer(string.Empty, string.Empty, mockResolver)
            {
                ModelFolder     = new StringExpression("fakePath"),
                SnapshotFile    = new StringExpression("fakePath"),
                TelemetryClient = telemetryClient.Object,
            };

            if (logPersonalInformation != null)
            {
                recognizer.LogPersonalInformation = logPersonalInformation;
            }

            var adapter  = new TestAdapter(TestAdapter.CreateConversation("ds"));
            var activity = MessageFactory.Text("hi");
            var context  = new TurnContext(adapter, activity);

            var dc     = new DialogContext(new DialogSet(), context, new DialogState());
            var result = await recognizer.RecognizeAsync(dc, activity, default);

            if (logPersonalInformation == null)
            {
                // Should be false by default, when not specified by user.
                var(logPersonalInfo, _) = recognizer.LogPersonalInformation.TryGetValue(dc.State);
                Assert.False(logPersonalInfo);
            }

            Assert.Equal(1, result.Intents.Count);
            Assert.True(result.Intents.ContainsKey("mockLabel"));
            Assert.Equal(0.9, result.Intents["mockLabel"].Score);
            ValidateTelemetry(recognizer, telemetryClient, dc, activity, result, callCount: 1);
        }
Exemple #4
0
        public async Task TestAmbiguousResults()
        {
            var mockResult1 = new Result
            {
                Score = 0.61,
                Label = new Label
                {
                    Name = "mockLabel1"
                }
            };

            var mockResult2 = new Result
            {
                Score = 0.62,
                Label = new Label
                {
                    Name = "mockLabel2"
                }
            };

            var mockScore = new List <Result>()
            {
                mockResult1, mockResult2
            };
            var mockResolver = new MockResolver(mockScore);
            var recognizer   = new OrchestratorAdaptiveRecognizer(string.Empty, string.Empty, mockResolver)
            {
                ModelPath                    = new StringExpression("fakePath"),
                SnapshotPath                 = new StringExpression("fakePath"),
                DetectAmbiguousIntents       = new BoolExpression(true),
                DisambiguationScoreThreshold = new NumberExpression(0.5)
            };

            TestAdapter adapter  = new TestAdapter(TestAdapter.CreateConversation("ds"));
            var         activity = MessageFactory.Text("12");
            var         context  = new TurnContext(adapter, activity);

            var dc     = new DialogContext(new DialogSet(), context, new DialogState());
            var result = await recognizer.RecognizeAsync(dc, activity, default);

            Assert.IsTrue(result.Intents.ContainsKey("ChooseIntent"));
        }