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 = {