This is an automated email from the ASF dual-hosted git repository. sergeykamov pushed a commit to branch NLPCRAFT-287 in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
commit ae02e4926227be05efb165f040ad6fe14b830f56 Author: Sergey Kamov <[email protected]> AuthorDate: Tue Apr 13 22:40:55 2021 +0300 WIP. --- .../nlpcraft/probe/mgrs/NCProbeSynonym.scala | 1 - .../mgrs/nlp/enrichers/model/NCModelEnricher.scala | 35 ++++++++++++---------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala index 7a7d794..0a4bda6 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/NCProbeSynonym.scala @@ -202,7 +202,6 @@ class NCProbeSynonym( */ def isMatch(tows: Seq[NCDslContent], req: NCRequest): Boolean = { require(tows != null) - require(!sparse) if (tows.length == length && tows.count(_.isLeft) >= dslChunks) tows.zip(this).sortBy(p ⇒ getSort(p._2.kind)).forall { case (tow, chunk) ⇒ isMatch(tow, chunk, req) } diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala index d1ec4e5..8d5c9f2 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala @@ -186,6 +186,7 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala { // Internal usage. params += "allToksIndexes" → allToksIdxs.asJava + params += "toksIndexes" → toks.map(_.index).asJava params += "continuous" → continuous syn match { @@ -345,20 +346,22 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala { * @param toks * @param elemId */ - private def alreadyMarked(toks: Seq[NlpToken], allToksIndexes: Seq[Int], continuous: Boolean, elemId: String): Boolean = - toks.flatten.exists(n ⇒ - n.noteType == elemId && - { - if (n.data("continuous").asInstanceOf[Boolean]) - false - else { - if (continuous) - false - else - n.data("allToksIndexes").asInstanceOf[JList[Int]].asScala.containsSlice(allToksIndexes) - } - } - ) + private def alreadyMarked(toks: Seq[NlpToken], allToksIndexes: Seq[Int], continuous: Boolean, elemId: String): Boolean = { + toks.forall(t ⇒ t.isTypeOf(elemId)) && + toks.head.filter(_.noteType == elemId).exists(n ⇒ n.tokenIndexes.toSet == toks.map(_.index).toSet) + toks.flatten.exists(n ⇒ + n.noteType == elemId && { + if (n.data("continuous").asInstanceOf[Boolean]) + false + else { + if (continuous) + false + else + n.data("allToksIndexes").asInstanceOf[JList[Int]].asScala.containsSlice(allToksIndexes) + } + } + ) + } /** * @@ -591,11 +594,11 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala { } // 2. DSL. - if (state != SIMPLE && mdl.dslSynonyms.nonEmpty) { + if (state != SIMPLE && mdl.hasDslSynonyms) { found = false // 2.1 Sparse. - if (mdl.hasSparseSynonyms) + if (mdl.hasDslSynonyms) for (s ← get(mdl.dslSynonyms, elemId); comb ← dslCombs if !found) s.trySparseMatch(comb.map(_.data), req) match { case Some(res) ⇒
