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/03/02 17:07:27 UTC

[incubator-nlpcraft] branch NLPCRAFT-483-1 created (now 5a25ada)

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

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


      at 5a25ada  WIP.

This branch includes the following new commits:

     new 5a25ada  WIP.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[incubator-nlpcraft] 01/01: WIP.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 5a25ada2d1b93102c65e96aa20ff94ecf7021ac9
Author: Sergey Kamov <sk...@gmail.com>
AuthorDate: Wed Mar 2 20:05:01 2022 +0300

    WIP.
---
 .../nlpcraft/examples/lightswitch/LightSwitchRuModel.scala |  5 ++---
 .../entity/parser/semantic/NCRuSemanticEntityParser.scala  |  2 +-
 .../examples/lightswitch/LightSwitchGroovyModel.groovy     |  2 +-
 .../examples/lightswitch/LightSwitchJavaModel.java         |  3 ++-
 .../examples/lightswitch/LightSwitchKotlinModel.kt         |  2 +-
 .../examples/lightswitch/LightSwitchScalaModel.scala       |  7 +++----
 .../java/org/apache/nlpcraft/examples/time/TimeModel.java  |  2 +-
 nlpcraft/src/main/scala/org/apache/nlpcraft/NCContext.java |  3 ++-
 nlpcraft/src/main/scala/org/apache/nlpcraft/NCEntity.java  |  4 +++-
 .../main/scala/org/apache/nlpcraft/NCEntityEnricher.java   |  2 +-
 nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntent.java  | 11 ++++++++---
 .../src/main/scala/org/apache/nlpcraft/NCIntentRef.java    |  6 +++++-
 .../src/main/scala/org/apache/nlpcraft/NCIntentSample.java |  7 ++++++-
 .../src/main/scala/org/apache/nlpcraft/NCIntentTerm.java   |  8 +++++---
 .../src/main/scala/org/apache/nlpcraft/NCModelConfig.java  |  2 +-
 .../scala/org/apache/nlpcraft/NCModelPipelineBuilder.java  | 12 ++++++++----
 .../src/main/scala/org/apache/nlpcraft/NCPropertyMap.java  |  3 ++-
 nlpcraft/src/main/scala/org/apache/nlpcraft/NCRequest.java |  2 +-
 .../main/scala/org/apache/nlpcraft/NCTokenEnricher.java    |  2 +-
 .../org/apache/nlpcraft/internal/ascii/NCAsciiTable.scala  |  6 +++---
 .../internal/conversation/NCConversationData.scala         |  7 +++----
 .../nlpcraft/internal/dialogflow/NCDialogFlowManager.scala |  6 ++----
 .../apache/nlpcraft/internal/impl/NCModelClientImpl.scala  |  3 +--
 .../nlpcraft/internal/impl/NCModelPipelineManager.scala    |  2 +-
 .../org/apache/nlpcraft/internal/intent/NCIDLEntity.scala  |  1 +
 .../apache/nlpcraft/internal/util/NCResourceReader.scala   | 14 +++++++-------
 .../org/apache/nlpcraft/internal/version/NCVersion.scala   |  3 ++-
 .../parser/{semantic => }/NCEnSemanticEntityParser.java    | 10 +++++-----
 ...Enricher.java => NCENOpenNlpLemmaPosTokenEnricher.java} |  6 +++---
 .../enricher/impl/NCENStopWordsTokenEnricherImpl.scala     |  8 ++++----
 .../token/parser/{opennlp => }/NCENOpenNLPTokenParser.java |  4 ++--
 .../mult/entity/parser/{nlp => }/NCNLPEntityParser.java    |  4 ++--
 .../entity/parser/{opennlp => }/NCOpenNLPEntityParser.java | 11 ++++++++---
 .../entity/parser/{semantic => }/NCSemanticElement.java    |  6 ++++--
 .../parser/{semantic => }/NCSemanticEntityParser.java      | 12 +++++++++---
 .../entity/parser/{semantic => }/NCSemanticStemmer.java    |  2 +-
 .../parser/{nlp => }/impl/NCNLPEntityParserImpl.scala      |  4 ++--
 .../{opennlp => }/impl/NCOpenNLPEntityParserImpl.scala     |  2 +-
 .../{semantic => }/impl/NCSemanticEntityParserImpl.scala   | 10 +++++-----
 .../{semantic => }/impl/NCSemanticSourceReader.scala       |  6 +++---
 .../parser/{semantic => }/impl/NCSemanticSynonym.scala     |  4 ++--
 .../{semantic => }/impl/NCSemanticSynonymsProcessor.scala  |  6 +++---
 ...enEnricher.java => NCOpenNlpLemmaPosTokenEnricher.java} |  8 ++++----
 .../{opennlp => }/impl/NCLemmaPosTokenEnricherImpl.scala   |  2 +-
 .../token/parser/{opennlp => }/NCOpenNLPTokenParser.java   |  4 ++--
 .../{opennlp => }/impl/NCOpenNLPTokenParserImpl.scala      |  2 +-
 .../nlpcraft/internal/impl/NCModelCallbacksSpec.scala      |  4 ++--
 .../apache/nlpcraft/internal/impl/NCModelClientSpec.scala  |  4 ++--
 .../nlpcraft/internal/impl/NCModelPingPongSpec.scala       |  7 +++----
 .../internal/impl/NCModelPipelineManagerSpec.scala         |  6 +++---
 .../org/apache/nlpcraft/nlp/NCENDefaultPipelineSpec.scala  |  4 ++--
 .../parser/opennlp/NCEnOpenNlpTokenParserBenchmark.java    |  2 +-
 .../nlp/entity/parser/nlp/NCNLPEntityParserSpec.scala      |  3 +--
 .../entity/parser/opennlp/NCOpenNLPEntityParserSpec.scala  |  4 ++--
 .../parser/semantic/NCSemanticEntityParserJsonSpec.scala   |  7 +++----
 .../parser/semantic/NCSemanticEntityParserSpec.scala       | 11 +++++------
 .../parser/semantic/NCSemanticEntityParserYamlSpec.scala   |  5 ++---
 .../token/enricher/en/NCDictionaryTokenEnricherSpec.scala  |  4 ++--
 .../nlp/token/enricher/en/NCQuotesTokenEnricherSpec.scala  |  4 ++--
 .../nlp/token/enricher/en/NCStopWordsEnricherSpec.scala    |  2 +-
 .../token/parser/opennlp/NCOpenNLPTokenParserSpec.scala    |  4 ++--
 .../org/apache/nlpcraft/nlp/util/NCTestPipeline.scala      |  2 +-
 .../apache/nlpcraft/nlp/util/opennlp/NCTestConfig.scala    |  2 +-
 .../apache/nlpcraft/nlp/util/opennlp/NCTestConfigJava.java |  2 +-
 64 files changed, 172 insertions(+), 143 deletions(-)

