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