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

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


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

commit 6e9b25dd628793b50bc72993e578d219114cac41
Author: Sergey Kamov <skhdlem...@gmail.com>
AuthorDate: Thu Dec 30 19:54:11 2021 +0300

    WIP.
---
 .../parser/semantic/impl/NCSemanticDataReader.scala  | 20 +++++++++-----------
 .../semantic/impl/NCSemanticEntityParserImpl.scala   | 13 +++++--------
 2 files changed, 14 insertions(+), 19 deletions(-)

diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticDataReader.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticDataReader.scala
index 5125392..ed1fe00 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticDataReader.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticDataReader.scala
@@ -41,13 +41,12 @@ private[impl] object NCSemanticSourceType extends 
Enumeration:
 
         if lc.endsWith(".json") || lc.endsWith(".js") then JSON
         else if lc.endsWith(".yaml") || lc.endsWith(".yml") then YAML
-        else throw new NCException("Unexpected  data type. Expected `yaml` or 
`json` formats.") // TODO:
+        else throw new NCException("Unexpected  data type. Expected `yaml` or 
`json` formats.")
 
 /**
   *
   */
 private[impl] case class NCSemanticData(macros: Map[String, String], elements: 
Seq[NCSemanticElement])
-
 /**
   *
   */
@@ -59,19 +58,19 @@ private[impl] object NCSemanticDataReader:
     case class Source(macros: Map[String, String], elements: Seq[Element])
 
     private def nvl[T](seq: Seq[T]): JList[T] = if seq == null then null else 
seq.asJava
-    private def nvlConvert[T, R](seq: Seq[T], to: T => R): JList[R] = if seq 
== null then null else seq.map(to).asJava
-    private def convertValue(v: Value) =
+    private def nvl[T, R](seq: Seq[T], to: T => R): Seq[R] = if seq == null 
then null else seq.map(to)
+    private def convertValue(v: Value): NCSemanticElementValue =
         if v == null then null
         else new NCSemanticElementValue:
             override def getName: String = v.name
             override def getSynonyms: JList[String] = nvl(v.synonyms)
-    private def convertElement(e: Element) =
+    private def convertElement(e: Element): NCSemanticElement =
         if e == null then null
         else new NCSemanticElement:
             override def getId: String = e.id
             override def getGroups: JList[String] = nvl(e.groups)
             override def getDescription: String = e.description
-            override def getValues: JList[NCSemanticElementValue] = 
nvlConvert(e.values, convertValue)
+            override def getValues: JList[NCSemanticElementValue] = 
nvl(e.values, convertValue).asJava
             override def getSynonyms: JList[String] = nvl(e.synonyms)
 
     /**
@@ -87,11 +86,10 @@ private[impl] object NCSemanticDataReader:
                 case YAML => new ObjectMapper(new YAMLFactory())
                 case _ => throw new AssertionError(s"Unexpected type: $typ")
 
-        mapper.
+        val src = mapper.
             registerModule(DefaultScalaModule).
             enable(JsonParser.Feature.ALLOW_COMMENTS).
-            configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true)
-
-        val src = mapper.readValue(is, classOf[Source])
+            configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true).
+            readValue(is, classOf[Source])
 
-        NCSemanticData(src.macros, if src.elements == null then null else 
src.elements.map(convertElement))
\ No newline at end of file
+        NCSemanticData(src.macros, nvl(src.elements, convertElement))
\ No newline at end of file
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticEntityParserImpl.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticEntityParserImpl.scala
index 2540ec1..2169f40 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticEntityParserImpl.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticEntityParserImpl.scala
@@ -143,7 +143,7 @@ class NCSemanticEntityParserImpl(
 
     override def start(cfg: NCModelConfig): Unit =
         val (macros, elements) =
-            if (is != null)
+            if is != null then
                 val src = NCSemanticDataReader.read(is, typ)
                 (src.macros, src.elements)
             else
@@ -180,14 +180,11 @@ class NCSemanticEntityParserImpl(
                                     s.chunks.zip(variant).
                                         sortBy { case (chunk, _) => if 
chunk.isText then 0 else 1 }.
                                         forall { case (chunk, tok) =>
-                                            if chunk.isText then
-                                                chunk.stem == tok.getStem
-                                            else
-                                                def match0(txt: String) = 
chunk.regex.matcher(txt).matches()
+                                            def match0(txt: String) = 
chunk.regex.matcher(txt).matches()
 
-                                                match0(tok.getText) || 
match0(tok.getText.toLowerCase)
+                                            if chunk.isText then chunk.stem == 
tok.getStem
+                                            else match0(tok.getText) || 
match0(tok.getText.toLowerCase)
                                         }
-                                if (found)
-                                    addEntity(elemId)
+                                if found then addEntity(elemId)
 
         ents.toSeq.asJava
\ No newline at end of file

Reply via email to