From 166b4bec01a308ffd7727c47211cd5b3c082154a Mon Sep 17 00:00:00 2001 From: rabidgremlin Date: Mon, 26 Jun 2017 14:50:56 +1200 Subject: [PATCH] Fix for empty tokens --- README.md | 16 +++++----- gradle.properties | 2 +- .../templated/TemplatedIntentMatcher.java | 6 ++++ .../mutters/TestIntentMatcher.java | 32 +++++++++++++++++++ 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 87c89194..41aa21c6 100644 --- a/README.md +++ b/README.md @@ -223,10 +223,10 @@ repositories { } dependencies { - compile 'com.rabidgremlin:mutters-ink-bot:4.0.0' - compile 'com.rabidgremlin:mutters-opennlp-intent:4.0.0' - compile 'com.rabidgremlin:mutters-opennlp-ner:4.0.0' - compile 'com.rabidgremlin:mutters-slots:4.0.0' + compile 'com.rabidgremlin:mutters-ink-bot:4.0.1' + compile 'com.rabidgremlin:mutters-opennlp-intent:4.0.1' + compile 'com.rabidgremlin:mutters-opennlp-ner:4.0.1' + compile 'com.rabidgremlin:mutters-slots:4.0.1' } ``` @@ -244,10 +244,10 @@ repositories { } dependencies { - compile 'com.rabidgremlin:mutters-ink-bot:4.0.0-SNAPSHOT' - compile 'com.rabidgremlin:mutters-opennlp-intent:4.0.0-SNAPSHOT' - compile 'com.rabidgremlin:mutters-opennlp-ner:4.0.0-SNAPSHOT' - compile 'com.rabidgremlin:mutters-slots:4.0.0-SNAPSHOT' + compile 'com.rabidgremlin:mutters-ink-bot:4.0.1-SNAPSHOT' + compile 'com.rabidgremlin:mutters-opennlp-intent:4.0.1-SNAPSHOT' + compile 'com.rabidgremlin:mutters-opennlp-ner:4.0.1-SNAPSHOT' + compile 'com.rabidgremlin:mutters-slots:4.0.1-SNAPSHOT' } ``` diff --git a/gradle.properties b/gradle.properties index 31043831..014bb7e3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=4.0.0-SNAPSHOT +version=4.0.1 # These are place holder values. Real values should be set in user's home gradle.properties # and are only needed when signing and uploading to central maven repo diff --git a/mutters-templated-intent/src/main/java/com/rabidgremlin/mutters/templated/TemplatedIntentMatcher.java b/mutters-templated-intent/src/main/java/com/rabidgremlin/mutters/templated/TemplatedIntentMatcher.java index bc76cb08..b68023be 100644 --- a/mutters-templated-intent/src/main/java/com/rabidgremlin/mutters/templated/TemplatedIntentMatcher.java +++ b/mutters-templated-intent/src/main/java/com/rabidgremlin/mutters/templated/TemplatedIntentMatcher.java @@ -74,6 +74,12 @@ public IntentMatch match(String utterance, Context context, Set expected String[] cleanedUtterance = tokenizer.tokenize(utterance); + // do we have some tokens after cleaning ? + if (cleanedUtterance.length == 0) + { + return null; + } + for (TemplatedIntent intent : intents) { TemplatedUtteranceMatch utteranceMatch = intent.matches(cleanedUtterance, context); diff --git a/mutters-templated-intent/src/test/java/com/rabidgremlin/mutters/TestIntentMatcher.java b/mutters-templated-intent/src/test/java/com/rabidgremlin/mutters/TestIntentMatcher.java index 1201c72f..5bd5479b 100644 --- a/mutters-templated-intent/src/test/java/com/rabidgremlin/mutters/TestIntentMatcher.java +++ b/mutters-templated-intent/src/test/java/com/rabidgremlin/mutters/TestIntentMatcher.java @@ -11,6 +11,7 @@ import com.rabidgremlin.mutters.core.IntentMatch; import com.rabidgremlin.mutters.core.SlotMatch; import com.rabidgremlin.mutters.slots.CustomSlot; +import com.rabidgremlin.mutters.slots.LiteralSlot; import com.rabidgremlin.mutters.slots.NumberSlot; import com.rabidgremlin.mutters.templated.SimpleTokenizer; import com.rabidgremlin.mutters.templated.TemplatedIntent; @@ -86,4 +87,35 @@ public void testBrokenAirportMatch() assertThat(intentMatch, is(nullValue())); } + + @Test + public void testHandlingOfEmptyOrTokenizedOutInputs() + { + TemplatedIntentMatcher matcher = new TemplatedIntentMatcher(tokenizer); + TemplatedIntent intent = matcher.addIntent("AcceptAnything"); + + intent.addUtterance("{AnyThing}"); + + LiteralSlot slot = new LiteralSlot("AnyThing"); + intent.addSlot(slot); + + IntentMatch intentMatch = matcher.match("Bob", new Context(), null, null); + assertThat(intentMatch, is(notNullValue())); + + intentMatch = matcher.match("", new Context(), null, null); + assertThat(intentMatch, is(nullValue())); + + intentMatch = matcher.match(" ", new Context(), null, null); + assertThat(intentMatch, is(nullValue())); + + intentMatch = matcher.match("?", new Context(), null, null); + assertThat(intentMatch, is(nullValue())); + + intentMatch = matcher.match("...", new Context(), null, null); + assertThat(intentMatch, is(nullValue())); + + intentMatch = matcher.match(" ?", new Context(), null, null); + assertThat(intentMatch, is(nullValue())); + } + }