You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by se...@apache.org on 2022/06/20 10:16:29 UTC
[incubator-nlpcraft] 02/02: Scala initial version fixes.
This is an automated email from the ASF dual-hosted git repository.
sergeykamov pushed a commit to branch scala
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
commit 11c764543bbaf3788cadccc35ab73cb82c5a3678
Author: Sergey Kamov <sk...@gmail.com>
AuthorDate: Mon Jun 20 13:16:18 2022 +0300
Scala initial version fixes.
---
.../scala/org/apache/nlpcraft/NCCallbackData.scala | 17 ++++++++
.../scala/org/apache/nlpcraft/NCIntentMatch.scala | 3 ++
.../scala/org/apache/nlpcraft/NCModelAdapter.scala | 9 +++-
.../scala/org/apache/nlpcraft/NCModelConfig.scala | 13 ++++++
.../scala/org/apache/nlpcraft/NCPipeline.scala | 23 ++++++++++-
.../org/apache/nlpcraft/NCPipelineBuilder.scala | 15 +++----
.../org/apache/nlpcraft/NCPropertyMapAdapter.scala | 19 +++++----
.../main/scala/org/apache/nlpcraft/NCResult.scala | 9 ++++
.../org/apache/nlpcraft/NCTokenEnricher.scala | 6 +++
.../scala/org/apache/nlpcraft/NCTokenParser.scala | 5 +++
.../org/apache/nlpcraft/NCTokenValidator.scala | 6 +++
.../main/scala/org/apache/nlpcraft/NCVariant.scala | 3 +-
.../org/apache/nlpcraft/NCVariantFilter.scala | 8 +++-
.../nlp/entity/parser/NCNLPEntityParser.scala | 3 +-
.../nlp/entity/parser/NCOpenNLPEntityParser.scala | 3 ++
.../entity/parser/semantic/NCSemanticElement.scala | 26 ++++++++++++
.../parser/semantic/NCSemanticEntityParser.scala | 48 ++++++++++++++++------
.../entity/parser/semantic/NCSemanticStemmer.scala | 8 ++++
.../parser/semantic/impl/NCSemanticSynonym.scala | 4 +-
.../enricher/NCOpenNLPLemmaPosTokenEnricher.scala | 5 ++-
.../semantic/NCSemanticEntityParserLemmaSpec.scala | 2 +-
.../org/apache/nlpcraft/nlp/util/NCTestUtils.scala | 12 +++---
22 files changed, 200 insertions(+), 47 deletions(-)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCCallbackData.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCCallbackData.scala
index 2bc38c0b..cb09c81c 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCCallbackData.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCCallbackData.scala
@@ -17,7 +17,24 @@
package org.apache.nlpcraft
+/**
+ *
+ */
trait NCCallbackData:
+ /**
+ *
+ * @return
+ */
def getIntentId: String
+
+ /**
+ *
+ * @return
+ */
def getCallbackArguments: List[List[NCEntity]]
+
+ /**
+ *
+ * @return
+ */
def getCallback: List[List[NCEntity]] => NCResult
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentMatch.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentMatch.scala
index 855de21e..b4b729ec 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentMatch.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentMatch.scala
@@ -17,6 +17,9 @@
package org.apache.nlpcraft
+/**
+ *
+ */
trait NCIntentMatch:
/**
* Gets ID of the matched intent.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelAdapter.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelAdapter.scala
index fa9adf99..e9f19729 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelAdapter.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelAdapter.scala
@@ -17,6 +17,11 @@
package org.apache.nlpcraft
+/**
+ *
+ * @param cfg
+ * @param pipeline
+ */
class NCModelAdapter(cfg: NCModelConfig, pipeline: NCPipeline) extends NCModel:
- def getConfig: NCModelConfig = cfg
- def getPipeline: NCPipeline = pipeline
+ override def getConfig: NCModelConfig = cfg
+ override def getPipeline: NCPipeline = pipeline
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.scala
index e49fe348..c1926e74 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.scala
@@ -20,6 +20,9 @@ package org.apache.nlpcraft
import java.time.Duration
+/**
+ *
+ */
object NCModelConfig:
val DFLT_CONV_TIMEOUT: Long = Duration.ofMinutes(60).toMillis
val DFLT_CONV_DEPTH = 3
@@ -28,6 +31,16 @@ object NCModelConfig:
def apply(id: String, name: String, version: String, description: String, origin: String) = new NCModelConfig(id, name, version, description, origin)
import org.apache.nlpcraft.NCModelConfig.*
+/**
+ *
+ * @param id
+ * @param name
+ * @param version
+ * @param description
+ * @param origin
+ * @param conversationTimeout
+ * @param conversationDepth
+ */
case class NCModelConfig(
id: String,
name: String,
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPipeline.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPipeline.scala
index 055fb654..5b762ab6 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPipeline.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPipeline.scala
@@ -63,18 +63,39 @@ trait NCPipeline:
* @return */
def getEntityParsers: List[NCEntityParser]
+ /**
+ *
+ * @return
+ */
def getTokenEnrichers: List[NCTokenEnricher] = List.empty
+ /**
+ *
+ * @return
+ */
def getEntityEnrichers: List[NCEntityEnricher] = List.empty
+ /**
+ *
+ * @return
+ */
def getTokenValidators: List[NCTokenValidator] = List.empty
+ /**
+ *
+ * @return
+ */
def getEntityValidators: List[NCEntityValidator] = List.empty
+ /**
+ *
+ * @return
+ */
def getVariantFilter: Option[NCVariantFilter] = None
/**
* Gets optional list of entity mappers.
*
- * @return Optional list of entity mappers. Can be empty but never {@code null}. */
+ * @return Optional list of entity mappers. Can be empty but never {@code null}.
+ */
def getEntityMappers: List[NCEntityMapper] = List.empty
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPipelineBuilder.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPipelineBuilder.scala
index 2026ae07..f12229e8 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPipelineBuilder.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPipelineBuilder.scala
@@ -193,7 +193,7 @@ class NCPipelineBuilder:
lang.toUpperCase match
case "EN" =>
setEnComponents()
- this.entParsers += new NCSemanticEntityParser(mkEnStemmer, mkEnOpenNLPTokenParser, macros, elms)
+ this.entParsers += NCSemanticEntityParser(mkEnStemmer, mkEnOpenNLPTokenParser, macros, elms)
case _ => throw new IllegalArgumentException("Unsupported language: " + lang)
this
@@ -207,16 +207,17 @@ class NCPipelineBuilder:
/**
*
* @param lang
- * @param src
- * @return */
- def withSemantic(lang: String, src: String): NCPipelineBuilder =
+ * @param mdlSrc
+ * @return
+ */
+ def withSemantic(lang: String, mdlSrc: String): NCPipelineBuilder =
Objects.requireNonNull(lang, "Language cannot be null.")
- Objects.requireNonNull(src, "Model source cannot be null.")
+ Objects.requireNonNull(mdlSrc, "Model source cannot be null.")
lang.toUpperCase match
case "EN" =>
setEnComponents()
- this.entParsers += new NCSemanticEntityParser(mkEnStemmer, mkEnOpenNLPTokenParser, mdlSrc = src)
- case _ => throw new IllegalArgumentException("Unsupported language: " + lang)
+ this.entParsers += NCSemanticEntityParser(mkEnStemmer, mkEnOpenNLPTokenParser, mdlSrc)
+ case _ => throw new IllegalArgumentException(s"Unsupported language: $lang")
this
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPropertyMapAdapter.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPropertyMapAdapter.scala
index 3a05cec8..1c8c8e86 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPropertyMapAdapter.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPropertyMapAdapter.scala
@@ -26,23 +26,24 @@ class NCPropertyMapAdapter extends NCPropertyMap:
private val map = new ConcurrentHashMap[String, Any]
// TODO: or error?
- def get[T](key: String): T = getOpt(key).orNull.asInstanceOf[T]
- def getOpt[T](key: String): Option[T] =
+ override def get[T](key: String): T = getOpt(key).orNull.asInstanceOf[T]
+
+ override def getOpt[T](key: String): Option[T] =
map.get(key) match
case null => None
case x => Some(x.asInstanceOf[T])
- def put[T](key: String, obj: Any): T = map.put(key, obj).asInstanceOf[T]
+ override def put[T](key: String, obj: Any): T = map.put(key, obj).asInstanceOf[T]
- def putIfAbsent[T](key: String, obj: T): T = map.putIfAbsent(key, obj).asInstanceOf[T]
+ override def putIfAbsent[T](key: String, obj: T): T = map.putIfAbsent(key, obj).asInstanceOf[T]
- def contains(key: String): Boolean = map.containsKey(key)
+ override def contains(key: String): Boolean = map.containsKey(key)
- def remove[T](key: String): T = map.remove(key).asInstanceOf[T]
+ override def remove[T](key: String): T = map.remove(key).asInstanceOf[T]
- def remove(key: String, obj: Any): Boolean = map.remove(key, obj)
+ override def remove(key: String, obj: Any): Boolean = map.remove(key, obj)
- def keysSet = map.keys().asScala.toSet
+ override def keysSet = map.keys().asScala.toSet
- def clear(): Unit = map.clear()
+ override def clear(): Unit = map.clear()
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCResult.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCResult.scala
index f65048a2..83826c4a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCResult.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCResult.scala
@@ -19,9 +19,18 @@ package org.apache.nlpcraft
import org.apache.nlpcraft.NCResultType.*
+/**
+ *
+ */
object NCResult:
def apply(): NCResult = new NCResult(body = null, resultType = null, intentId = null)
def apply(body: Any, resultType: NCResultType): NCResult = new NCResult(body = body, resultType = resultType, intentId = null)
def apply(body: Any, resultType: NCResultType, intentId: String): NCResult = new NCResult(body = body, resultType =resultType, intentId)
+/**
+ *
+ * @param body
+ * @param resultType
+ * @param intentId
+ */
case class NCResult(body: Any, resultType: NCResultType, intentId: String)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenEnricher.scala
index de5fcfa3..f9d4739b 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenEnricher.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenEnricher.scala
@@ -29,4 +29,10 @@ package org.apache.nlpcraft
* @see NCEntityValidator
* @see NCEntityMapper */
trait NCTokenEnricher extends NCLifecycle:
+ /**
+ *
+ * @param req
+ * @param cfg
+ * @param toks
+ */
def enrich(req: NCRequest, cfg: NCModelConfig, toks: List[NCToken]): Unit
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenParser.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenParser.scala
index 1679da5d..9ce8d495 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenParser.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenParser.scala
@@ -33,4 +33,9 @@ package org.apache.nlpcraft
* @see NCEntityValidator
* @see NCEntityMapper */
trait NCTokenParser:
+ /**
+ *
+ * @param text
+ * @return
+ */
def tokenize(text: String): List[NCToken]
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenValidator.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenValidator.scala
index 49185a0d..388352bd 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenValidator.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenValidator.scala
@@ -29,6 +29,12 @@ package org.apache.nlpcraft
* @see NCEntityValidator
* @see NCEntityMapper */
trait NCTokenValidator extends NCLifecycle:
+ /**
+ *
+ * @param req
+ * @param cfg
+ * @param toks
+ */
def validate(req: NCRequest, cfg: NCModelConfig, toks: List[NCToken]): Unit
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCVariant.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCVariant.scala
index 3fa27cc2..68b509f9 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCVariant.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCVariant.scala
@@ -27,5 +27,6 @@ trait NCVariant:
/**
* Gets the list of entities for this variant.
*
- * @return List of entities for this variant. Can be empty but never {@code null}. */
+ * @return List of entities for this variant. Can be empty but never {@code null}.
+ */
def getEntities: List[NCEntity]
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCVariantFilter.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCVariantFilter.scala
index 755b9524..1de2c157 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCVariantFilter.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCVariantFilter.scala
@@ -17,9 +17,15 @@
package org.apache.nlpcraft
+/**
+ *
+ */
trait NCVariantFilter extends NCLifecycle:
/**
+ *
* @param req
* @param cfg
- * @param vars */
+ * @param vars
+ * @return
+ */
def filter(req: NCRequest, cfg: NCModelConfig, vars: List[NCVariant]): List[NCVariant]
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/NCNLPEntityParser.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/NCNLPEntityParser.scala
index 7a046cf7..b809a57a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/NCNLPEntityParser.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/NCNLPEntityParser.scala
@@ -28,7 +28,8 @@ import java.util.stream.Collectors
object NCNLPEntityParser:
private def id = "nlp:token"
-import org.apache.nlpcraft.nlp.entity.parser.NCNLPEntityParser.*
+import NCNLPEntityParser.*
+
/**
*
*/
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/NCOpenNLPEntityParser.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/NCOpenNLPEntityParser.scala
index c2bf53bb..0462b8aa 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/NCOpenNLPEntityParser.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/NCOpenNLPEntityParser.scala
@@ -32,6 +32,9 @@ import scala.jdk.CollectionConverters.*
import scala.language.postfixOps
import scala.util.Using
+/**
+ *
+ */
object NCOpenNLPEntityParser:
def apply(src: String): NCOpenNLPEntityParser =
Objects.requireNonNull(src, "Model source cannot be null.")
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticElement.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticElement.scala
index 28480f24..f27c6866 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticElement.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticElement.scala
@@ -16,10 +16,36 @@
*/
package org.apache.nlpcraft.nlp.entity.parser.semantic
+/**
+ *
+ */
trait NCSemanticElement:
+ /**
+ *
+ * @return
+ */
def getId: String
+
+ /**
+ *
+ * @return
+ */
def getGroups: Set[String] = Set(getId)
+
+ /**
+ *
+ * @return
+ */
def getValues: Map[String, Set[String]] = Map.empty
+
+ /**
+ *
+ * @return
+ */
def getSynonyms: Set[String] = Set.empty
+ /**
+ *
+ * @return
+ */
def getProperties: Map[String, AnyRef] = Map.empty
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParser.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParser.scala
index da2eebd6..29dc62da 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParser.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParser.scala
@@ -40,30 +40,53 @@ object NCSemanticEntityParser:
* @param stemmer
* @param parser
* @param macros
- * @param elms
+ * @param elements
* @return
*/
def apply(
stemmer: NCSemanticStemmer,
parser: NCTokenParser,
macros: Map[String, String],
- elms: List[NCSemanticElement]
+ elements: List[NCSemanticElement]
): NCSemanticEntityParser =
- require(elms != null)
+ Objects.requireNonNull(stemmer, "Stemmer cannot be null.")
+ Objects.requireNonNull(parser, "Parser cannot be null.")
+ Objects.requireNonNull(macros, "Macros cannot be null.")
+ Objects.requireNonNull(elements, "Elements cannot be null.")
- new NCSemanticEntityParser(stemmer, parser, macros = macros, elements = elms)
+ new NCSemanticEntityParser(stemmer, parser, macros = macros, elements = elements)
/**
*
* @param stemmer
* @param parser
- * @param src
+ * @param elements
* @return
*/
- def apply(stemmer: NCSemanticStemmer, parser: NCTokenParser, src: String): NCSemanticEntityParser =
- require(src != null)
+ def apply(
+ stemmer: NCSemanticStemmer,
+ parser: NCTokenParser,
+ elements: List[NCSemanticElement]
+ ): NCSemanticEntityParser =
+ Objects.requireNonNull(stemmer, "Stemmer cannot be null.")
+ Objects.requireNonNull(parser, "Parser cannot be null.")
+ Objects.requireNonNull(elements, "Elements cannot be null.")
- new NCSemanticEntityParser(stemmer, parser, mdlSrc = src)
+ new NCSemanticEntityParser(stemmer, parser, macros = Map.empty, elements = elements)
+
+ /**
+ *
+ * @param stemmer
+ * @param parser
+ * @param mdlSrc
+ * @return
+ */
+ def apply(stemmer: NCSemanticStemmer, parser: NCTokenParser, mdlSrc: String): NCSemanticEntityParser =
+ Objects.requireNonNull(stemmer, "Stemmer cannot be null.")
+ Objects.requireNonNull(parser, "Parser cannot be null.")
+ Objects.requireNonNull(mdlSrc, "Model source cannot be null.")
+
+ new NCSemanticEntityParser(stemmer, parser, mdlSrc = mdlSrc)
/**
* @param baseTokens Tokens.
@@ -168,11 +191,10 @@ class NCSemanticEntityParser(
elements: List[NCSemanticElement] = List.empty,
mdlSrc: String = null
) extends NCEntityParser with LazyLogging:
- Objects.requireNonNull(stemmer, "Stemmer cannot be null.")
- Objects.requireNonNull(parser, "Parser cannot be null.")
-
- // TODO: exception.
- require(elements != null && elements.nonEmpty || mdlSrc != null && mdlSrc.nonEmpty)
+ require(stemmer != null)
+ require(parser != null)
+ require(macros != null)
+ require(elements != null && elements.nonEmpty || mdlSrc != null)
private val scrType = if mdlSrc != null then NCSemanticSourceType.detect(mdlSrc) else null
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticStemmer.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticStemmer.scala
index eb36e688..7fa335cf 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticStemmer.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticStemmer.scala
@@ -16,5 +16,13 @@
*/
package org.apache.nlpcraft.nlp.entity.parser.semantic
+/**
+ *
+ */
trait NCSemanticStemmer:
+ /**
+ *
+ * @param txt
+ * @return
+ */
def stem(txt: String): String
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticSynonym.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticSynonym.scala
index 9ead7345..bb8aeb6d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticSynonym.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/impl/NCSemanticSynonym.scala
@@ -49,9 +49,7 @@ private[impl] case class NCSemanticSynonymChunk(
* @param chunks
* @param value
*/
-private[impl] case class NCSemanticSynonym(
- chunks: Seq[NCSemanticSynonymChunk], value: String = null
-) extends Comparable[NCSemanticSynonym]:
+private[impl] case class NCSemanticSynonym(chunks: Seq[NCSemanticSynonymChunk], value: String = null) extends Comparable[NCSemanticSynonym]:
require(chunks != null)
require(chunks.nonEmpty)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/token/enricher/NCOpenNLPLemmaPosTokenEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/token/enricher/NCOpenNLPLemmaPosTokenEnricher.scala
index eccd8095..ed4adb2d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/token/enricher/NCOpenNLPLemmaPosTokenEnricher.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/token/enricher/NCOpenNLPLemmaPosTokenEnricher.scala
@@ -34,7 +34,7 @@ import scala.concurrent.ExecutionContext
* - tagger: http://opennlp.sourceforge.net/models-1.5/en-pos-maxent.bin
* - lemmatizer: https://raw.githubusercontent.com/richardwilly98/elasticsearch-opennlp-auto-tagging/master/src/main/resources/models/en-lemmatizer.dict
*/
-class NCOpenNLPLemmaPosTokenEnricher(posMdlSrc: String, lemmaDicSrc: String) extends NCTokenEnricher with LazyLogging:
+class NCOpenNLPLemmaPosTokenEnricher(posMdlSrc: String = null, lemmaDicSrc: String = null) extends NCTokenEnricher with LazyLogging:
private var tagger: POSTaggerME = _
private var lemmatizer: DictionaryLemmatizer = _
@@ -47,11 +47,13 @@ class NCOpenNLPLemmaPosTokenEnricher(posMdlSrc: String, lemmaDicSrc: String) ext
if posMdlSrc != null then
tagger = new POSTaggerME(new POSModel(NCUtils.getStream(posMdlSrc)))
logger.trace(s"Loaded resource: $posMdlSrc")
+ else logger.warn("POS tagger is not configured.")
},
() => {
if lemmaDicSrc != null then
lemmatizer = new DictionaryLemmatizer(NCUtils.getStream(lemmaDicSrc))
logger.trace(s"Loaded resource: $lemmaDicSrc")
+ else logger.warn("Lemmatizer is not configured.")
}
)
)(ExecutionContext.Implicits.global)
@@ -87,4 +89,3 @@ class NCOpenNLPLemmaPosTokenEnricher(posMdlSrc: String, lemmaDicSrc: String) ext
() // Otherwise - NPE.
}
}
-
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserLemmaSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserLemmaSpec.scala
index 43a70e03..ff778fa2 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserLemmaSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserLemmaSpec.scala
@@ -68,7 +68,7 @@ class NCSemanticEntityParserLemmaSpec:
toks.foreach(t => t.put("lemma", wrap(t.get[String]("lemma"))))
).
// 2. Semantic parser with fixed stemmer which stems only lemmas.
- withEntityParser(new NCSemanticEntityParser(lemmaStemmer, EN_TOK_PARSER, elements = elems)).
+ withEntityParser(NCSemanticEntityParser(lemmaStemmer, EN_TOK_PARSER, elems)).
build
)
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestUtils.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestUtils.scala
index a816b439..95339821 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestUtils.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestUtils.scala
@@ -137,8 +137,8 @@ object NCTestUtils:
* @param macros
* @return
*/
- def mkEnSemanticParser(elms: List[NCSemanticElement], macros: Map[String, String] = null): NCSemanticEntityParser =
- new NCSemanticEntityParser(mkSemanticStemmer, EN_TOK_PARSER, macros, elms)
+ def mkEnSemanticParser(elms: List[NCSemanticElement], macros: Map[String, String] = Map.empty): NCSemanticEntityParser =
+ NCSemanticEntityParser(mkSemanticStemmer, EN_TOK_PARSER, macros, elms)
/**
*
@@ -146,12 +146,12 @@ object NCTestUtils:
* @return
*/
def mkEnSemanticParser(elms: NCSemanticElement*): NCSemanticEntityParser =
- new NCSemanticEntityParser(mkSemanticStemmer, EN_TOK_PARSER, null, elms.toList)
+ NCSemanticEntityParser(mkSemanticStemmer, EN_TOK_PARSER, elms.toList)
/**
*
- * @param src
+ * @param mdlSrc
* @return
*/
- def mkEnSemanticParser(src: String): NCSemanticEntityParser =
- new NCSemanticEntityParser(mkSemanticStemmer, EN_TOK_PARSER, mdlSrc = src)
\ No newline at end of file
+ def mkEnSemanticParser(mdlSrc: String): NCSemanticEntityParser =
+ NCSemanticEntityParser(mkSemanticStemmer, EN_TOK_PARSER, mdlSrc)
\ No newline at end of file