You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by ar...@apache.org on 2021/07/08 18:44:30 UTC

[incubator-nlpcraft] branch NLPCRAFT-359 updated (34f853a -> 3ab290d)

This is an automated email from the ASF dual-hosted git repository.

aradzinski pushed a change to branch NLPCRAFT-359
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git.


    from 34f853a  WIP on NLPCRAFT-359.
     new da2c5af  WIP on NLPCRAFT-359
     new 3ab290d  WIP on NLPCRAFT-359

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/nlpcraft/examples/alarm/AlarmModel.java | 10 ++++----
 .../alarm/src/main/resources/alarm_samples.txt     |  6 ++++-
 .../alarm/src/main/resources/intents.idl           |  6 ++---
 .../org/apache/nlpcraft/model/NCIntentSample.java  | 27 +++++++++++++---------
 4 files changed, 29 insertions(+), 20 deletions(-)

[incubator-nlpcraft] 01/02: WIP on NLPCRAFT-359

Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

aradzinski pushed a commit to branch NLPCRAFT-359
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit da2c5af8bb523a228345ee2ae6667c300171b89a
Author: Aaron Radzinski <ar...@datalingvo.com>
AuthorDate: Thu Jul 8 08:46:53 2021 -0700

    WIP on NLPCRAFT-359
---
 nlpcraft-examples/alarm/src/main/resources/alarm_samples.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/nlpcraft-examples/alarm/src/main/resources/alarm_samples.txt b/nlpcraft-examples/alarm/src/main/resources/alarm_samples.txt
index 043fb08..d17c1a8 100644
--- a/nlpcraft-examples/alarm/src/main/resources/alarm_samples.txt
+++ b/nlpcraft-examples/alarm/src/main/resources/alarm_samples.txt
@@ -18,4 +18,4 @@
 Ping me in 3 minutes
 Buzz me in an hour and 15mins
 Set my alarm for 30s
-Set my alarm clock at 8:00 am in the morning
\ No newline at end of file
+Wake me up in twenty five minutes
\ No newline at end of file

[incubator-nlpcraft] 02/02: WIP on NLPCRAFT-359

Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

aradzinski pushed a commit to branch NLPCRAFT-359
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git

commit 3ab290d948918f00978cf166b2722d3a649958a7
Author: Aaron Radzinski <ar...@datalingvo.com>
AuthorDate: Thu Jul 8 11:43:53 2021 -0700

    WIP on NLPCRAFT-359
---
 .../apache/nlpcraft/examples/alarm/AlarmModel.java | 10 ++++----
 .../alarm/src/main/resources/alarm_samples.txt     |  6 ++++-
 .../alarm/src/main/resources/intents.idl           |  6 ++---
 .../org/apache/nlpcraft/model/NCIntentSample.java  | 27 +++++++++++++---------
 4 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/nlpcraft-examples/alarm/src/main/java/org/apache/nlpcraft/examples/alarm/AlarmModel.java b/nlpcraft-examples/alarm/src/main/java/org/apache/nlpcraft/examples/alarm/AlarmModel.java
