public void ShouldBeAbleToRecognizeTheDifferentEntities2() { var model = new RecognitionModel(); model.AddEntity("DRIVER_LICENSE", "driver license"); model.AddEntity("nato", "alpha"); model.AddEntity("nato", "bravo"); model.AddEntity("nato", "charlie"); model.AddEntity("digit", "1"); model.AddEntity("digit", "2"); model.AddEntity("digit", "3"); model.AddEntity("digit", "4"); model.AddEntity("digit", "5"); model.AddEntity("digit", "6"); model.AddEntity("digit", "7"); model.AddEntity("digit", "8"); model.AddEntity("digit", "9"); model.AddEntity("digit", "0"); model.AddEntity("state", "New York"); var result = model.Recognize("Check driver license New York 1 2 alpha bravo 5 6"); result.Entities.Should().Equal( RecognizedEntity.ByCanonicalForm(EntityName.Value("DRIVER_LICENSE"), EntityForm.Value("driver license")), RecognizedEntity.ByCanonicalForm(EntityName.Value("state"), EntityForm.Value("New York")), RecognizedEntity.ByCanonicalForm(EntityName.Value("digit"), EntityForm.Value("1")), RecognizedEntity.ByCanonicalForm(EntityName.Value("digit"), EntityForm.Value("2")), RecognizedEntity.ByCanonicalForm(EntityName.Value("nato"), EntityForm.Value("alpha")), RecognizedEntity.ByCanonicalForm(EntityName.Value("nato"), EntityForm.Value("bravo")), RecognizedEntity.ByCanonicalForm(EntityName.Value("digit"), EntityForm.Value("5")), RecognizedEntity.ByCanonicalForm(EntityName.Value("digit"), EntityForm.Value("6"))); }
public void ShouldBeAbleToMatchMultipleIntentPatterns2() { //GIVEN var model = new RecognitionModel(); var borrowEntity = "Borrow"; var returnEntity = "Return"; var bookEntity = "Book"; var filmEntity = "Film"; model.AddEntity(borrowEntity, "borrow"); model.AddEntity(returnEntity, "return", new [] { "returning" }); model.AddEntity(bookEntity, "book"); model.AddEntity(filmEntity, "film", new [] { "movie" }); model.AddIntent("BORROW_BOOK", new[] { borrowEntity, bookEntity }); model.AddIntent("RETURN_BOOK", new[] { returnEntity, bookEntity }); model.AddIntent("BORROW_FILM", new[] { borrowEntity, filmEntity }); model.AddIntent("RETURN_FILM", new[] { returnEntity, filmEntity }); //WHEN var recognitionResult1 = model.Recognize("I'd like to borrow a book"); var recognitionResult2 = model.Recognize("I want to return this book"); var recognitionResult3 = model.Recognize("Can I borrow a film?"); var recognitionResult4 = model.Recognize("Here, I'm returning the movie"); //THEN recognitionResult1.TopIntent.Should().Be("BORROW_BOOK"); recognitionResult1.Entities.Should().Equal(new [] { RecognizedEntity.ByCanonicalForm(EntityName.Value(borrowEntity), EntityForm.Value("borrow")), RecognizedEntity.ByCanonicalForm(EntityName.Value(bookEntity), EntityForm.Value("book")), }); recognitionResult2.TopIntent.Should().Be("RETURN_BOOK"); recognitionResult2.Entities.Should().Equal(new [] { RecognizedEntity.ByCanonicalForm(EntityName.Value(returnEntity), EntityForm.Value("return")), RecognizedEntity.ByCanonicalForm(EntityName.Value(bookEntity), EntityForm.Value("book")), }); recognitionResult3.TopIntent.Should().Be("BORROW_FILM"); recognitionResult3.Entities.Should().Equal(new [] { RecognizedEntity.ByCanonicalForm(EntityName.Value(borrowEntity), EntityForm.Value("borrow")), RecognizedEntity.ByCanonicalForm(EntityName.Value(filmEntity), EntityForm.Value("film")), }); recognitionResult4.TopIntent.Should().Be("RETURN_FILM"); recognitionResult4.Entities.Should().Equal( RecognizedEntity.Value( EntityName.Value(returnEntity), EntityForm.Value("returning"), EntityForm.Value("return")), RecognizedEntity.Value( EntityName.Value(filmEntity), EntityForm.Value("movie"), EntityForm.Value("film"))); }
public static void ShouldContainOnly(this RecognitionResult result, string entityName, string entityValue, string canonicalForm) { result.Entities.Should().Equal( new[] { RecognizedEntity.Value(EntityName.Value(entityName), EntityForm.Value(entityValue), EntityForm.Value(canonicalForm)) }); }
public void ShouldRecognizeMoreNarrowIntentIfItIsTheFirstOne() { //GIVEN var model = new RecognitionModel(); model.AddEntity("YES SIR", "yes sir"); model.AddEntity("YES", "yes"); //WHEN var recognitionResult = model.Recognize("Yes sir"); //THEN recognitionResult.Entities.First().Entity.Should().Be(EntityName.Value("YES SIR")); }
public void ShouldBeAbleToRecognizeTheSameEntityMultipleTimes() { var model = new RecognitionModel(); model.AddEntity("DRIVER_LICENSE", "driver license"); var result = model.Recognize("driver license driver license"); result.Entities.Should().Equal(new[] { RecognizedEntity.ByCanonicalForm(EntityName.Value("DRIVER_LICENSE"), EntityForm.Value("driver license")), RecognizedEntity.ByCanonicalForm(EntityName.Value("DRIVER_LICENSE"), EntityForm.Value("driver license")), }); }
public void ShouldSeparateDigitsWhenDetectingEntities() { var model = new RecognitionModel(); model.AddEntity("digit", "1"); model.AddEntity("digit", "2"); model.AddEntity("digit", "3"); var result = model.Recognize("123"); result.Entities.Should().BeEquivalentTo( RecognizedEntity.ByCanonicalForm(EntityName.Value("digit"), EntityForm.Value("1")), RecognizedEntity.ByCanonicalForm(EntityName.Value("digit"), EntityForm.Value("2")), RecognizedEntity.ByCanonicalForm(EntityName.Value("digit"), EntityForm.Value("3"))); }