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

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


The following commit(s) were added to refs/heads/NLPCRAFT-206 by this push:
     new 1347d84  WIP.
1347d84 is described below

commit 1347d84695e77bb98d09ee44e98ff613348217ec
Author: Aaron Radzinski <[email protected]>
AuthorDate: Wed Mar 10 14:29:08 2021 -0800

    WIP.
---
 .../org/apache/nlpcraft/examples/alarm/alarm_model.json    |  2 +-
 .../org/apache/nlpcraft/model/intent/NCDslContext.scala    | 13 ++++---------
 .../model/intent/compiler/NCDslBaselCompiler.scala         |  6 +++---
 .../model/intent/solver/NCIntentSolverEngine.scala         |  4 ----
 .../org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala    | 14 +++++++++-----
 .../nlpcraft/probe/mgrs/deploy/NCDeployManager.scala       |  6 +++---
 .../apache/nlpcraft/probe/mgrs/model/NCModelManager.scala  |  1 -
 .../probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala   |  2 +-
 .../nlpcraft/probe/mgrs/sentence/NCSentenceHelper.java     |  4 +---
 .../apache/nlpcraft/model/intent/dsl/compiler/test_ok.nc   |  2 +-
 10 files changed, 23 insertions(+), 31 deletions(-)

diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json
index 254f098..050e96f 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json
@@ -34,6 +34,6 @@
         }
     ],
     "intents": [
-        "intent=alarm term~{id=='x:alarm'} term(nums)~{id=='nlpcraft:num' && 
~nlpcraft:num:unittype=='datetime' && 
~nlpcraft:num:isequalcondition==true}[0,7]"
+        "intent=alarm term~{id() == 'x:alarm'} term(nums)~{id() == 
'nlpcraft:num' && meta_token('nlpcraft:num:unittype') == 'datetime' && 
meta_token('nlpcraft:num:isequalcondition') == true}[0,7]"
     ]
 }
\ No newline at end of file
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslContext.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslContext.scala
index 4a89d59..2b0a61f 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslContext.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/NCDslContext.scala
@@ -23,19 +23,14 @@ import org.apache.nlpcraft.model.NCRequest
 /**
  *
  * @param intentMeta Intent metadata.
- * @param reqMeta User request ('data' parameter) metadata.
- * @param usrMeta User object metadata.
- * @param compMeta Company metadata.
  * @param convMeta Conversation metadata.
  * @param fragMeta Optional fragment (argument) metadata passed during intent 
fragment reference.
  * @param req Server request holder.
  */
 case class NCDslContext(
-    intentMeta: ScalaMeta,
-    reqMeta: ScalaMeta,
-    usrMeta: ScalaMeta,
-    compMeta: ScalaMeta,
-    convMeta: ScalaMeta,
-    fragMeta: ScalaMeta,
+    intentMeta: ScalaMeta = Map.empty[String, Object],
+    convMeta: ScalaMeta = Map.empty[String, Object],
+    fragMeta: ScalaMeta = Map.empty[String, Object],
     req: NCRequest
 )
+
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslBaselCompiler.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslBaselCompiler.scala
index 4ed3c81..f4ae355 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslBaselCompiler.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/compiler/NCDslBaselCompiler.scala
@@ -559,9 +559,9 @@ trait NCDslBaselCompiler {
             case "meta_token" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(tok.meta(s), true) }
             case "meta_model" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(tok.getModel.meta(s), false) }
             case "meta_intent" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(termCtx.intentMeta.get(s).orNull, false) }
