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."))