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