Exemplo n.º 1
0
        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")));
        }
Exemplo n.º 3
0
 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))
     });
 }
Exemplo n.º 4
0
        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"));
        }
Exemplo n.º 5
0
        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")),
            });
        }
Exemplo n.º 6
0
        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")));
        }