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 24a169c0e5346c9d9e9c25066a4b11d85cffa5ff Author: Sergey Kamov <[email protected]> AuthorDate: Wed Apr 14 13:15:35 2021 +0300 WIP. --- .../mgrs/nlp/enrichers/model/NCModelEnricher.scala | 22 +++++----- .../model/NCEnricherNestedModelSpec.scala | 48 +++++++++++----------- 2 files changed, 34 insertions(+), 36 deletions(-) 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 29ec156..8ca93f2 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 @@ -36,7 +36,6 @@ import scala.collection.convert.DecorateAsScala import scala.collection.mutable.ArrayBuffer import scala.collection.{Map, Seq, mutable} - /** * Model elements enricher. */ @@ -501,10 +500,7 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala { mdl.elements.keys.map(k ⇒ k → mutable.ArrayBuffer.empty[Seq[Int]]) lazy val idlCache = mutable.HashSet.empty[Seq[Complex]] - var found = false - def add(typ: String, elm: NCElement, res: Seq[NlpToken], allToksIdxs: Seq[Int], s: Synonym, parts: Seq[TokType] = Seq.empty): Unit = { - found = true val resIdxs = res.map(_.index) val continuous = U.isContinuous(resIdxs.sorted) @@ -555,7 +551,7 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala { case _ ⇒ false } - found = false + var found = false // 1.1 Continuous. if (simpleEnabled) @@ -563,14 +559,18 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala { case Some(h) ⇒ def tryMap(syns: Map[String, Synonym], notFound: () ⇒ Unit): Unit = syns.get(tokStems) match { - case Some(s) ⇒ add("simple continuous", elm, toks, tokIdxs, s) + case Some(s) ⇒ + found = true + add("simple continuous", elm, toks, tokIdxs, s) case None ⇒ notFound() } def tryScan(syns: Seq[Synonym]): Unit = for (s ← syns if !found) - if (s.isMatch(toks)) + if (s.isMatch(toks)) { + found = true add("simple continuous scan", elm, toks, tokIdxs, s) + } tryMap( h.txtDirectSynonyms, @@ -585,8 +585,8 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala { } // 1.2 Sparse. - if (simpleEnabled && !found) - for (s ← get(mdl.sparseSynonyms, elemId) if !found) + if (simpleEnabled) + for (s ← get(mdl.sparseSynonyms, elemId)) s.sparseMatch(toks) match { case Some(res) ⇒ add("simple sparse", elm, res, tokIdxs, s) case None ⇒ // No-op. @@ -594,11 +594,9 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala { // 2. IDL. if (state != SIMPLE && mdl.hasIdlSynonyms) { - found = false - // 2.1 Sparse. if (mdl.hasIdlSynonyms) - for (s ← get(mdl.idlSynonyms, elemId); comb ← idlCombs if !found) + for (s ← get(mdl.idlSynonyms, elemId); comb ← idlCombs) s.idlMatch(comb.map(_.data), req) match { case Some(res) ⇒ val typ = if (s.sparse) "IDL sparse" else "IDL continuous" diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCEnricherNestedModelSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCEnricherNestedModelSpec.scala index 00ee50f..91d037b 100644 --- a/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCEnricherNestedModelSpec.scala +++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCEnricherNestedModelSpec.scala @@ -79,34 +79,34 @@ class NCEnricherNestedModelSpec2 extends NCEnricherNestedModelSpec1 { @Test def test2(): Unit = runBatch( -// _ ⇒ checkExists( -// "test tomorrow", -// usr(text = "test tomorrow", id = "x3") -// ), -// _ ⇒ checkExists( -// "tomorrow test", -// usr(text = "tomorrow test", id = "x3") -// ), + _ ⇒ checkExists( + "test tomorrow", + usr(text = "test tomorrow", id = "x3") + ), + _ ⇒ checkExists( + "tomorrow test", + usr(text = "tomorrow test", id = "x3") + ), _ ⇒ checkExists( "test xxx tomorrow", usr(text = "test tomorrow", id = "x3"), nlp(text = "xxx"), ), -// _ ⇒ checkExists( -// "y the y", -// usr(text = "y y", id = "y3"), -// nlp(text = "the", isStop = true) -// ), -// _ ⇒ checkExists( -// "y xxx y", -// usr(text = "y y", id = "y3"), -// nlp(text = "xxx") -// ), -// _ ⇒ checkExists( -// "aaa y xxx y", -// nlp(text = "aaa"), -// usr(text = "y y", id = "y3"), -// nlp(text = "xxx") -// ) + _ ⇒ checkExists( + "y the y", + usr(text = "y y", id = "y3"), + nlp(text = "the", isStop = true) + ), + _ ⇒ checkExists( + "y xxx y", + usr(text = "y y", id = "y3"), + nlp(text = "xxx") + ), + _ ⇒ checkExists( + "aaa y xxx y", + nlp(text = "aaa"), + usr(text = "y y", id = "y3"), + nlp(text = "xxx") + ) ) } \ No newline at end of file