diff --git a/nlpcraft-examples/lightswitch-ru/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchRuModel.scala b/nlpcraft-examples/lightswitch-ru/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchRuModel.scala
index 018002e..c11fd12 100644
--- a/nlpcraft-examples/lightswitch-ru/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchRuModel.scala
+++ b/nlpcraft-examples/lightswitch-ru/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchRuModel.scala
@@ -22,9 +22,8 @@ import org.apache.nlpcraft.examples.lightswitch.nlp.entity.parser.semantic.NCRuS
 import org.apache.nlpcraft.examples.lightswitch.nlp.token.enricher.{NCRuLemmaPosTokenEnricher, NCRuStopWordsTokenEnricher}
 import org.apache.nlpcraft.examples.lightswitch.nlp.token.parser.NCRuTokenParser
 import org.apache.nlpcraft.nlp.en.token.enricher.NCENStopWordsTokenEnricher
-import org.apache.nlpcraft.nlp.mult.entity.parser.nlp.NCNLPEntityParser
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticEntityParser
-import org.apache.nlpcraft.nlp.mult.token.parser.opennlp.NCOpenNLPTokenParser
+import org.apache.nlpcraft.nlp.mult.entity.parser.{NCNLPEntityParser, NCSemanticEntityParser}
+import org.apache.nlpcraft.nlp.mult.token.parser.NCOpenNLPTokenParser
 
 import java.util
 import scala.jdk.CollectionConverters.*
