This is an automated email from the ASF dual-hosted git repository.
aradzinski pushed a commit to branch NLPCRAFT-296
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
The following commit(s) were added to refs/heads/NLPCRAFT-296 by this push:
new 511241a WIP.
511241a is described below
commit 511241adf74b0c114e7e2f4a88ed71201ca39ca0
Author: unknown <[email protected]>
AuthorDate: Thu May 27 13:01:18 2021 -0700
WIP.
---
.../apache/nlpcraft/common/debug/NCLogHolder.scala | 4 +-
.../model/intent/solver/NCIntentSolverEngine.scala | 14 ++--
.../sqlgen/impl/NCSqlModelGeneratorImpl.scala | 84 +++++++++++-----------
.../tools/sqlgen/impl/NCSqlSchemaBuilderImpl.scala | 12 ++--
4 files changed, 59 insertions(+), 55 deletions(-)
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala
index 3781a3c..0f914b3 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala
@@ -191,8 +191,8 @@ class NCLogHolder extends Serializable {
this.queryContext = ContextJson(
request = reqJs,
- variants = ctx.getVariants.asScala.map(seq =>
seq.asScala.map(convert).asJava).toSeq.asJava,
- convTokens =
ctx.getConversation.getTokens.asScala.map(convert).asJava
+ variants = ctx.getVariants.asScala.map(seq =>
seq.asScala.map(convert).toSeq.asJava).toSeq.asJava,
+ convTokens =
ctx.getConversation.getTokens.asScala.map(convert).toSeq.asJava
)
}
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 d26c8c2..2451f65 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
@@ -24,12 +24,13 @@ import org.apache.nlpcraft.common.debug.{NCLogGroupToken,
NCLogHolder}
import org.apache.nlpcraft.common.opencensus.NCOpenCensusTrace
import org.apache.nlpcraft.model.impl.NCTokenLogger
import org.apache.nlpcraft.model.impl.NCTokenPimp._
-import org.apache.nlpcraft.model.intent.{NCIdlContext, NCIdlFunction,
NCIdlIntent, NCIdlTerm, NCIdlStackItem => Z}
+import org.apache.nlpcraft.model.intent.{NCIdlContext, NCIdlFunction,
NCIdlIntent, NCIdlTerm, NCIdlStackItem ⇒ Z}
import org.apache.nlpcraft.model.{NCContext, NCDialogFlowItem, NCIntentMatch,
NCResult, NCToken}
import org.apache.nlpcraft.probe.mgrs.dialogflow.NCDialogFlowManager
import java.util.function.Function
import scala.collection.mutable
+import scala.jdk.CollectionConverters.{CollectionHasAsScala, MapHasAsScala,
SeqHasAsJava}
/**
* Intent solver that finds the best matching intent given user sentence.
@@ -200,8 +201,8 @@ object NCIntentSolverEngine extends LazyLogging with
NCOpenCensusTrace {
val matches = mutable.ArrayBuffer.empty[MatchHolder]
// Find all matches across all intents and sentence variants.
- for ((vrn, vrnIdx) <- ctx.getVariants.zipWithIndex) {
- val availToks = vrn.filter(t => !t.isStopWord)
+ for ((vrn, vrnIdx) <- ctx.getVariants.asScala.zipWithIndex) {
+ val availToks = vrn.asScala.filter(t => !t.isStopWord)
matches.appendAll(
intents.flatMap(pair => {
@@ -210,7 +211,7 @@ object NCIntentSolverEngine extends LazyLogging with
NCOpenCensusTrace {
// Isolated sentence tokens.
val senToks = Seq.empty[UsedToken] ++
availToks.map(UsedToken(false, false, _))
- val senTokGroups = availToks.map(t => if (t.getGroups
!= null) t.getGroups.sorted else Seq.empty)
+ val senTokGroups = availToks.map(t => if (t.getGroups
!= null) t.getGroups.asScala.sorted else Seq.empty)
// Isolated conversation tokens.
val convToks =
@@ -218,9 +219,9 @@ object NCIntentSolverEngine extends LazyLogging with
NCOpenCensusTrace {
Seq.empty[UsedToken] ++
// We shouldn't mix tokens with same group
from conversation
// history and processed sentence.
- ctx.getConversation.getTokens.
+ ctx.getConversation.getTokens.asScala.
filter(t => {
- val convTokGroups =
t.getGroups.sorted
+ val convTokGroups =
t.getGroups.asScala.sorted
!senTokGroups.exists(convTokGroups.containsSlice)
}).
@@ -292,6 +293,7 @@ object NCIntentSolverEngine extends LazyLogging with
NCOpenCensusTrace {
val variantPart =
m.variant.
tokens.
+ asScala.
map(t =>
s"${t.getId}${t.getGroups}${t.getValue}${t.normText}").
mkString("")
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlModelGeneratorImpl.scala
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlModelGeneratorImpl.scala
index f4b357f..4afba54 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlModelGeneratorImpl.scala
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlModelGeneratorImpl.scala
@@ -37,7 +37,7 @@ import org.apache.nlpcraft.common._
import scala.util.Using
import scala.collection.immutable.HashMap
import scala.collection.{Seq, mutable}
-import scala.jdk.CollectionConverters.{IterableHasAsJava, SeqHasAsJava}
+import scala.jdk.CollectionConverters.{SeqHasAsJava, SetHasAsJava,
MapHasAsJava}
import scala.util.Try
/**
@@ -320,52 +320,54 @@ object NCSqlModelGeneratorImpl {
mdl.setEnabledBuiltInTokens(Array())
mdl.setIntents(Array())
- mdl.setMetadata(HashMap[String, Object](
- "sql:timestamp" -> s"${Instant.now}",
- "sql:url" -> params.url,
- "sql:driver" -> params.driver,
- "sql:user" -> params.user,
- "sql:output" -> params.output,
- "sql:schema" -> params.schema,
- "sql:cmdline" -> params.cmdLine,
- "sql:joins" ->
- tables.flatMap(t => t.joins.map(j => {
- val fromTable = t.name.toLowerCase
- val toTable = j.toTable.toLowerCase
- val fromCols = j.fromColumns.map(_.toLowerCase)
- val toCols = j.toColumns.map(_.toLowerCase)
-
- def mkNullables(t: String, cols: Seq[String]):
Seq[Boolean] = {
- val tabCols = tablesMap(t).columns
-
- cols.map(col => tabCols.find(_.name == col).get.isNull)
- }
+ mdl.setMetadata(
+ HashMap[String, AnyRef](
+ "sql:timestamp" -> s"${Instant.now}",
+ "sql:url" -> params.url,
+ "sql:driver" -> params.driver,
+ "sql:user" -> params.user,
+ "sql:output" -> params.output,
+ "sql:schema" -> params.schema,
+ "sql:cmdline" -> params.cmdLine,
+ "sql:joins" ->
+ tables.flatMap(t => t.joins.map(j => {
+ val fromTable = t.name.toLowerCase
+ val toTable = j.toTable.toLowerCase
+ val fromCols = j.fromColumns.map(_.toLowerCase)
+ val toCols = j.toColumns.map(_.toLowerCase)
+
+ def mkNullables(t: String, cols: Seq[String]):
Seq[Boolean] = {
+ val tabCols = tablesMap(t).columns
+
+ cols.map(col => tabCols.find(_.name ==
col).get.isNull)
+ }
- val fromColsNulls = mkNullables(fromTable, fromCols)
- val toColsNulls =mkNullables(toTable, toCols)
+ val fromColsNulls = mkNullables(fromTable, fromCols)
+ val toColsNulls =mkNullables(toTable, toCols)
- def forall(seq: Seq[Boolean], v: Boolean): Boolean =
seq.forall(_ == v)
+ def forall(seq: Seq[Boolean], v: Boolean): Boolean =
seq.forall(_ == v)
- val typ =
- if (forall(fromColsNulls, v = true) &&
forall(toColsNulls, v = false))
- NCSqlJoinType.LEFT
- else if (forall(fromColsNulls, v = false) &&
forall(toColsNulls, v = true))
- NCSqlJoinType.RIGHT
- else
- // Default value.
- NCSqlJoinType.INNER
+ val typ =
+ if (forall(fromColsNulls, v = true) &&
forall(toColsNulls, v = false))
+ NCSqlJoinType.LEFT
+ else if (forall(fromColsNulls, v = false) &&
forall(toColsNulls, v = true))
+ NCSqlJoinType.RIGHT
+ else
+ // Default value.
+ NCSqlJoinType.INNER
- val m = new util.LinkedHashMap[String, Object]()
+ val m = new util.LinkedHashMap[String, Object]()
- m.put("fromtable", fromTable)
- m.put("fromcolumns", fromCols.asJava)
- m.put("totable", toTable)
- m.put("tocolumns", toCols.asJava)
- m.put("jointype", typ.toString.toLowerCase)
+ m.put("fromtable", fromTable)
+ m.put("fromcolumns", fromCols.asJava)
+ m.put("totable", toTable)
+ m.put("tocolumns", toCols.asJava)
+ m.put("jointype", typ.toString.toLowerCase)
- m
- })).asJava
- ).asJava)
+ m
+ })).asJava
+ ).asJava
+ )
mdl.setElements(elems.toArray)
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlSchemaBuilderImpl.scala
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlSchemaBuilderImpl.scala
index 98d8ebd..63221d6 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlSchemaBuilderImpl.scala
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/sqlgen/impl/NCSqlSchemaBuilderImpl.scala
@@ -23,7 +23,7 @@ import org.apache.nlpcraft.model.NCModel
import org.apache.nlpcraft.model.tools.sqlgen._
import scala.compat.java8.OptionConverters._
-import scala.jdk.CollectionConverters.{CollectionHasAsScala, ListHasAsScala}
+import scala.jdk.CollectionConverters.{CollectionHasAsScala, ListHasAsScala,
MapHasAsScala, SeqHasAsJava}
/**
*
@@ -72,7 +72,7 @@ object NCSqlSchemaBuilderImpl {
var tables =
elems.filter(_.getGroups.contains("table")).
map(p => {
- def x(l: util.List[String]): Seq[String] = if (l == null)
Seq.empty else l.asScala
+ def x(l: util.List[String]): Seq[String] = if (l == null)
Seq.empty else l.asScala.toSeq
val tab: String = p.metax("sql:name")
val dfltSelect = x(p.metax("sql:defaultselect"))
@@ -84,7 +84,7 @@ object NCSqlSchemaBuilderImpl {
val table: NCSqlTableImpl = NCSqlTableImpl(
table = tab,
- columns = cols.asScala,
+ columns = cols.asScala.toSeq,
sorts = Seq.empty,
selects = dfltSelect,
extraTables = extra,
@@ -170,14 +170,14 @@ object NCSqlSchemaBuilderImpl {
val join: NCSqlJoin = NCSqlJoinImpl(
mget("fromtable").asInstanceOf[String],
mget("totable").asInstanceOf[String],
- mget("fromcolumns").asInstanceOf[util.List[String]].asScala,
- mget("tocolumns").asInstanceOf[util.List[String]].asScala,
+
mget("fromcolumns").asInstanceOf[util.List[String]].asScala.toSeq,
+
mget("tocolumns").asInstanceOf[util.List[String]].asScala.toSeq,
NCSqlJoinType.valueOf(mget("jointype").asInstanceOf[String].toUpperCase())
)
join
})
- NCSqlSchemaImpl(tables, joins)
+ NCSqlSchemaImpl(tables, joins.toSeq)
}
}