public Scanner Create() { LexSettings settings = new LexSettings(); Scanner reader = new Scanner("abcd1234' a \\b k", '\\', settings.QuotesChars, settings.WhiteSpaceChars); return(reader); }
public ITokenReader Create() { LexSettings settings = new LexSettings(); ITokenReader reader = new TokenReader("abcd1234' a \\b k", "\\", settings.QuotesChars, settings.WhiteSpaceChars, settings.EolChars); return(reader); }
public static async Task ReplacesCorrectTokensInSampleUtterances( string text, string entityMatch, string entityTypeName, int matchIndex, string sampleUtterance) { var intent = Guid.NewGuid().ToString(); var mockClient = new MockLexClient(); var slot = CreateSlot(entityTypeName, entityTypeName); var lexSettings = new LexSettings(new JArray { slot }); using (var lex = new LexNLUService(string.Empty, string.Empty, lexSettings, mockClient)) { var entity = new Entity(entityTypeName, string.Empty, entityMatch, matchIndex); var utterance = new LabeledUtterance(text, intent, new[] { entity }); await lex.TrainAsync(new[] { utterance }).ConfigureAwait(false); var startImportRequest = mockClient.Requests.OfType <StartImportRequest>().FirstOrDefault(); var payloadJson = GetPayloadJson(startImportRequest.Payload); var payload = JObject.Parse(payloadJson); // assert template utterance is set payload.SelectToken(".resource.intents[0].sampleUtterances").Count().Should().Be(1); payload.SelectToken(".resource.intents[0].sampleUtterances[0]").Value <string>().Should().Be(sampleUtterance); } }
public static async Task CreatesBot() { var text = "hello world"; var intent = Guid.NewGuid().ToString(); var entityTypeName = "Planet"; var botName = Guid.NewGuid().ToString(); var payload = default(JObject); var mockClient = CreateLexTrainClientMock(); mockClient.Setup(lex => lex.StartImportAsync( It.IsAny <StartImportRequest>(), It.IsAny <CancellationToken>())) .Callback <StartImportRequest, CancellationToken>((request, cancellationToken) => payload = GetPayloadJson(request.Payload)); var slot = CreateSlot(entityTypeName, entityTypeName); var lexSettings = new LexSettings(new JArray { slot }); using (var lex = new LexNLUTrainClient(botName, string.Empty, lexSettings, mockClient.Object)) { var entity = new Entity(entityTypeName, "Earth", "world", 0); var utterance = new LabeledUtterance(text, intent, new[] { entity }); await lex.TrainAsync(new[] { utterance }).ConfigureAwait(false); // assert payload payload.Should().NotBeNull(); // assert name is set payload.SelectToken(".resource.name").Value <string>().Should().Be(botName); // assert intent is created payload.SelectToken(".resource.intents").Count().Should().Be(1); payload.SelectToken(".resource.intents[0].name").Value <string>().Should().Be(intent); // assert template utterance is set payload.SelectToken(".resource.intents[0].sampleUtterances").Count().Should().Be(1); payload.SelectToken(".resource.intents[0].sampleUtterances[0]").Value <string>().Should().Be("hello {Planet}"); // assert slot is created in intent payload.SelectToken(".resource.intents[0].slots").Count().Should().Be(1); payload.SelectToken(".resource.intents[0].slots[0].name").Value <string>().Should().Be(entityTypeName); payload.SelectToken(".resource.intents[0].slots[0].slotType").Value <string>().Should().Be(entityTypeName); } }
public static async Task CreatesBot() { var text = "hello world"; var intent = Guid.NewGuid().ToString(); var entityTypeName = "Planet"; var botName = Guid.NewGuid().ToString(); var mockClient = new MockLexClient(); var slot = CreateSlot(entityTypeName, entityTypeName); var lexSettings = new LexSettings(new JArray { slot }); using (var lex = new LexNLUService(botName, string.Empty, lexSettings, mockClient)) { var entity = new Entity(entityTypeName, "Earth", "world", 0); var utterance = new LabeledUtterance(text, intent, new[] { entity }); await lex.TrainAsync(new[] { utterance }).ConfigureAwait(false); // get StartImport request var startImportRequest = mockClient.Requests.OfType <StartImportRequest>().FirstOrDefault(); startImportRequest.Should().NotBeNull(); // get payload var payloadJson = GetPayloadJson(startImportRequest.Payload); payloadJson.Should().NotBeNull().And.NotBeEmpty(); var payload = JObject.Parse(payloadJson); // assert name is set payload.SelectToken(".resource.name").Value <string>().Should().Be(botName); // assert intent is created payload.SelectToken(".resource.intents").Count().Should().Be(1); payload.SelectToken(".resource.intents[0].name").Value <string>().Should().Be(intent); // assert template utterance is set payload.SelectToken(".resource.intents[0].sampleUtterances").Count().Should().Be(1); payload.SelectToken(".resource.intents[0].sampleUtterances[0]").Value <string>().Should().Be("hello {Planet}"); // assert slot is created in intent payload.SelectToken(".resource.intents[0].slots").Count().Should().Be(1); payload.SelectToken(".resource.intents[0].slots[0].name").Value <string>().Should().Be(entityTypeName); payload.SelectToken(".resource.intents[0].slots[0].slotType").Value <string>().Should().Be(entityTypeName); } }
public static async Task ReplacesCorrectTokensInSampleUtterances( string text, string entityMatch, string entityTypeName, int matchIndex, string sampleUtterance) { var intent = Guid.NewGuid().ToString(); var payload = default(JObject); var mockClient = CreateLexTrainClientMock(); mockClient.Setup(lex => lex.StartImportAsync( It.IsAny <StartImportRequest>(), It.IsAny <CancellationToken>())) .Callback <StartImportRequest, CancellationToken>((request, cancellationToken) => payload = GetPayloadJson(request.Payload)); var slot = CreateSlot(entityTypeName, entityTypeName); var lexSettings = new LexSettings(new JArray { slot }); using (var lex = new LexNLUTrainClient(string.Empty, string.Empty, lexSettings, mockClient.Object)) { var entity = new Entity(entityTypeName, null, entityMatch, matchIndex); var utterance = new LabeledUtterance(text, intent, new[] { entity }); await lex.TrainAsync(new[] { utterance }).ConfigureAwait(false); // assert template utterance is set payload.Should().NotBeNull(); payload.SelectToken(".resource.intents[0].sampleUtterances").Count().Should().Be(1); payload.SelectToken(".resource.intents[0].sampleUtterances[0]").Value <string>().Should().Be(sampleUtterance); } }
public static async Task DoesNotOverwriteIntent() { var canary = Guid.NewGuid().ToString(); var intentName = Guid.NewGuid().ToString(); var entityTypeName = Guid.NewGuid().ToString(); var existingUtterance = Guid.NewGuid().ToString(); var existingSlot = new JObject { { "name", entityTypeName }, { "slotType", canary }, }; var existingIntent = new JObject { { "name", intentName }, { "canary", canary }, { "sampleUtterances", new JArray { existingUtterance } }, { "slots", new JArray { existingSlot } }, }; var importBotTemplate = new JObject { { "resource", new JObject { { "intents", new JArray { existingIntent } }, } } }; var payload = default(JObject); var mockClient = CreateLexTrainClientMock(); mockClient.Setup(lex => lex.StartImportAsync( It.IsAny <StartImportRequest>(), It.IsAny <CancellationToken>())) .Callback <StartImportRequest, CancellationToken>( (request, cancellationToken) => payload = GetPayloadJson(request.Payload)); var slot = CreateSlot(entityTypeName, Guid.NewGuid().ToString()); var lexSettings = new LexSettings(new JArray { slot }, importBotTemplate); using (var lex = new LexNLUTrainClient(string.Empty, string.Empty, lexSettings, mockClient.Object)) { var text = Guid.NewGuid().ToString(); var entity = new Entity(entityTypeName, null, text, 0); var utterance = new LabeledUtterance(text, intentName, new[] { entity }); await lex.TrainAsync(new[] { utterance }).ConfigureAwait(false); // get StartImport request var startImportRequest = mockClient.Invocations.Select(i => i.Arguments[0]).OfType <StartImportRequest>().FirstOrDefault(); startImportRequest.Should().NotBeNull(); // assert payload payload.Should().NotBeNull(); // get intent var intents = payload.SelectTokens($".resource.intents[?(@.name == '{intentName}')]"); intents.Count().Should().Be(1); intents.First().Value <string>("canary").Should().Be(canary); intents.First().SelectToken(".sampleUtterances").Count().Should().Be(2); intents.First().SelectToken(".sampleUtterances").Should().Contain(u => u.Value <string>() == existingUtterance); intents.First().SelectToken(".sampleUtterances").Should().Contain(u => u.Value <string>() == $"{{{entityTypeName}}}"); intents.First().SelectToken(".slots").Count().Should().Be(1); intents.First().SelectToken(".slots").First().Value <string>("slotType").Should().Be(canary); intents.First().SelectToken(".slots").First().Value <string>("slotConstraint").Should().Be("Optional"); } }
public static async Task DoesNotOverwriteIntent() { var canary = Guid.NewGuid().ToString(); var intentName = Guid.NewGuid().ToString(); var entityTypeName = Guid.NewGuid().ToString(); var existingUtterance = Guid.NewGuid().ToString(); var existingSlot = new JObject { { "name", entityTypeName }, { "slotType", canary }, }; var existingIntent = new JObject { { "name", intentName }, { "canary", canary }, { "sampleUtterances", new JArray { existingUtterance } }, { "slots", new JArray { existingSlot } }, }; var importBotTemplate = new JObject { { "resource", new JObject { { "intents", new JArray { existingIntent } }, } } }; var mockClient = new MockLexClient(); var slot = CreateSlot(entityTypeName, Guid.NewGuid().ToString()); var lexSettings = new LexSettings(new JArray { slot }, importBotTemplate); using (var lex = new LexNLUService(string.Empty, string.Empty, lexSettings, mockClient)) { var text = Guid.NewGuid().ToString(); var entity = new Entity(entityTypeName, null, text, 0); var utterance = new LabeledUtterance(text, intentName, new[] { entity }); await lex.TrainAsync(new[] { utterance }).ConfigureAwait(false); // get StartImport request var startImportRequest = mockClient.Requests.OfType <StartImportRequest>().FirstOrDefault(); startImportRequest.Should().NotBeNull(); // get payload var payloadJson = GetPayloadJson(startImportRequest.Payload); payloadJson.Should().NotBeNull().And.NotBeEmpty(); var payload = JObject.Parse(payloadJson); // get intent var intents = payload.SelectTokens($".resource.intents[?(@.name == '{intentName}')]"); intents.Count().Should().Be(1); intents.First().Value <string>("canary").Should().Be(canary); intents.First().SelectToken(".sampleUtterances").Count().Should().Be(2); intents.First().SelectToken(".sampleUtterances").Should().Contain(u => u.Value <string>() == existingUtterance); intents.First().SelectToken(".sampleUtterances").Should().Contain(u => u.Value <string>() == $"{{{entityTypeName}}}"); intents.First().SelectToken(".slots").Count().Should().Be(1); intents.First().SelectToken(".slots").First().Value <string>("slotType").Should().Be(canary); intents.First().SelectToken(".slots").First().Value <string>("slotConstraint").Should().Be("Optional"); } }