index ed4b11d..2ff018a 100644
--- a/nlpcraft-examples/alarm/src/main/java/org/apache/nlpcraft/examples/alarm/AlarmModel.java
+++ b/nlpcraft-examples/alarm/src/main/java/org/apache/nlpcraft/examples/alarm/AlarmModel.java
@@ -41,7 +41,7 @@ public class AlarmModel extends NCModelFileAdapter {
     private final Timer timer = new Timer();
     
     public AlarmModel() {
-        // Loading the model from the file in the classpath.
+        // Loading the model from the file.
         super("alarm_model.json");
     }
 
@@ -51,8 +51,8 @@ public class AlarmModel extends NCModelFileAdapter {
      * @param ctx Intent solver context.
      * @return Query result.
      */
-    @NCIntentRef("alarm")
-    @NCIntentSampleRef("alarm_samples.txt")
+    @NCIntentRef("alarm") // Intent is defined in JSON model file (alarm_model.json and intents.idl).
+    @NCIntentSampleRef("alarm_samples.txt") // Samples supplied in an external file.
     NCResult onMatch(
         NCIntentMatch ctx,
         @NCIntentTerm("nums") List<NCToken> numToks
@@ -72,7 +72,7 @@ public class AlarmModel extends NCModelFileAdapter {
         for (NCToken num : numToks) {
             String unit = num.meta("nlpcraft:num:unit");
     
-            // Skip possible fractional to simplify.
+            // Skip possible fractionals to simplify.
             long v = ((Double)num.meta("nlpcraft:num:from")).longValue();
             
             if (v <= 0)
@@ -88,7 +88,7 @@ public class AlarmModel extends NCModelFileAdapter {
                 case "year": { dt = dt.plusYears(v); break; }
         
                 default:
-                    // It shouldn't be assert, because 'datetime' unit can be extended.
+                    // It shouldn't be an assert, because 'datetime' unit can be extended.
                     throw new NCRejection("Unsupported time unit: " + unit);
             }
         }
diff --git a/nlpcraft-examples/alarm/src/main/resources/alarm_samples.txt b/nlpcraft-examples/alarm/src/main/resources/alarm_samples.txt
index d17c1a8..599387c 100644
--- a/nlpcraft-examples/alarm/src/main/resources/alarm_samples.txt
+++ b/nlpcraft-examples/alarm/src/main/resources/alarm_samples.txt
@@ -15,7 +15,11 @@
 # limitations under the License.
 #
 
+#
+# Set of samples (corpus) for automatic unit and regression testing.
+#
+
 Ping me in 3 minutes
 Buzz me in an hour and 15mins
 Set my alarm for 30s
-Wake me up in twenty five minutes
\ No newline at end of file
+Please, wake me up in twenty five minutes!
\ No newline at end of file
diff --git a/nlpcraft-examples/alarm/src/main/resources/intents.idl b/nlpcraft-examples/alarm/src/main/resources/intents.idl
index 7d9ab7e..bae42ae 100644
--- a/nlpcraft-examples/alarm/src/main/resources/intents.idl
+++ b/nlpcraft-examples/alarm/src/main/resources/intents.idl
@@ -19,14 +19,14 @@
 fragment=buzz term~{tok_id() == 'x:alarm'}
 fragment=when
     term(nums)~{
-        // Demonstrating term variable.
+        // Demonstrating term variables.
         @type = meta_tok('nlpcraft:num:unittype')
-        @iseq = meta_tok('nlpcraft:num:isequalcondition')
+        @iseq = meta_tok('nlpcraft:num:isequalcondition') // Excludes conditional statements.
 
         tok_id() == 'nlpcraft:num' && @type == 'datetime' && @iseq == true
     }[0,7]
 
-// Intents
+// Intents (using fragments).
 intent=alarm
     fragment(buzz)
     fragment(when)
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSample.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSample.java
index ec09899..c3b0199 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSample.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSample.java
@@ -24,11 +24,22 @@ import static java.lang.annotation.ElementType.*;
 import static java.lang.annotation.RetentionPolicy.*;
 
 /**
- * Annotation to define one or more samples of the user input that should match a corresponding intent. This
- * annotation can only be used together with {@link NCIntent} or {@link NCIntentRef} annotations on the callback
+ * Annotation to define one or more samples (a corpus) of the user input that should match a corresponding intent. This
+ * annotation should be used together with {@link NCIntent} or {@link NCIntentRef} annotations on the callback
  * methods. Method can have multiple annotations of this type and each annotation can define multiple input
- * examples.
+ * examples. See similar {@link NCIntentSampleRef} annotation that allows to load samples from external resources like
+ * file or URL.
  * <p>
+ * The corpus of intent samples serve several important roles in NLPCraft:
+ * <ul>
+ *     <li>
+ *          
+ *     </li>
+ * </ul>
+ *
+ *
+ *
+ *
  * Note that the samples provided by this annotation not only serve the documentation purpose but are also
  * used by {@link NCTestAutoModelValidator} class from built-in test framework for auto-validation between
  * data models and intents.
@@ -40,14 +51,7 @@ import static java.lang.annotation.RetentionPolicy.*;
  *     "Turn the lights off in the entire house.",
  *     "Switch on the illumination in the master bedroom closet.",
  *     "Get the lights on.",
- *     "Please, put the light out in the upstairs bedroom.",
- *     "Set the lights on in the entire house.",
- *     "Turn the lights off in the guest bedroom.",
- *     "Could you please switch off all the lights?",
- *     "Dial off illumination on the 2nd floor.",
- *     "Please, no lights!",
- *     "Kill off all the lights now!",
- *     "No lights in the bedroom, please."
+ *     "Please, put the light out in the upstairs bedroom."
  * ))
  * def onMatch(
  *     {@literal @}NCIntentTerm("act") actTok: NCToken,
@@ -60,6 +64,7 @@ import static java.lang.annotation.RetentionPolicy.*;
  * Read full documentation in <a target=_ href="https://nlpcraft.apache.org/intent-matching.html">Intent Matching</a> section and review
  * <a target=_ href="https://github.com/apache/incubator-nlpcraft/tree/master/nlpcraft-examples">examples</a>.
  *
+ * @see NCIntentSampleRef
  * @see NCIntent
  * @see NCIntentRef
  * @see NCIntentTerm