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 <[email protected]>
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