diff --git a/nlpcraft-examples/lightswitch-ru/src/main/java/org/apache/nlpcraft/examples/lightswitch/nlp/entity/parser/semantic/NCRuSemanticEntityParser.scala b/nlpcraft-examples/lightswitch-ru/src/main/java/org/apache/nlpcraft/examples/lightswitch/nlp/entity/parser/semantic/NCRuSemanticEntityParser.scala
index d50bdf6..271d82e 100644
--- a/nlpcraft-examples/lightswitch-ru/src/main/java/org/apache/nlpcraft/examples/lightswitch/nlp/entity/parser/semantic/NCRuSemanticEntityParser.scala
+++ b/nlpcraft-examples/lightswitch-ru/src/main/java/org/apache/nlpcraft/examples/lightswitch/nlp/entity/parser/semantic/NCRuSemanticEntityParser.scala
@@ -19,7 +19,7 @@ package org.apache.nlpcraft.examples.lightswitch.nlp.entity.parser.semantic
 
 import opennlp.tools.stemmer.snowball.SnowballStemmer
 import org.apache.nlpcraft.examples.lightswitch.nlp.token.parser.NCRuTokenParser
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.{NCSemanticEntityParser, NCSemanticStemmer}
 
 /**
   *
diff --git a/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchGroovyModel.groovy b/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchGroovyModel.groovy
index 90dbb4e..38db9ad 100644
--- a/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchGroovyModel.groovy
+++ b/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchGroovyModel.groovy
@@ -18,7 +18,7 @@
 package org.apache.nlpcraft.examples.lightswitch
 
 import org.apache.nlpcraft.*
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.*;
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
 
 /**
  * This example provides very simple implementation for NLI-powered light switch.
diff --git a/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchJavaModel.java b/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchJavaModel.java
index 3050bed..97c6a0f 100644
--- a/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchJavaModel.java
+++ b/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchJavaModel.java
@@ -18,7 +18,8 @@
 package org.apache.nlpcraft.examples.lightswitch;
 
 import org.apache.nlpcraft.*;
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.*;
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser;
+
 import java.util.List;
 import java.util.stream.Collectors;
 
diff --git a/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchKotlinModel.kt b/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchKotlinModel.kt
index 10d41ea..a4248cf 100644
--- a/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchKotlinModel.kt
+++ b/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchKotlinModel.kt
@@ -19,7 +19,7 @@ package org.apache.nlpcraft.examples.lightswitch
 
 
 import org.apache.nlpcraft.*
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
 import java.util.*
 import java.util.stream.Collectors
 
diff --git a/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchScalaModel.scala b/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchScalaModel.scala
index 182d4c8..6ac21f3 100644
--- a/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchScalaModel.scala
+++ b/nlpcraft-examples/lightswitch/src/main/java/org/apache/nlpcraft/examples/lightswitch/LightSwitchScalaModel.scala
@@ -20,11 +20,10 @@ package org.apache.nlpcraft.examples.lightswitch
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.internal.util.NCResourceReader
 import org.apache.nlpcraft.nlp.*
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
 import org.apache.nlpcraft.nlp.en.token.enricher.NCENStopWordsTokenEnricher
-import org.apache.nlpcraft.nlp.mult.entity.parser.nlp.NCNLPEntityParser
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticEntityParser
-import org.apache.nlpcraft.nlp.mult.token.parser.opennlp.NCOpenNLPTokenParser
+import org.apache.nlpcraft.nlp.mult.entity.parser.{NCNLPEntityParser, NCSemanticEntityParser}
+import org.apache.nlpcraft.nlp.mult.token.parser.NCOpenNLPTokenParser
 
 /**
   * This example provides very simple implementation for NLI-powered light switch.
diff --git a/nlpcraft-examples/time/src/main/java/org/apache/nlpcraft/examples/time/TimeModel.java b/nlpcraft-examples/time/src/main/java/org/apache/nlpcraft/examples/time/TimeModel.java
index f477901..b1a43dc 100644
--- a/nlpcraft-examples/time/src/main/java/org/apache/nlpcraft/examples/time/TimeModel.java
+++ b/nlpcraft-examples/time/src/main/java/org/apache/nlpcraft/examples/time/TimeModel.java
@@ -38,7 +38,7 @@ import org.apache.nlpcraft.examples.time.utils.cities.City;
 import org.apache.nlpcraft.examples.time.utils.cities.CityData;
 import org.apache.nlpcraft.examples.time.utils.keycdn.GeoData;
 import org.apache.nlpcraft.examples.time.utils.keycdn.GeoManager;
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.NCEnSemanticEntityParser;
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser;
 
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCContext.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCContext.java
index 633f9a6..37ed3a4 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCContext.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCContext.java
@@ -17,7 +17,8 @@
 
 package org.apache.nlpcraft;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.List;
 
 /**
  *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCEntity.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCEntity.java
index c24b638..ce5fabf 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCEntity.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCEntity.java
@@ -17,7 +17,9 @@
 
 package org.apache.nlpcraft;
 
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCEntityEnricher.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCEntityEnricher.java
index 06a8d64..9ad2464 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCEntityEnricher.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCEntityEnricher.java
@@ -17,7 +17,7 @@
 
 package org.apache.nlpcraft;
 
-import java.util.*;
+import java.util.List;
 
 /**
  *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntent.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntent.java
index db3732d..5df1f0d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntent.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntent.java
@@ -17,10 +17,15 @@
 
 package org.apache.nlpcraft;
 
-import java.lang.annotation.*;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
 
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
  * Annotation to bind an intent with the method serving as its callback.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentRef.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentRef.java
index 4babf4b..68ee55b 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentRef.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentRef.java
@@ -17,7 +17,11 @@
 
 package org.apache.nlpcraft;
 
-import java.lang.annotation.*;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
 
 import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentSample.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentSample.java
index 18f334a..25b55bc 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentSample.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentSample.java
@@ -17,7 +17,12 @@
 
 package org.apache.nlpcraft;
 
-import java.lang.annotation.*;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
 import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentTerm.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentTerm.java
index 3fc68c1..fd4a6fd 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentTerm.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCIntentTerm.java
@@ -17,10 +17,12 @@
 
 package org.apache.nlpcraft;
 
-import java.lang.annotation.*;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
 
-import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.*;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
  * Annotation to mark callback parameter to receive intent term's tokens. 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.java
index dfd8f96..e872629 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelConfig.java
@@ -18,7 +18,7 @@
 package org.apache.nlpcraft;
 
 import java.time.Duration;
-import java.util.*;
+import java.util.Objects;
 
 /**
  *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelPipelineBuilder.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelPipelineBuilder.java
index b4eec06..02ac728 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelPipelineBuilder.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCModelPipelineBuilder.java
@@ -20,13 +20,17 @@ package org.apache.nlpcraft;
 import org.apache.nlpcraft.internal.util.NCResourceReader;
 import org.apache.nlpcraft.nlp.en.token.enricher.NCENBracketsTokenEnricher;
 import org.apache.nlpcraft.nlp.en.token.enricher.NCENDictionaryTokenEnricher;
-import org.apache.nlpcraft.nlp.en.token.enricher.NCENLemmaPosTokenEnricher;
+import org.apache.nlpcraft.nlp.en.token.enricher.NCENOpenNlpLemmaPosTokenEnricher;
 import org.apache.nlpcraft.nlp.en.token.enricher.NCENQuotesTokenEnricher;
 import org.apache.nlpcraft.nlp.en.token.enricher.NCENStopWordsTokenEnricher;
 import org.apache.nlpcraft.nlp.en.token.enricher.NСENSwearWordsTokenEnricher;
-import org.apache.nlpcraft.nlp.en.token.parser.opennlp.NCENOpenNLPTokenParser;
+import org.apache.nlpcraft.nlp.en.token.parser.NCENOpenNLPTokenParser;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
 
 /**
  *
@@ -79,7 +83,7 @@ public class NCModelPipelineBuilder {
 
         tokParser = new NCENOpenNLPTokenParser();
 
-        tokEnrichers.add(new NCENLemmaPosTokenEnricher());
+        tokEnrichers.add(new NCENOpenNlpLemmaPosTokenEnricher());
         tokEnrichers.add(new NCENStopWordsTokenEnricher());
         tokEnrichers.add(new NСENSwearWordsTokenEnricher(NCResourceReader.getPath("badfilter/swear_words.txt")));
         tokEnrichers.add(new NCENQuotesTokenEnricher());
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPropertyMap.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPropertyMap.java
index 25a29f1..bc2fba5 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPropertyMap.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCPropertyMap.java
@@ -17,7 +17,8 @@
 
 package org.apache.nlpcraft;
 
-import java.util.*;
+import java.util.Optional;
+import java.util.Set;
 
 /**
  *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCRequest.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCRequest.java
index 1a98655..9554d1d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCRequest.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCRequest.java
@@ -17,7 +17,7 @@
 
 package org.apache.nlpcraft;
 
-import java.util.*;
+import java.util.Map;
 
 /**
  * Information about the user request.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenEnricher.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenEnricher.java
index ab78f76..b849a24 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenEnricher.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCTokenEnricher.java
@@ -17,7 +17,7 @@
 
 package org.apache.nlpcraft;
 
-import java.util.*;
+import java.util.List;
 
 /**
  *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/ascii/NCAsciiTable.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/ascii/NCAsciiTable.scala
index 295cff3..2b5747a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/ascii/NCAsciiTable.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/ascii/NCAsciiTable.scala
@@ -17,13 +17,13 @@
 
 package org.apache.nlpcraft.internal.ascii
 
-import java.io.{IOException, PrintStream}
-import java.util.List as JList
 import com.typesafe.scalalogging.Logger
 import org.apache.nlpcraft.*
-import NCAsciiTable.*
+import org.apache.nlpcraft.internal.ascii.NCAsciiTable.*
 import org.apache.nlpcraft.internal.util.NCUtils
 
+import java.io.*
+import java.util.List as JList
 import scala.collection.mutable
 import scala.jdk.CollectionConverters.CollectionHasAsScala
 import scala.util.Using
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/conversation/NCConversationData.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/conversation/NCConversationData.scala
index d5354ea..88cc991 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/conversation/NCConversationData.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/conversation/NCConversationData.scala
@@ -17,15 +17,14 @@
 
 package org.apache.nlpcraft.internal.conversation
 
-import java.util
-import java.util.concurrent.ConcurrentHashMap
-import java.util.function.Predicate
-
 import com.typesafe.scalalogging.LazyLogging
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.internal.ascii.*
 import org.apache.nlpcraft.internal.util.*
 
+import java.util
+import java.util.concurrent.ConcurrentHashMap
+import java.util.function.Predicate
 import scala.collection.mutable
 import scala.jdk.CollectionConverters.*
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManager.scala
index 84fe89d..c4cb5f2 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/dialogflow/NCDialogFlowManager.scala
@@ -20,15 +20,13 @@ package org.apache.nlpcraft.internal.dialogflow
 import com.typesafe.scalalogging.LazyLogging
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.internal.ascii.NCAsciiTable
+import org.apache.nlpcraft.internal.util.NCUtils
 
 import java.text.DateFormat
+import java.time.format.DateTimeFormatter
 import java.util
 import java.util.*
 import scala.collection.*
-import com.typesafe.scalalogging.LazyLogging
-import org.apache.nlpcraft.internal.util.NCUtils
-
-import java.time.format.DateTimeFormatter
 
 /**
  * Dialog flow manager.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelClientImpl.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelClientImpl.scala
index 7c4f610..80fe197 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelClientImpl.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelClientImpl.scala
@@ -31,8 +31,7 @@ import java.util
 import java.util.concurrent.*
 import java.util.concurrent.atomic.*
 import java.util.function.*
-import java.util.{Collections as JColls, List as JList, Map as JMap}
-import java.util.*
+import java.util.{Collections as JColls, List as JList, Map as JMap, *}
 import scala.collection.*
 import scala.concurrent.ExecutionContext
 import scala.jdk.CollectionConverters.*
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManager.scala
index 1f3849e..9652d2c 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManager.scala
@@ -19,12 +19,12 @@ package org.apache.nlpcraft.internal.impl
 
 import com.typesafe.scalalogging.LazyLogging
 import org.apache.nlpcraft.internal.ascii.NCAsciiTable
-import org.apache.nlpcraft.{NCModelConfig, NCModelPipeline, *}
 import org.apache.nlpcraft.internal.conversation.*
 import org.apache.nlpcraft.internal.dialogflow.NCDialogFlowManager
 import org.apache.nlpcraft.internal.impl.*
 import org.apache.nlpcraft.internal.intent.matcher.*
 import org.apache.nlpcraft.internal.util.*
+import org.apache.nlpcraft.*
 
 import java.util
 import java.util.concurrent.*
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/NCIDLEntity.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/NCIDLEntity.scala
index 1cfbc7a..e41aaee 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/NCIDLEntity.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/intent/NCIDLEntity.scala
@@ -18,6 +18,7 @@
 package org.apache.nlpcraft.internal.intent
 
 import org.apache.nlpcraft.*
+
 import scala.jdk.CollectionConverters.*
 
 /**
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/util/NCResourceReader.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/util/NCResourceReader.scala
index 39d4b53..5089958 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/util/NCResourceReader.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/util/NCResourceReader.scala
@@ -17,18 +17,18 @@
 
 package org.apache.nlpcraft.internal.util
 
-import org.apache.nlpcraft.*
-import java.io.*
-import java.net.URL
-import scala.util.Using
-import scala.io.Source
 import com.typesafe.scalalogging.LazyLogging
-import org.apache.commons.io.IOUtils
 import org.apache.commons.codec.digest.DigestUtils
-import org.apache.nlpcraft.internal.util.NCUtils.{getClass, isResource}
+import org.apache.commons.io.IOUtils
+import org.apache.nlpcraft.*
+import org.apache.nlpcraft.internal.util.NCUtils.*
 
+import java.io.*
+import java.net.URL
 import java.nio.file.Files
 import scala.collection.immutable.Map
+import scala.io.Source
+import scala.util.Using
 
 /**
   * TODO: move it NCUtils?
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/version/NCVersion.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/version/NCVersion.scala
index 93b93ce..9e103da 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/version/NCVersion.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/version/NCVersion.scala
@@ -17,11 +17,12 @@
 
 package org.apache.nlpcraft.internal.version
 
-import java.time.*
 import com.typesafe.scalalogging.LazyLogging
 import org.apache.nlpcraft.internal.*
 import org.apache.nlpcraft.internal.util.NCUtils
 
+import java.time.*
+
 /**
   * Release version holder. Note that this is manually changing property. For every official
   * release the new version will be added to this object manually.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/entity/parser/semantic/NCEnSemanticEntityParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/entity/parser/NCEnSemanticEntityParser.java
similarity index 82%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/entity/parser/semantic/NCEnSemanticEntityParser.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/entity/parser/NCEnSemanticEntityParser.java
index e1dd5b0..1d64b69 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/entity/parser/semantic/NCEnSemanticEntityParser.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/entity/parser/NCEnSemanticEntityParser.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.en.entity.parser.semantic;
+package org.apache.nlpcraft.nlp.en.entity.parser;
 
 import opennlp.tools.stemmer.PorterStemmer;
 import org.apache.nlpcraft.NCTokenParser;
-import org.apache.nlpcraft.nlp.en.token.parser.opennlp.NCENOpenNLPTokenParser;
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticElement;
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticEntityParser;
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticStemmer;
+import org.apache.nlpcraft.nlp.en.token.parser.NCENOpenNLPTokenParser;
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCSemanticElement;
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCSemanticEntityParser;
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCSemanticStemmer;
 
 import java.util.List;
 import java.util.Map;
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/enricher/NCENLemmaPosTokenEnricher.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/enricher/NCENOpenNlpLemmaPosTokenEnricher.java
similarity index 87%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/enricher/NCENLemmaPosTokenEnricher.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/enricher/NCENOpenNlpLemmaPosTokenEnricher.java
index cf7cd7e..58eeb10 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/enricher/NCENLemmaPosTokenEnricher.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/enricher/NCENOpenNlpLemmaPosTokenEnricher.java
@@ -18,7 +18,7 @@
 package org.apache.nlpcraft.nlp.en.token.enricher;
 
 import org.apache.nlpcraft.internal.util.NCResourceReader;
-import org.apache.nlpcraft.nlp.mult.token.enricher.opennlp.NCLemmaPosTokenEnricher;
+import org.apache.nlpcraft.nlp.mult.token.enricher.NCOpenNlpLemmaPosTokenEnricher;
 
 /**
  * TODO: enriches with <code>lemma</code> and <code>pos</code> properties.
@@ -27,11 +27,11 @@ import org.apache.nlpcraft.nlp.mult.token.enricher.opennlp.NCLemmaPosTokenEnrich
  *  - 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
  */
