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.