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

[incubator-nlpcraft] 01/01: WIP.

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

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

commit 52553b34d8b74637964b4d6a790b691f13e7d064
Author: Sergey Kamov <sk...@gmail.com>
AuthorDate: Tue Jun 8 15:06:52 2021 +0300

    WIP.
---
 .../apache/nlpcraft/examples/sql/SqlModel.scala    |  4 +--
 .../nlpcraft/probe/mgrs/NCProbeMessage.scala       | 31 ++++++++++++----------
 .../probe/mgrs/conn/NCConnectionManager.scala      |  6 ++---
 .../probe/mgrs/nlp/NCProbeEnrichmentManager.scala  | 10 +++----
 4 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/nlpcraft-examples/sql/src/main/java/org/apache/nlpcraft/examples/sql/SqlModel.scala b/nlpcraft-examples/sql/src/main/java/org/apache/nlpcraft/examples/sql/SqlModel.scala
index 1807c5f..181ae8b 100644
--- a/nlpcraft-examples/sql/src/main/java/org/apache/nlpcraft/examples/sql/SqlModel.scala
+++ b/nlpcraft-examples/sql/src/main/java/org/apache/nlpcraft/examples/sql/SqlModel.scala
@@ -407,8 +407,8 @@ class SqlModel extends NCModelFileAdapter("sql_model.yaml") with LazyLogging {
       *  conversation context between this and previous questions will not be cleared.
       */
     override def onMatchedIntent(m: NCIntentMatch): Boolean = {
-        val toks = m.getVariant.getMatchedTokens.asScala
-        val intentConvToks = m.getIntentTokens.asScala.flatMap(_.asScala) -- toks
+        val toks = m.getVariant.getMatchedTokens.asScala.toSet
+        val intentConvToks = m.getIntentTokens.asScala.flatMap(_.asScala).filterNot(toks.contains)
 
         // Variant doesn't use tokens from the conversation context (STM).
         if (intentConvToks.isEmpty)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeMessage.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeMessage.scala
index 29aea3a..d856049 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeMessage.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeMessage.scala
@@ -29,13 +29,14 @@ import scala.collection.mutable
   *
   * @param typ Type (name) of the message.
   */
-class NCProbeMessage(val typ: String) extends mutable.HashMap[String/*Name*/, Serializable/*Value*/]
-    with Serializable with NCAsciiLike {
+class NCProbeMessage(val typ: String) extends Serializable with NCAsciiLike {
+    private val data = mutable.HashMap.empty[String/*Name*/, Serializable/*Value*/]
+
     private val guid = U.genGuid()
     private val hash = guid.hashCode()
-    
-    put("TYPE", typ)
-    put("GUID", guid)
+
+    data += "TYPE" -> typ
+    data += "GUID" -> guid
     
     override def equals(obj: Any): Boolean = obj match {
         case msg: NCProbeMessage => msg.guid == guid
@@ -52,17 +53,17 @@ class NCProbeMessage(val typ: String) extends mutable.HashMap[String/*Name*/, Se
     def getProbeGuid: String = data[String]("PROBE_GUID") // Probe GUID.
     
     def setProbeToken(tkn: String): NCProbeMessage = {
-        put("PROBE_TOKEN", tkn)
+        data += "PROBE_TOKEN" -> tkn
         
         this
     }
     def setProbeId(id: String): NCProbeMessage = {
-        put("PROBE_ID", id)
+        data += "PROBE_ID" -> id
         
         this
     }
     def setProbeGuid(guid: String): NCProbeMessage = {
-        put("PROBE_GUID", guid)
+        data += "PROBE_GUID"-> guid
         
         this
     }
@@ -86,7 +87,7 @@ class NCProbeMessage(val typ: String) extends mutable.HashMap[String/*Name*/, Se
       * @return `None` or `Some` map value (including `null` values).
       */
     def dataOpt[T](key: String): Option[T] =
-        get(key) match {
+        data.get(key) match {
             case None => None
             case Some(x) => x match {
                 case None | null => None
@@ -95,10 +96,12 @@ class NCProbeMessage(val typ: String) extends mutable.HashMap[String/*Name*/, Se
         }
     
     override def toAscii: String =
-        iterator.toSeq.sortBy(_._1).foldLeft(NCAsciiTable("Key", "Value"))((t, p) => t += p).toString
-    
-    override def toString(): String =
-        iterator.toSeq.sortWith((t1, t2) => {
+        data.iterator.toSeq.sortBy(_._1).foldLeft(NCAsciiTable("Key", "Value"))((t, p) => t += p).toString
+
+    def addData(key: String, value: => Serializable): Unit = data += key -> value
+
+    override def toString: String =
+        data.iterator.toSeq.sortWith((t1, t2) => {
             if (t1._1 == "TYPE")
                 true
             else if (t2._1 == "TYPE")
@@ -118,7 +121,7 @@ object NCProbeMessage {
         val impl = new NCProbeMessage(typ)
     
         for ((k, v) <- pairs)
-            impl.put(k, v)
+            impl.data.put(k, v)
         
         impl
     }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conn/NCConnectionManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conn/NCConnectionManager.scala
index 0e851c4..159ffd2 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conn/NCConnectionManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conn/NCConnectionManager.scala
@@ -175,10 +175,8 @@ object NCConnectionManager extends NCService {
                 val tmz = TimeZone.getDefault
     
                 val srvNlpEng: String =
-                    hashResp.getOrElse(
-                        "NLP_ENGINE",
-                        throw new HandshakeError("NLP engine parameter missed in response.")
-                    ).asInstanceOf[String]
+                    hashResp.dataOpt[String]("NLP_ENGINE").
+                        getOrElse(throw new HandshakeError("NLP engine parameter missed in response."))
 
                 val probeNlpEng = NCNlpCoreManager.getEngine
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
index 887b9c9..196ed9c 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
@@ -296,17 +296,17 @@ object NCProbeEnrichmentManager extends NCService with NCOpenCensusModelStats {
 
             val msg = NCProbeMessage(msgName)
 
-            msg += "srvReqId" -> srvReqId
-            msg += "mdlId" -> mdlId
-            msg += "txt" -> txt
+            msg.addData("srvReqId", srvReqId)
+            msg.addData("mdlId", mdlId)
+            msg.addData("txt", txt)
 
             def addOptional(name: String, vOpt: Option[Serializable]): Unit =
                 if (vOpt.isDefined)
-                    msg += name -> vOpt.get
+                    msg.addData(name, vOpt.get)
 
             def addMeta(name: String, vOpt: Option[JavaMeta]): Unit =
                 if (vOpt.isDefined)
-                    msg += name -> vOpt.get.asInstanceOf[Serializable]
+                    msg.addData(name, vOpt.get.asInstanceOf[Serializable])
 
             if (resBody.isDefined && resBody.get.length > Config.resultMaxSize) {
                 addOptional("error", Some("Result is too big. Model result must be corrected."))