-public class NCENLemmaPosTokenEnricher extends NCLemmaPosTokenEnricher {
+public class NCENOpenNlpLemmaPosTokenEnricher extends NCOpenNlpLemmaPosTokenEnricher {
     /**
      *
      */
-    public NCENLemmaPosTokenEnricher() {
+    public NCENOpenNlpLemmaPosTokenEnricher() {
         super(
             NCResourceReader.getPath("opennlp/en-pos-maxent.bin"),
             NCResourceReader.getPath("opennlp/en-lemmatizer.dict")
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/enricher/impl/NCENStopWordsTokenEnricherImpl.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/enricher/impl/NCENStopWordsTokenEnricherImpl.scala
index 3e06e2c..b0d4b36 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/enricher/impl/NCENStopWordsTokenEnricherImpl.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/enricher/impl/NCENStopWordsTokenEnricherImpl.scala
@@ -21,7 +21,7 @@ import com.typesafe.scalalogging.LazyLogging
 import opennlp.tools.stemmer.PorterStemmer
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.internal.util.NCUtils
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticStemmer
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCSemanticStemmer
 
 import java.io.*
 import java.util
@@ -132,7 +132,7 @@ object NCENStopWordsTokenEnricherImpl:
                     (for (subSeq <- seq) yield subSeq :+ Option(t)) ++ (if isStopWord(t) then for (subSeq <- seq) yield subSeq :+ None else Seq.empty)
 
             var res: Seq[Seq[Option[NCToken]]] = Seq.empty
-            for (t <- toks) res = multiple(res, t) 
+            for (t <- toks) res = multiple(res, t)
             res.map(_.flatten).filter(_.nonEmpty)
 
         tokenMix(tokens, maxLen).
@@ -165,10 +165,10 @@ object NCENStopWordsTokenEnricherImpl:
     private def tokenMix(toks: Seq[NCToken], maxLen: Int = Integer.MAX_VALUE): Seq[Seq[NCToken]] =
         (for (n <- toks.length until 0 by -1 if n <= maxLen) yield toks.sliding(n)).flatten
 
-import NCENStopWordsTokenEnricherImpl.*
+import org.apache.nlpcraft.nlp.en.token.enricher.impl.NCENStopWordsTokenEnricherImpl.*
 
 /**
-  * 
+  *
   * @param addStopsSet
   * @param exclStopsSet
   */
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/parser/opennlp/NCENOpenNLPTokenParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/parser/NCENOpenNLPTokenParser.java
similarity index 88%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/parser/opennlp/NCENOpenNLPTokenParser.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/parser/NCENOpenNLPTokenParser.java
index 040ac90..946441d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/parser/opennlp/NCENOpenNLPTokenParser.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/en/token/parser/NCENOpenNLPTokenParser.java
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.en.token.parser.opennlp;
+package org.apache.nlpcraft.nlp.en.token.parser;
 
 import org.apache.nlpcraft.internal.util.NCResourceReader;
-import org.apache.nlpcraft.nlp.mult.token.parser.opennlp.NCOpenNLPTokenParser;
+import org.apache.nlpcraft.nlp.mult.token.parser.NCOpenNLPTokenParser;
 
 /*
  *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/nlp/NCNLPEntityParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCNLPEntityParser.java
similarity index 92%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/nlp/NCNLPEntityParser.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCNLPEntityParser.java
index 1876cf8..827bb2b 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/nlp/NCNLPEntityParser.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCNLPEntityParser.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.entity.parser.nlp;
+package org.apache.nlpcraft.nlp.mult.entity.parser;
 
 import org.apache.nlpcraft.NCEntity;
 import org.apache.nlpcraft.NCEntityParser;
 import org.apache.nlpcraft.NCModelConfig;
 import org.apache.nlpcraft.NCRequest;
 import org.apache.nlpcraft.NCToken;
-import org.apache.nlpcraft.nlp.mult.entity.parser.nlp.impl.NCNLPEntityParserImpl;
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCNLPEntityParserImpl;
 
 import java.util.List;
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/opennlp/NCOpenNLPEntityParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCOpenNLPEntityParser.java
similarity index 86%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/opennlp/NCOpenNLPEntityParser.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCOpenNLPEntityParser.java
index 4de886c..cf9de88 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/opennlp/NCOpenNLPEntityParser.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCOpenNLPEntityParser.java
@@ -15,10 +15,15 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.entity.parser.opennlp;
+package org.apache.nlpcraft.nlp.mult.entity.parser;
 
-import org.apache.nlpcraft.*;
-import org.apache.nlpcraft.nlp.mult.entity.parser.opennlp.impl.NCOpenNLPEntityParserImpl;
+import org.apache.nlpcraft.NCEntity;
+import org.apache.nlpcraft.NCEntityParser;
+import org.apache.nlpcraft.NCException;
+import org.apache.nlpcraft.NCModelConfig;
+import org.apache.nlpcraft.NCRequest;
+import org.apache.nlpcraft.NCToken;
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCOpenNLPEntityParserImpl;
 
 import java.util.List;
 import java.util.Objects;
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/NCSemanticElement.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCSemanticElement.java
similarity index 91%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/NCSemanticElement.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCSemanticElement.java
index fa30d79..99acb51 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/NCSemanticElement.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCSemanticElement.java
@@ -15,9 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.entity.parser.semantic;
+package org.apache.nlpcraft.nlp.mult.entity.parser;
 
-import java.util.*;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
 
 /**
  *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/NCSemanticEntityParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCSemanticEntityParser.java
similarity index 87%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/NCSemanticEntityParser.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCSemanticEntityParser.java
index 99e6141..5addb13 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/NCSemanticEntityParser.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCSemanticEntityParser.java
@@ -15,10 +15,16 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.entity.parser.semantic;
+package org.apache.nlpcraft.nlp.mult.entity.parser;
 
-import org.apache.nlpcraft.*;
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.impl.NCSemanticEntityParserImpl;
+import org.apache.nlpcraft.NCEntity;
+import org.apache.nlpcraft.NCEntityParser;
+import org.apache.nlpcraft.NCException;
+import org.apache.nlpcraft.NCModelConfig;
+import org.apache.nlpcraft.NCRequest;
+import org.apache.nlpcraft.NCToken;
+import org.apache.nlpcraft.NCTokenParser;
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCSemanticEntityParserImpl;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/NCSemanticStemmer.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCSemanticStemmer.java
similarity index 93%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/NCSemanticStemmer.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCSemanticStemmer.java
index 0b62707..367ea92 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/NCSemanticStemmer.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/NCSemanticStemmer.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.entity.parser.semantic;
+package org.apache.nlpcraft.nlp.mult.entity.parser;
 
 /**
  * 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/nlp/impl/NCNLPEntityParserImpl.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCNLPEntityParserImpl.scala
similarity index 92%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/nlp/impl/NCNLPEntityParserImpl.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCNLPEntityParserImpl.scala
index d3fc1e6..069bea8 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/nlp/impl/NCNLPEntityParserImpl.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCNLPEntityParserImpl.scala
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.entity.parser.nlp.impl
+package org.apache.nlpcraft.nlp.mult.entity.parser.impl
 
 import org.apache.nlpcraft.*
 
@@ -29,7 +29,7 @@ import java.util.stream.Collectors
 object NCNLPEntityParserImpl:
     private def id = "nlp:token"
 
-import NCNLPEntityParserImpl.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCNLPEntityParserImpl.*
 
 /**
   *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/opennlp/impl/NCOpenNLPEntityParserImpl.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCOpenNLPEntityParserImpl.scala
similarity index 97%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/opennlp/impl/NCOpenNLPEntityParserImpl.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCOpenNLPEntityParserImpl.scala
index c154e45..9400fcc 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/opennlp/impl/NCOpenNLPEntityParserImpl.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCOpenNLPEntityParserImpl.scala
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.entity.parser.opennlp.impl
+package org.apache.nlpcraft.nlp.mult.entity.parser.impl
 
 import com.typesafe.scalalogging.LazyLogging
 import opennlp.tools.namefind.*
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticEntityParserImpl.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticEntityParserImpl.scala
similarity index 96%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticEntityParserImpl.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticEntityParserImpl.scala
index 0eaca66..881a9eb 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticEntityParserImpl.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticEntityParserImpl.scala
@@ -15,15 +15,15 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.entity.parser.semantic.impl
+package org.apache.nlpcraft.nlp.mult.entity.parser.impl
 
 import com.typesafe.scalalogging.LazyLogging
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.internal.makro.NCMacroParser
 import org.apache.nlpcraft.internal.util.NCUtils
-import NCSemanticChunkKind.*
-import NCSemanticSourceType.*
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCSemanticChunkKind.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCSemanticSourceType.*
 
 import java.io.*
 import java.util
@@ -139,7 +139,7 @@ object NCSemanticEntityParserImpl:
             )
         })
 
-import NCSemanticEntityParserImpl.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCSemanticEntityParserImpl.*
 
 /**
   *
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticSourceReader.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticSourceReader.scala
similarity index 94%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticSourceReader.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticSourceReader.scala
index e588638..edb65e6 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticSourceReader.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticSourceReader.scala
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.nlpcraft.nlp.mult.entity.parser.semantic.impl
+package org.apache.nlpcraft.nlp.mult.entity.parser.impl
 
 import com.fasterxml.jackson.core.JsonParser
 import com.fasterxml.jackson.databind.*
 import com.fasterxml.jackson.dataformat.yaml.*
 import com.fasterxml.jackson.module.scala.DefaultScalaModule
 import org.apache.nlpcraft.*
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.*
-import NCSemanticSourceType.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCSemanticElement
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCSemanticSourceType.*
 
 import java.io.InputStream
 import java.util
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticSynonym.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticSynonym.scala
similarity index 93%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticSynonym.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticSynonym.scala
index 71cd15c..9c130d6 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticSynonym.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticSynonym.scala
@@ -14,10 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.nlpcraft.nlp.mult.entity.parser.semantic.impl
+package org.apache.nlpcraft.nlp.mult.entity.parser.impl
 
 import org.apache.nlpcraft.NCToken
-import NCSemanticChunkKind.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCSemanticChunkKind.*
 
 import java.util.regex.Pattern
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticSynonymsProcessor.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticSynonymsProcessor.scala
similarity index 97%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticSynonymsProcessor.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticSynonymsProcessor.scala
index 2f87aab..b3c3410 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/semantic/impl/NCSemanticSynonymsProcessor.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/entity/parser/impl/NCSemanticSynonymsProcessor.scala
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.nlpcraft.nlp.mult.entity.parser.semantic.impl
+package org.apache.nlpcraft.nlp.mult.entity.parser.impl
 
 import com.fasterxml.jackson.databind.*
 import com.fasterxml.jackson.dataformat.yaml.*
@@ -23,8 +23,8 @@ import com.typesafe.scalalogging.LazyLogging
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.internal.makro.NCMacroParser
 import org.apache.nlpcraft.internal.util.NCUtils
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.*
-import NCSemanticChunkKind.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCSemanticChunkKind.*
 
 import java.io.InputStream
 import java.util
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/opennlp/NCLemmaPosTokenEnricher.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/NCOpenNlpLemmaPosTokenEnricher.java
similarity index 86%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/opennlp/NCLemmaPosTokenEnricher.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/NCOpenNlpLemmaPosTokenEnricher.java
index b94e792..589ba30 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/opennlp/NCLemmaPosTokenEnricher.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/NCOpenNlpLemmaPosTokenEnricher.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.token.enricher.opennlp;
+package org.apache.nlpcraft.nlp.mult.token.enricher;
 
 import org.apache.nlpcraft.NCModelConfig;
 import org.apache.nlpcraft.NCRequest;
 import org.apache.nlpcraft.NCToken;
 import org.apache.nlpcraft.NCTokenEnricher;
-import org.apache.nlpcraft.nlp.mult.token.enricher.opennlp.impl.NCLemmaPosTokenEnricherImpl;
+import org.apache.nlpcraft.nlp.mult.token.enricher.impl.NCLemmaPosTokenEnricherImpl;
 
 import java.util.List;
 
@@ -32,13 +32,13 @@ import java.util.List;
  *  - 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
  */
-public class NCLemmaPosTokenEnricher implements NCTokenEnricher {
+public class NCOpenNlpLemmaPosTokenEnricher implements NCTokenEnricher {
     private final NCLemmaPosTokenEnricherImpl impl;
 
     /**
      *
      */
-    public NCLemmaPosTokenEnricher(String posMdlSrc, String lemmaDicSrc) {
+    public NCOpenNlpLemmaPosTokenEnricher(String posMdlSrc, String lemmaDicSrc) {
         impl = new NCLemmaPosTokenEnricherImpl(posMdlSrc, lemmaDicSrc);
     }
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/opennlp/impl/NCLemmaPosTokenEnricherImpl.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/impl/NCLemmaPosTokenEnricherImpl.scala
similarity index 98%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/opennlp/impl/NCLemmaPosTokenEnricherImpl.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/impl/NCLemmaPosTokenEnricherImpl.scala
index 02a6c18..3f3ebfb 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/opennlp/impl/NCLemmaPosTokenEnricherImpl.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/enricher/impl/NCLemmaPosTokenEnricherImpl.scala
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.token.enricher.opennlp.impl
+package org.apache.nlpcraft.nlp.mult.token.enricher.impl
 
 import com.typesafe.scalalogging.LazyLogging
 import opennlp.tools.lemmatizer.DictionaryLemmatizer
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/opennlp/NCOpenNLPTokenParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/NCOpenNLPTokenParser.java
similarity index 92%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/opennlp/NCOpenNLPTokenParser.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/NCOpenNLPTokenParser.java
index a77e650..bdb7151 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/opennlp/NCOpenNLPTokenParser.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/NCOpenNLPTokenParser.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.token.parser.opennlp;
+package org.apache.nlpcraft.nlp.mult.token.parser;
 
 import org.apache.nlpcraft.NCException;
 import org.apache.nlpcraft.NCToken;
 import org.apache.nlpcraft.NCTokenParser;
-import org.apache.nlpcraft.nlp.mult.token.parser.opennlp.impl.NCOpenNLPTokenParserImpl;
+import org.apache.nlpcraft.nlp.mult.token.parser.impl.NCOpenNLPTokenParserImpl;
 
 import java.util.List;
 import java.util.Objects;
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/opennlp/impl/NCOpenNLPTokenParserImpl.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/impl/NCOpenNLPTokenParserImpl.scala
similarity index 96%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/opennlp/impl/NCOpenNLPTokenParserImpl.scala
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/impl/NCOpenNLPTokenParserImpl.scala
index e9506ed..7bc6907 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/opennlp/impl/NCOpenNLPTokenParserImpl.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/nlp/mult/token/parser/impl/NCOpenNLPTokenParserImpl.scala
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.nlp.mult.token.parser.opennlp.impl
+package org.apache.nlpcraft.nlp.mult.token.parser.impl
 
 import com.typesafe.scalalogging.LazyLogging
 import opennlp.tools.tokenize.*
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelCallbacksSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelCallbacksSpec.scala
index 1f2d1f1..e00dd2f 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelCallbacksSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelCallbacksSpec.scala
@@ -19,9 +19,9 @@ package org.apache.nlpcraft.internal.impl
 
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.NCResultType.*
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
 import org.apache.nlpcraft.nlp.entity.parser.semantic.*
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticEntityParser
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCSemanticEntityParser
 import org.apache.nlpcraft.nlp.util.NCTestModelAdapter
 import org.apache.nlpcraft.nlp.util.opennlp.*
 import org.junit.jupiter.api.*
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelClientSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelClientSpec.scala
index 19a0ec9..214ab26 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelClientSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelClientSpec.scala
@@ -18,8 +18,8 @@
 package org.apache.nlpcraft.internal.impl
 
 import org.apache.nlpcraft.*
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.NCEnSemanticEntityParser
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticEntityParser
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCSemanticEntityParser
 import org.apache.nlpcraft.nlp.util.NCTestModelAdapter
 import org.apache.nlpcraft.nlp.util.opennlp.*
 import org.junit.jupiter.api.Test
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelPingPongSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelPingPongSpec.scala
index 910fb61..7c34241 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelPingPongSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelPingPongSpec.scala
@@ -18,14 +18,13 @@
 package org.apache.nlpcraft.internal.impl
 
 import org.apache.nlpcraft.*
-import org.apache.nlpcraft.nlp.entity.parser.semantic.*
 import org.apache.nlpcraft.NCResultType.*
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.entity.parser.semantic.{NCSemanticTestElement as STE, *}
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCSemanticEntityParser
 import org.apache.nlpcraft.nlp.util.NCTestModelAdapter
 import org.apache.nlpcraft.nlp.util.opennlp.*
 import org.junit.jupiter.api.*
-import org.apache.nlpcraft.nlp.entity.parser.semantic.NCSemanticTestElement as STE
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticEntityParser
 
 import scala.jdk.CollectionConverters.*
 import scala.util.Using
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManagerSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManagerSpec.scala
index 1357ef4..3cd69bc 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManagerSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/internal/impl/NCModelPipelineManagerSpec.scala
@@ -18,10 +18,10 @@
 package org.apache.nlpcraft.internal.impl
 
 import org.apache.nlpcraft.*
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
 import org.apache.nlpcraft.nlp.entity.parser.semantic.*
-import org.apache.nlpcraft.nlp.mult.entity.parser.nlp.impl.NCNLPEntityParserImpl
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCSemanticElement
+import org.apache.nlpcraft.nlp.mult.entity.parser.impl.NCNLPEntityParserImpl
 import org.apache.nlpcraft.nlp.util.*
 import org.apache.nlpcraft.nlp.util.opennlp.*
 import org.junit.jupiter.api.*
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCENDefaultPipelineSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCENDefaultPipelineSpec.scala
index 586ace2..701ec4a 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCENDefaultPipelineSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/NCENDefaultPipelineSpec.scala
@@ -18,8 +18,8 @@
 package org.apache.nlpcraft.nlp
 
 import org.apache.nlpcraft.*
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.*
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticEntityParser
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCSemanticEntityParser
 import org.apache.nlpcraft.nlp.util.NCTestModelAdapter
 import org.junit.jupiter.api.Test
 
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/benchmark/token/parser/opennlp/NCEnOpenNlpTokenParserBenchmark.java b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/benchmark/token/parser/opennlp/NCEnOpenNlpTokenParserBenchmark.java
index f3725de..8de4147 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/benchmark/token/parser/opennlp/NCEnOpenNlpTokenParserBenchmark.java
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/benchmark/token/parser/opennlp/NCEnOpenNlpTokenParserBenchmark.java
@@ -19,7 +19,7 @@ package org.apache.nlpcraft.nlp.benchmark.token.parser.opennlp;
 
 import org.apache.nlpcraft.NCRequest;
 import org.apache.nlpcraft.internal.util.NCResourceReader;
-import org.apache.nlpcraft.nlp.mult.token.parser.opennlp.NCOpenNLPTokenParser;
+import org.apache.nlpcraft.nlp.mult.token.parser.NCOpenNLPTokenParser;
 import org.apache.nlpcraft.nlp.util.NCTestRequest;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/nlp/NCNLPEntityParserSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/nlp/NCNLPEntityParserSpec.scala
index d56bf06..242b77c 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/nlp/NCNLPEntityParserSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/nlp/NCNLPEntityParserSpec.scala
@@ -19,8 +19,7 @@ package org.apache.nlpcraft.nlp.entity.parser.nlp
 
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.internal.util.NCUtils
-import org.apache.nlpcraft.nlp.mult.entity.parser.nlp.NCNLPEntityParser
-import org.apache.nlpcraft.nlp.mult.entity.parser.opennlp.NCOpenNLPEntityParser
+import org.apache.nlpcraft.nlp.mult.entity.parser.*
 import org.apache.nlpcraft.nlp.util.*
 import org.apache.nlpcraft.nlp.util.opennlp.*
 import org.junit.jupiter.api.*
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/opennlp/NCOpenNLPEntityParserSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/opennlp/NCOpenNLPEntityParserSpec.scala
index a22f029..d4ec06a 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/opennlp/NCOpenNLPEntityParserSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/opennlp/NCOpenNLPEntityParserSpec.scala
@@ -18,8 +18,8 @@
 package org.apache.nlpcraft.nlp.entity.parser.opennlp
 
 import org.apache.nlpcraft.*
-import org.apache.nlpcraft.internal.util.{NCResourceReader, NCUtils}
-import org.apache.nlpcraft.nlp.mult.entity.parser.opennlp.NCOpenNLPEntityParser
+import org.apache.nlpcraft.internal.util.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.NCOpenNLPEntityParser
 import org.apache.nlpcraft.nlp.util.*
 import org.apache.nlpcraft.nlp.util.opennlp.*
 import org.junit.jupiter.api.*
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserJsonSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserJsonSpec.scala
index c4a618e..0dcf647 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserJsonSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserJsonSpec.scala
@@ -19,10 +19,9 @@ package org.apache.nlpcraft.nlp.entity.parser.semantic
 
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.internal.util.NCUtils
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.NCEnSemanticEntityParser
-import org.apache.nlpcraft.nlp.mult.entity.parser.opennlp.NCOpenNLPEntityParser
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticEntityParser
-import org.apache.nlpcraft.nlp.mult.token.parser.opennlp.NCOpenNLPTokenParser
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.mult.entity.parser.*
+import org.apache.nlpcraft.nlp.mult.token.parser.NCOpenNLPTokenParser
 import org.apache.nlpcraft.nlp.util.*
 import org.apache.nlpcraft.nlp.util.opennlp.*
 import org.junit.jupiter.api.*
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserSpec.scala
index ee63788..8c689c7 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserSpec.scala
@@ -18,11 +18,10 @@
 package org.apache.nlpcraft.nlp.entity.parser.semantic
 
 import org.apache.nlpcraft.*
-import org.apache.nlpcraft.internal.util.{NCResourceReader, NCUtils}
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.NCEnSemanticEntityParser
-import org.apache.nlpcraft.nlp.en.token.enricher.{NCENLemmaPosTokenEnricher, NCENStopWordsTokenEnricher}
-import org.apache.nlpcraft.nlp.mult.entity.parser.opennlp.NCOpenNLPEntityParser
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.{NCSemanticElement, NCSemanticEntityParser}
+import org.apache.nlpcraft.internal.util.*
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.en.token.enricher.*
+import org.apache.nlpcraft.nlp.mult.entity.parser.*
 import org.apache.nlpcraft.nlp.token.enricher.en.*
 import org.apache.nlpcraft.nlp.util.*
 import org.apache.nlpcraft.nlp.util.opennlp.*
@@ -88,7 +87,7 @@ class NCSemanticEntityParserSpec:
 
     private val stopWordsEnricher = new NCENStopWordsTokenEnricher()
 
-    private val lemmaPosEnricher = new NCENLemmaPosTokenEnricher()
+    private val lemmaPosEnricher = new NCENOpenNlpLemmaPosTokenEnricher()
 
     /**
       *
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserYamlSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserYamlSpec.scala
index 2a48f45..3a522f0 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserYamlSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/entity/parser/semantic/NCSemanticEntityParserYamlSpec.scala
@@ -19,9 +19,8 @@ package org.apache.nlpcraft.nlp.entity.parser.semantic
 
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.internal.util.NCUtils
-import org.apache.nlpcraft.nlp.en.entity.parser.semantic.NCEnSemanticEntityParser
-import org.apache.nlpcraft.nlp.mult.entity.parser.opennlp.NCOpenNLPEntityParser
-import org.apache.nlpcraft.nlp.mult.entity.parser.semantic.NCSemanticEntityParser
+import org.apache.nlpcraft.nlp.en.entity.parser.NCEnSemanticEntityParser
+import org.apache.nlpcraft.nlp.mult.entity.parser.*
 import org.apache.nlpcraft.nlp.util.*
 import org.apache.nlpcraft.nlp.util.opennlp.*
 import org.junit.jupiter.api.*
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCDictionaryTokenEnricherSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCDictionaryTokenEnricherSpec.scala
index 8269f2d..916c6c7 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCDictionaryTokenEnricherSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCDictionaryTokenEnricherSpec.scala
@@ -18,7 +18,7 @@
 package org.apache.nlpcraft.nlp.token.enricher.en
 
 import org.apache.nlpcraft.internal.util.NCResourceReader
-import org.apache.nlpcraft.nlp.en.token.enricher.{NCENDictionaryTokenEnricher, NCENLemmaPosTokenEnricher}
+import org.apache.nlpcraft.nlp.en.token.enricher.*
 import org.apache.nlpcraft.nlp.token.enricher.en.*
 import org.apache.nlpcraft.nlp.util.*
 import org.apache.nlpcraft.nlp.util.opennlp.*
@@ -32,7 +32,7 @@ import scala.jdk.CollectionConverters.*
 class NCDictionaryTokenEnricherSpec:
     private val dictEnricher = new NCENDictionaryTokenEnricher()
 
-    private val lemmaPosEnricher = new NCENLemmaPosTokenEnricher()
+    private val lemmaPosEnricher = new NCENOpenNlpLemmaPosTokenEnricher()
 
     @Test
     def test(): Unit =
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCQuotesTokenEnricherSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCQuotesTokenEnricherSpec.scala
index 5a9c1c9..d465dbd 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCQuotesTokenEnricherSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCQuotesTokenEnricherSpec.scala
@@ -19,7 +19,7 @@ package org.apache.nlpcraft.nlp.token.enricher.en
 
 import org.apache.nlpcraft.NCToken
 import org.apache.nlpcraft.internal.util.NCResourceReader
-import org.apache.nlpcraft.nlp.en.token.enricher.{NCENLemmaPosTokenEnricher, NCENQuotesTokenEnricher}
+import org.apache.nlpcraft.nlp.en.token.enricher.*
 import org.apache.nlpcraft.nlp.token.enricher.en.*
 import org.apache.nlpcraft.nlp.util.*
 import org.apache.nlpcraft.nlp.util.opennlp.*
@@ -31,7 +31,7 @@ import scala.jdk.CollectionConverters.*
   *
   */
 class NCQuotesTokenEnricherSpec:
-    private val lemmaPosEnricher = new NCENLemmaPosTokenEnricher
+    private val lemmaPosEnricher = new NCENOpenNlpLemmaPosTokenEnricher
     private val quoteEnricher = new NCENQuotesTokenEnricher
 
     /**
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCStopWordsEnricherSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCStopWordsEnricherSpec.scala
index dc95d1c..755bc64 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCStopWordsEnricherSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/enricher/en/NCStopWordsEnricherSpec.scala
@@ -32,7 +32,7 @@ import scala.jdk.CollectionConverters.*
   *
   */
 class NCStopWordsEnricherSpec:
-    private val lemmaPosEnricher = new NCENLemmaPosTokenEnricher
+    private val lemmaPosEnricher = new NCENOpenNlpLemmaPosTokenEnricher
 
     /**
       *
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/parser/opennlp/NCOpenNLPTokenParserSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/parser/opennlp/NCOpenNLPTokenParserSpec.scala
index 99e521c..689f05d 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/parser/opennlp/NCOpenNLPTokenParserSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/token/parser/opennlp/NCOpenNLPTokenParserSpec.scala
@@ -20,7 +20,7 @@ package org.apache.nlpcraft.nlp.token.parser.opennlp
 import org.apache.nlpcraft.*
 import org.apache.nlpcraft.internal.ascii.NCAsciiTable
 import org.apache.nlpcraft.internal.util.NCResourceReader
-import org.apache.nlpcraft.nlp.en.token.enricher.{NCENLemmaPosTokenEnricher, NCENStopWordsTokenEnricher}
+import org.apache.nlpcraft.nlp.en.token.enricher.*
 import org.apache.nlpcraft.nlp.token.enricher.en.*
 import org.apache.nlpcraft.nlp.util.*
 import org.apache.nlpcraft.nlp.util.opennlp.*
@@ -33,7 +33,7 @@ import scala.jdk.CollectionConverters.*
   *
   */
 class NCOpenNLPTokenParserSpec:
-    private val lemmaPosEnricher = new NCENLemmaPosTokenEnricher
+    private val lemmaPosEnricher = new NCENOpenNlpLemmaPosTokenEnricher
     private val stopEnricher = new NCENStopWordsTokenEnricher(null, null)
 
     private def isStopWord(t: NCToken): Boolean = t.get[Boolean]("stopword")
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestPipeline.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestPipeline.scala
index 2ba0cd8..9be79bd 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestPipeline.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/NCTestPipeline.scala
@@ -18,7 +18,7 @@
 package org.apache.nlpcraft.nlp.util
 
 import org.apache.nlpcraft.*
-import org.apache.nlpcraft.nlp.mult.token.parser.opennlp.NCOpenNLPTokenParser
+import org.apache.nlpcraft.nlp.mult.token.parser.NCOpenNLPTokenParser
 import org.apache.nlpcraft.nlp.util.NCTestPipeline.*
 
 import java.util.{Optional, ArrayList as JList}
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/opennlp/NCTestConfig.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/opennlp/NCTestConfig.scala
index 505ee5f..6db4ab6 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/opennlp/NCTestConfig.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/opennlp/NCTestConfig.scala
@@ -18,7 +18,7 @@
 package org.apache.nlpcraft.nlp.util.opennlp
 
 import org.apache.nlpcraft.NCModelConfig
-import org.apache.nlpcraft.nlp.mult.token.parser.opennlp.NCOpenNLPTokenParser
+import org.apache.nlpcraft.nlp.mult.token.parser.NCOpenNLPTokenParser
 import org.apache.nlpcraft.nlp.util.*
 
 /**
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/opennlp/NCTestConfigJava.java b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/opennlp/NCTestConfigJava.java
index e49f5f7..4c45c5b 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/opennlp/NCTestConfigJava.java
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/nlp/util/opennlp/NCTestConfigJava.java
@@ -19,7 +19,7 @@ package org.apache.nlpcraft.nlp.util.opennlp;
 
 import org.apache.nlpcraft.NCModelConfig;
 import org.apache.nlpcraft.internal.util.NCResourceReader;
-import org.apache.nlpcraft.nlp.mult.token.parser.opennlp.NCOpenNLPTokenParser;
+import org.apache.nlpcraft.nlp.mult.token.parser.NCOpenNLPTokenParser;
 import org.apache.nlpcraft.nlp.util.NCTestPipeline;
 
 /**