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

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


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

commit d778bd709374929553190ea1372b33b366aec0a6
Author: Sergey Kamov <[email protected]>
AuthorDate: Wed Jun 30 17:14:22 2021 +0300

    WIP.
---
 .../nlpcraft/model/ctxword/NCContextWordSpec.scala | 107 +++++++++++----------
 .../model/ctxword/NCContextWordSpec2.scala         |   5 +-
 2 files changed, 60 insertions(+), 52 deletions(-)

diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/ctxword/NCContextWordSpec.scala
 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/ctxword/NCContextWordSpec.scala
index 9f200dd..8615d8a 100644
--- 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/ctxword/NCContextWordSpec.scala
+++ 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/ctxword/NCContextWordSpec.scala
@@ -18,7 +18,8 @@
 package org.apache.nlpcraft.model.ctxword
 
 import 
org.apache.nlpcraft.model.NCContextWordElementConfig.NCContextWordElementPolicy
-import org.apache.nlpcraft.model.{NCContextWordElementConfig, 
NCContextWordModelConfig, NCElement, NCIntent, NCIntentMatch, NCIntentSample, 
NCIntentTerm, NCModel, NCResult, NCToken, NCValue}
+import 
org.apache.nlpcraft.model.NCContextWordElementConfig.NCContextWordElementPolicy._
+import org.apache.nlpcraft.model.{NCContext, NCContextWordElementConfig, 
NCContextWordModelConfig, NCElement, NCModel, NCResult, NCValue}
 import org.apache.nlpcraft.{NCTestContext, NCTestEnvironment}
 import org.junit.jupiter.api.Test
 
@@ -26,81 +27,86 @@ import java.util
 import java.util.{Collections, Optional}
 import scala.jdk.CollectionConverters.{CollectionHasAsScala, MapHasAsJava, 
SeqHasAsJava, SetHasAsJava}
 
