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

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

commit 12bfeadcbeabdaf6af1edf740d97ea6cef7684ba
Author: Sergey Kamov <[email protected]>
AuthorDate: Thu Sep 23 18:31:18 2021 +0300

    WIP.
---
 .../nlpcraft/probe/mgrs/NCProbeVariants.scala      |  2 +-
 .../probe/mgrs/synonyms/NCSynonymsManager.scala    | 64 ++++++++++------------
 2 files changed, 31 insertions(+), 35 deletions(-)

diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeVariants.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeVariants.scala
index 8aced5f..8bc0113 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeVariants.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeVariants.scala
@@ -268,7 +268,7 @@ object NCProbeVariants {
                 for ((tok, tokNlp) <- toks.zip(nlpSen) if tokNlp.isUser)
                     process(tok, tokNlp)
 
-                ok = ok && NCSynonymsManager.isStillValid(srvReqId, toks.toSeq)
+                ok = ok && NCSynonymsManager.isStillValid(srvReqId, 
toks.toSeq, nlpSen)
 
                 if (ok) Some(new NCVariantImpl(toks.asJava)) else None
             })
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/synonyms/NCSynonymsManager.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/synonyms/NCSynonymsManager.scala
index 5386c83..25987dd 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/synonyms/NCSynonymsManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/synonyms/NCSynonymsManager.scala
@@ -18,7 +18,7 @@
 package org.apache.nlpcraft.probe.mgrs.synonyms
 
 import io.opencensus.trace.Span
-import org.apache.nlpcraft.common.nlp.{NCNlpSentenceNote, NCNlpSentenceToken}
+import org.apache.nlpcraft.common.nlp.{NCNlpSentence, NCNlpSentenceNote, 
NCNlpSentenceToken}
 import org.apache.nlpcraft.common.{NCService, U}
 import org.apache.nlpcraft.model._
 import org.apache.nlpcraft.model.intent.{NCIdlContext, NCIdlFunction}
@@ -34,21 +34,22 @@ import scala.jdk.CollectionConverters.ListHasAsScala
   *
   */
 object NCSynonymsManager extends NCService {
-    case class Key(id: String, startCharIndex: Int, endCharIndex: Int, other: 
Map[String, AnyRef])
+    case class Key(id: String, startCharIndex: Int, endCharIndex: Int, other: 
Map[String, AnyRef] = Map.empty)
 
     object Key {
-        def apply(t: NCToken): Key = {
-            val m =
-                if (t.isUserDefined)
-                    Map.empty[String, AnyRef]
-                else
+        def apply(t: NCToken): Key =
+            if (t.isUserDefined)
+                Key(t.getId, t.getStartCharIndex, t.getEndCharIndex)
+            else
+                Key(
+                    t.getId,
+                    t.getStartCharIndex,
+                    t.getEndCharIndex,
                     NCNlpSentenceNote.getBuiltProperties(t.getId).flatMap(p => 
t.metaOpt(p).asScala match {
                         case Some(v) => Some(p -> v)
                         case None => None
                     }).toMap
-
-            Key(t.getId, t.getStartCharIndex, t.getEndCharIndex, m)
-        }
+                )
     }
 
     case class Value(request: NCRequest, variants: Seq[Seq[NCToken]], 
predicate: NCIdlFunction) {
@@ -283,14 +284,14 @@ object NCSynonymsManager extends NCService {
     /**
       *
       * @param srvReqId
-      * @param sen
-      * @return
+      * @param senToks
+      * @param nlpSen
       */
-    def isStillValid(srvReqId: String, sen: Seq[NCToken]): Boolean =
+    def isStillValid(srvReqId: String, senToks: Seq[NCToken], nlpSen: 
NCNlpSentence): Boolean =
         idlCache.get(srvReqId) match {
             case Some(m) =>
                 lazy val allCheckedSenToks = {
-                    val set = mutable.ArrayBuffer.empty[Key]
+                    val set = mutable.HashSet.empty[Key]
 
                     def add(t: NCToken): Unit = {
                         set += Key(t)
@@ -298,39 +299,34 @@ object NCSynonymsManager extends NCService {
                         t.getPartTokens.asScala.foreach(add)
                     }
 
-                    sen.foreach(add)
+                    senToks.foreach(add)
+
+                    set ++=
+                        senToks.flatMap(t =>
+                            nlpSen.getInitialNlpNote(t.getStartCharIndex, 
t.getEndCharIndex) match {
+                                case Some(nlpNote) => 
Some(Key(nlpNote.noteType, t.getStartCharIndex, t.getEndCharIndex))
+                                case None => None
+                            }
+                        )
 
                     set
                 }
 
-                sen.forall(tok =>
+                senToks.forall(tok =>
                     m.get(Key(tok)) match {
                         case Some(vals) =>
                             vals.exists(
-                                v => {
-                                    val x = v.variants.exists(winHistVariant =>
+                                v =>
+                                    v.variants.exists(winHistVariant =>
                                         v.predicate.apply(
                                             tok, NCIdlContext(toks = 
winHistVariant, req = v.request)
                                         ).value.asInstanceOf[Boolean] &&
-                                            
winHistVariant.map(Key(_)).forall(allCheckedSenToks.contains)
+                                            winHistVariant.map(Key(_)).forall(
+                                                allCheckedSenToks.contains
+                                            )
                                     )
-
-//                                    if 
(sen.map(_.getNormalizedText).mkString(" ") == "sort A by A".toLowerCase) {
-//
-//
-//                                        println("!!!CHECK =variants=\n" + 
v.variants.map(_.mkString("\n")).mkString("\n"))
-//                                        println("!!!CHECK =variantsKeys=\n" 
+ v.variants.map(_.map(Key(_)).mkString("\n")).mkString("\n"))
-//
-//                                        println("!!!CHECK x=" + x)
-//
-//                                        println("+++++")
-//                                    }
-
-                                    x
-                                }
                             )
 
-
                         case None => true
                     })
 

Reply via email to