-            case "meta_req" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(termCtx.reqMeta.get(s).orNull, false) }
-            case "meta_user" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(termCtx.usrMeta.get(s).orNull, false) }
-            case "meta_company" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(termCtx.compMeta.get(s).orNull, false) }
+            case "meta_req" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(termCtx.req.getRequestData.get(s), false) }
+            case "meta_user" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(termCtx.req.getUser.getMetadata.get(s), false) }
+            case "meta_company" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(termCtx.req.getCompany.getMetadata.get(s), false) }
             case "meta_sys" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(U.sysEnv(s).orNull, false) }
             case "meta_conv" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(termCtx.convMeta.get(s).orNull, false) }
             case "meta_frag" ⇒ get1Str() match { case (s, _) ⇒ 
pushAny(termCtx.fragMeta.get(s).orNull, false) }
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala
index 5279f4b..7709a25 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/solver/NCIntentSolverEngine.scala
@@ -486,11 +486,7 @@ object NCIntentSolverEngine extends LazyLogging with 
NCOpenCensusTrace {
 
             val termCtx = NCDslContext(
                 intentMeta = intent.meta,
-                reqMeta = ctx.getRequest.getRequestData,
-                usrMeta = ctx.getRequest.getUser.getMetadata,
                 convMeta = ctx.getConversation.getMetadata,
-                compMeta = ctx.getRequest.getCompany.getMetadata,
-                fragMeta = Map.empty[String, Object], // No fragments during 
intent matching.
                 req = ctx.getRequest
             )
 
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala
index c6b5578..16bd6a4 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala
@@ -19,6 +19,7 @@ package org.apache.nlpcraft.probe.mgrs
 
 import org.apache.nlpcraft.common.nlp.{NCNlpSentenceToken, 
NCNlpSentenceTokenBuffer}
 import org.apache.nlpcraft.model._
+import org.apache.nlpcraft.model.intent.NCDslContext
 import org.apache.nlpcraft.probe.mgrs.NCProbeSynonymChunkKind._
 
 import scala.collection.mutable.ArrayBuffer
@@ -92,7 +93,7 @@ class NCProbeSynonym(
       * @param tows
       * @return
       */
-    def isMatch(tows: Seq[Either[NCToken, NCNlpSentenceToken]]): Boolean = {
+    def isMatch(tows: Seq[Either[NCToken, NCNlpSentenceToken]], req: 
NCRequest): Boolean = {
         require(tows != null)
 
         type Token = NCToken
@@ -106,13 +107,16 @@ class NCProbeSynonym(
                         if (tow.isLeft) fromToken(tow.left.get) else 
fromWord(tow.right.get)
 
                     chunk.kind match {
-                        case TEXT ⇒ chunk.wordStem == get0(_.stem, _.stem)
+                        case TEXT ⇒
+                            chunk.wordStem == get0(_.stem, _.stem)
+
                         case REGEX ⇒
                             val r = chunk.regex
 
-                            r.matcher(get0(_.origText, _.origText)).matches() 
||
-                            r.matcher(get0(_.normText, _.normText)).matches()
-                        case DSL ⇒ get0(t ⇒ chunk.dslPred.apply(t, null 
/*TODO*/)._2, _ ⇒ false)
+                            r.matcher(get0(_.origText, _.origText)).matches() 
|| r.matcher(get0(_.normText, _.normText)).matches()
+
+                        case DSL ⇒
+                            get0(t ⇒ chunk.dslPred.apply(t, NCDslContext(req = 
req))._2, _ ⇒ false)
 
                         case _ ⇒ throw new AssertionError()
                     }
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
index e39ddba..6d8a251 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala
@@ -1471,7 +1471,7 @@ object NCDeployManager extends NCService with 
DecorateAsScala {
     
             // Process intent references from @NCIntentRef annotation.
             for (ann ← m.getAnnotationsByType(CLS_INTENT_REF)) {
-                mdl match {
+                intents += (mdl match {
                     case adapter: NCModelFileAdapter ⇒
                         val refId = ann.value().trim
             
@@ -1493,7 +1493,7 @@ object NCDeployManager extends NCService with 
DecorateAsScala {
                         }
             
                         compiledIntents.find(_.id == refId) match {
-                            case Some(intent) ⇒ Some(intent, 
prepareCallback(m, mdl, intent))
+                            case Some(intent) ⇒ (intent, prepareCallback(m, 
mdl, intent))
                             case None ⇒
                                 throw new NCE(
                                     s"@IntentRef($refId) references unknown 
intent ID [" +
@@ -1508,7 +1508,7 @@ object NCDeployManager extends NCService with 
DecorateAsScala {
                             s"mdlId=$mdlId, " +
                             s"callback=$mStr" +
                         s"]")
-                }
+                })
             }
         }
         
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala
index 6e5d23d..600d037 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala
@@ -52,7 +52,6 @@ object NCModelManager extends NCService with DecorateAsScala {
         mux.synchronized {
             data = NCDeployManager.getModels.map(w ⇒ {
                 w.model.onInit()
-
                 w.model.getId → w
             }).toMap
 
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
index a4d1ab5..f898793 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala
@@ -439,7 +439,7 @@ object NCModelEnricher extends NCProbeEnricher with 
DecorateAsScala {
                                     comb ← seq if !found;
                                     data = comb.map(_.data)
                                 )
-                                    if (syn.isMatch(data)) {
+                                    if (syn.isMatch(data, 
NCRequestImpl(senMeta, ns.srvReqId))) {
                                         val parts = 
comb.zip(syn.map(_.kind)).flatMap {
                                             case (complex, kind) ⇒ if 
(complex.isToken) Some(complex.token → kind) else None
                                         }
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/sentence/NCSentenceHelper.java
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/sentence/NCSentenceHelper.java
index 1e215ad..0c94cb5 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/sentence/NCSentenceHelper.java
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/sentence/NCSentenceHelper.java
@@ -185,9 +185,7 @@ class NCSentenceHelper extends RecursiveTask<List<Long>> {
             throw new IllegalArgumentException("Dictionary is too long: " + 
dict.size());
 
         // Convert words to bitmasks (each bit corresponds to an index in the 
dictionary).
-        long[] wordBits =
-            
words.stream().sorted(Comparator.comparingInt(Set::size)).mapToLong(row -> 
wordsToBits(row, dict)).toArray();
-
+        long[] wordBits = 
words.stream().sorted(Comparator.comparingInt(Set::size)).mapToLong(row -> 
wordsToBits(row, dict)).toArray();
         // Cache words count per row.
         int[] wordCounts = 
words.stream().sorted(Comparator.comparingInt(Set::size)).mapToInt(Set::size).toArray();
 
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/test_ok.nc
 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/test_ok.nc
index cd0a137..7da0a5b 100644
--- 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/test_ok.nc
+++ 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/compiler/test_ok.nc
@@ -1,4 +1,4 @@
-/*
+ /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.

Reply via email to