-class NCContextWordSpecModel extends NCModel {
-    override def getId: String = this.getClass.getSimpleName
-    override def getName: String = this.getClass.getSimpleName
-    override def getVersion: String = "1.0.0"
-
-    val level = 0.4
-
+object NCContextWordSpecModel {
     case class Value(name: String, syns: String*) extends NCValue {
         override def getName: String = name
         override def getSynonyms: util.List[String] = (Seq(name) ++ 
syns).asJava
     }
 
-    case class CtxModelConfig(getSupportedElements: util.Map[String, 
NCContextWordElementConfig]) extends NCContextWordModelConfig {
-        override def useIntentsSamples(): Boolean = true
-    }
-
-    case class CtxElementConfig(override val getScore: Double, getPolicy: 
NCContextWordElementPolicy) extends NCContextWordElementConfig
-
     case class Element(id: String, level: Double, values: NCValue*) extends 
NCElement {
         override def getId: String = id
         override def getValues: util.List[NCValue] = values.asJava
         override def getGroups: util.List[String] = 
Collections.singletonList("testGroup")
     }
 
-    object Element {
-        def apply(id: String, values: NCValue*): Element = new Element(id, 
level, values: _*)
-    }
+    var expected: String = _
+}
+
+import org.apache.nlpcraft.model.ctxword.NCContextWordSpecModel._
+
+class NCContextWordSpecModel extends NCModel {
+    override def getId: String = this.getClass.getSimpleName
+    override def getName: String = this.getClass.getSimpleName
+    override def getVersion: String = "1.0.0"
+
+    val level = 0.4
 
     override def getContextWordModelConfig: Optional[NCContextWordModelConfig] 
= {
         Optional.of(
-            CtxModelConfig(
-                getElements.asScala.map(e =>
-                    e.getId -> {
-                        val score: NCContextWordElementConfig = 
CtxElementConfig(level, NCContextWordElementPolicy.MIN)
-
-                        score
-                    }
-                ).toMap.asJava
-            )
+            new NCContextWordModelConfig() {
+                override def getSupportedElements: util.Map[String, 
NCContextWordElementConfig] =
+                    getElements.asScala.map(e =>
+                        e.getId ->
+                        new NCContextWordElementConfig() {
+                            override def getPolicy: NCContextWordElementPolicy 
= MIN
+                            override def getScore: Double = level
+                        }
+                    ).toMap.asJava
+
+                override def useIntentsSamples(): Boolean = false
+
+                override def getSamples: util.List[String] =
+                    Seq(
+                        "I like drive my new BMW",
+                        "BMW has the best engine",
+                        "Luxury cars like Mercedes and BMW  are prime targets",
+                        "BMW will install side air bags up front",
+
+                        "A wild cat is very dangerous",
+                        "A fox eats hens",
+                        "The fox was already in your chicken house",
+
+                        "What is the local temperature?",
+                        "This is the first day of heavy rain",
+                        "It is the beautiful day, the sun is shining"
+                    ).asJava
+            }
         )
     }
 
     override def getElements: util.Set[NCElement] =
         Set(
-            Element("class:cars", Value("BMW")),
-            Element("class:animal", Value("fox"), Value("cat", "tomcat")),
-            Element("class:weather", Value("temperature"), Value("rain"), 
Value("sun"))
+            Element("class:cars", level, Value("BMW")),
+            Element("class:animal", level, Value("fox"), Value("cat", 
"tomcat")),
+            Element("class:weather", level, Value("temperature"), 
Value("rain"), Value("sun"))
         ).map(p => {
             val e: NCElement = p
 
             e
         }).asJava
 
-    @NCIntentSample(
-        Array(
-            "I like drive my new BMW",
-            "BMW has the best engine",
-            "Luxury cars like Mercedes and BMW  are prime targets",
-            "BMW will install side air bags up front",
+    override def onContext(ctx: NCContext): NCResult = {
+        val ok =
+            ctx.getVariants.asScala.exists(v => {
+                val testGroupToks = 
v.asScala.toSeq.filter(_.getGroups.contains("testGroup"))
 
-            "A wild cat is very dangerous",
-            "A fox eats hens",
-            "The fox was already in your chicken house",
+                val elemIds = testGroupToks.map(_.getId).distinct.mkString(" ")
+                val words = testGroupToks.map(_.getOriginalText).mkString(" ")
 
-            "What is the local temperature?",
-            "This is the first day of heavy rain",
-            "It is the beautiful day, the sun is shining",
-        )
-    )
-    @NCIntent("intent=classification term(toks)~{has(tok_groups(), 
'testGroup')}*")
-    def onMatch(ctx: NCIntentMatch, @NCIntentTerm("toks") toks: 
List[NCToken]): NCResult = {
-        val elemIds = toks.map(_.getId).distinct.mkString(" ")
-        val words = toks.map(_.getOriginalText).mkString(" ")
+                NCContextWordSpecModel.expected == s"$elemIds $words"
+            })
 
-        NCResult.text(s"$elemIds $words")
+        NCResult.text(if (ok) "OK" else "ERROR")
     }
 }
 
@@ -110,10 +116,9 @@ class NCContextWordSpecModel extends NCModel {
 @NCTestEnvironment(model = classOf[NCContextWordSpecModel], startClient = true)
 class NCContextWordSpec extends NCTestContext {
     private def check(txt: String, elemId: String, words: String*): Unit = {
-        val res = getClient.ask(txt).getResult.get()
-        val exp = s"$elemId ${words.mkString(" ")}"
+        NCContextWordSpecModel.expected = s"$elemId ${words.mkString(" ")}"
 
-        require(exp == res, s"Expected: $exp, result: $res")
+        require(getClient.ask(txt).getResult.get() == "OK")
     }
 
     @Test
diff --git 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/ctxword/NCContextWordSpec2.scala
 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/ctxword/NCContextWordSpec2.scala
index 9b1beff..8d12d43 100644
--- 
a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/ctxword/NCContextWordSpec2.scala
+++ 
b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/ctxword/NCContextWordSpec2.scala
@@ -17,6 +17,7 @@
 
 package org.apache.nlpcraft.model.ctxword
 
+import org.apache.nlpcraft.model.{NCContext, NCResult}
 import org.apache.nlpcraft.{NCTestContext, NCTestEnvironment}
 import org.junit.jupiter.api.Test
 
@@ -25,6 +26,8 @@ import org.junit.jupiter.api.Test
   */
 class NCContextWordSpecModel2 extends NCContextWordSpecModel {
     override val level: Double = 0
+
+    override def onContext(ctx: NCContext): NCResult = NCResult.text("OK")
 }
 
 /**
@@ -34,7 +37,7 @@ class NCContextWordSpecModel2 extends NCContextWordSpecModel {
 class NCContextWordSpec2 extends NCTestContext {
     private def check(txts: String*): Unit =
         for (txt <- txts)
-            checkIntent(txt, "classification")
+            getClient.ask(txt)
 
     @Test
     private[ctxword] def test(): Unit = {

Reply via email to