You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nlpcraft.apache.org by ar...@apache.org on 2021/12/17 03:11:13 UTC

[incubator-nlpcraft] branch master_test updated (67549ae -> a571917)

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

aradzinski pushed a change to branch master_test
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git.


    from 67549ae  Merge branch 'master' into master_test
     new a641225  WIP (refactoring, cleanup).
     new a571917  WIP.

The 2 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.


Summary of changes:
 .../nlp/entity/parser/custom/NCElement.java        |  72 --------
 .../nlp/entity/parser/custom/NCElementBuilder.java | 187 ---------------------
 .../nlp/entity/parser/custom/NCEntityParser.java   |  56 ------
 .../entity/parser/custom/NCFileEntityParser.java   |  59 -------
 .../internal/nlp/entity/parser/custom/NCMacro.java |  52 ------
 .../internal/nlp/entity/parser/custom/NCValue.java |  49 ------
 .../nlp/entity/parser/custom/NCValueLoader.java    |  64 -------
 .../parser/opennlp/NCOpenNlpEntityParseImpl.scala  |  33 ----
 .../parser/opennlp/NCOpenNlpEntityParser.java      |  53 ------
 .../nlp/entity/parser/opennlp/NCOpenNlpModel.java  |  54 ------
 .../enricher/NCEnDictionaryTokenEnricher.java      |  12 +-
 .../token/enricher/NCEnQuotesTokenEnricher.java    |  12 +-
 .../enricher/NCEnSwearWordsTokenEnricher.java      |  11 +-
 .../token/enricher/impl/NCEnDictionaryImpl.scala}  |  30 ++--
 .../nlp/token/enricher/impl/NCEnQuotesImpl.scala}  |  30 ++--
 .../token/enricher/impl/NCEnSwearWordsImpl.scala}  |  30 ++--
 .../token/parser/opennlp/NCOpenNlpTokenParser.java |  19 +--
 .../token/parser/opennlp/impl/NCOpenNlpImpl.scala} |  21 +--
 .../nlpcraft/lightswitch/LightSwitchModel.java     |  85 ----------
 .../nlpcraft/lightswitch/LightSwitchModelTest.java | 124 --------------
 20 files changed, 66 insertions(+), 987 deletions(-)
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCElement.java
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCElementBuilder.java
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCEntityParser.java
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCFileEntityParser.java
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCMacro.java
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCValue.java
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCValueLoader.java
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpEntityParseImpl.scala
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpEntityParser.java
 delete mode 100644 nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpModel.java
 copy nlpcraft/src/main/scala/org/apache/nlpcraft/{NCResultType.java => internal/nlp/token/enricher/impl/NCEnDictionaryImpl.scala} (73%)
 copy nlpcraft/src/main/scala/org/apache/nlpcraft/{NCResultType.java => internal/nlp/token/enricher/impl/NCEnQuotesImpl.scala} (73%)
 copy nlpcraft/src/main/scala/org/apache/nlpcraft/{NCResultType.java => internal/nlp/token/enricher/impl/NCEnSwearWordsImpl.scala} (73%)
 copy nlpcraft/src/main/scala/org/apache/nlpcraft/{NCLifecycle.java => internal/nlp/token/parser/opennlp/impl/NCOpenNlpImpl.scala} (79%)
 delete mode 100644 nlpcraft/src/test/java/org/apache/nlpcraft/lightswitch/LightSwitchModel.java
 delete mode 100644 nlpcraft/src/test/java/org/apache/nlpcraft/lightswitch/LightSwitchModelTest.java

[incubator-nlpcraft] 01/02: WIP (refactoring, cleanup).

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

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

commit a6412259ac76584a2b7965ca5660154f6641fe06
Author: Aaron Radzinski <ar...@datalingvo.com>
AuthorDate: Thu Dec 16 12:12:39 2021 -0800

    WIP (refactoring, cleanup).
---
 .../nlp/entity/parser/custom/NCElement.java        |  72 --------
 .../nlp/entity/parser/custom/NCElementBuilder.java | 187 ---------------------
 .../nlp/entity/parser/custom/NCEntityParser.java   |  56 ------
 .../entity/parser/custom/NCFileEntityParser.java   |  59 -------
 .../internal/nlp/entity/parser/custom/NCValue.java |  49 ------
 .../nlp/entity/parser/custom/NCValueLoader.java    |  64 -------
 .../parser/opennlp/NCOpenNlpEntityParseImpl.scala  |  33 ----
 .../parser/opennlp/NCOpenNlpEntityParser.java      |  53 ------
 .../nlp/entity/parser/opennlp/NCOpenNlpModel.java  |  54 ------
 .../enricher/NCEnDictionaryTokenEnricher.java      |  12 +-
 .../token/enricher/NCEnQuotesTokenEnricher.java    |  12 +-
 .../enricher/NCEnSwearWordsTokenEnricher.java      |  11 +-
 .../enricher/impl/NCEnDictionaryImpl.scala}        |  44 ++---
 .../NCEnQuotesImpl.scala}                          |  27 ++-
 .../NCEnSwearWordsImpl.scala}                      |  27 ++-
 .../nlpcraft/lightswitch/LightSwitchModel.java     |  85 ----------
 .../nlpcraft/lightswitch/LightSwitchModelTest.java | 124 --------------
 17 files changed, 54 insertions(+), 915 deletions(-)

diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCElement.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCElement.java
deleted file mode 100644
index 793131e..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCElement.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package org.apache.nlpcraft.internal.nlp.entity.parser.custom;
-
-import org.apache.nlpcraft.NCParameterized;
-
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
-
-/**
- *
- */
-public interface NCElement extends NCParameterized {
-    /**
-     *
-     * @return
-     */
-    String getId();
-
-    /**
-     *
-     * @return
-     */
-    String getDescription();
-
-    /**
-     *
-     * @return
-     */
-    Optional<String> getParentId();
-
-    /**
-     *
-     * @return
-     */
-    Set<String> getGroups();
-
-    /**
-     *
-     * @return
-     */
-    Set<NCValue> getValues();
-
-    /**
-     *
-     * @return
-     */
-    Optional<NCValueLoader> getValuesLoader();
-
-    /**
-     *
-     * @return
-     */
-    List<String> getSynonyms();
-}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCElementBuilder.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCElementBuilder.java
deleted file mode 100644
index 4d4d335..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCElementBuilder.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nlpcraft.internal.nlp.entity.parser.custom;
-
-import org.apache.nlpcraft.NCParameterizedAdapter;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-
-/**
- * 
- */
-public class NCElementBuilder {
-    private static class NCElementImpl extends NCParameterizedAdapter implements NCElement {
-        private final String id;
-        private final String desc;
-
-        private String parentId;
-        private Set<String> groups;
-        private Set<NCValue> values;
-        private NCValueLoader valuesLoader;
-        private List<String> synonyms;
-
-        NCElementImpl(String id, String desc) {
-            this.id = id;
-            this.desc = desc;
-        }
-
-        void setParentId(String parentId) {
-            this.parentId = parentId;
-        }
-
-        void setGroups(Set<String> groups) {
-            this.groups = groups;
-        }
-
-        void setValues(Set<NCValue> values) {
-            this.values = values;
-        }
-
-        void setValuesLoader(NCValueLoader valuesLoader) {
-            this.valuesLoader = valuesLoader;
-        }
-
-        void setSynonyms(List<String> synonyms) {
-            this.synonyms = synonyms;
-        }
-
-        @Override
-        public String getId() {
-            return id;
-        }
-
-        @Override
-        public String getDescription() {
-            return desc;
-        }
-
-        @Override
-        public Optional<String> getParentId() {
-            return Optional.ofNullable(parentId);
-        }
-
-        @Override
-        public Set<String> getGroups() {
-            return groups == null ? Collections.emptySet() : groups;
-        }
-
-        @Override
-        public Set<NCValue> getValues() {
-            return values == null ? Collections.emptySet() : values;
-        }
-
-        @Override
-        public Optional<NCValueLoader> getValuesLoader() {
-            return Optional.ofNullable(valuesLoader);
-        }
-
-        @Override
-        public List<String> getSynonyms() {
-            return synonyms;
-        }
-    }
-
-    private NCElementImpl impl = null;
-
-    /**
-     * 
-     * @param id
-     * @param desc
-     */
-    public NCElementBuilder(String id, String desc) {
-        impl = new NCElementImpl(id, desc);
-    }
-
-    /**
-     * 
-     * @param parentId
-     * @return
-     */
-    public NCElementBuilder withParentId(String parentId) {
-        impl.setParentId(parentId);
-
-        return this;
-    }
-
-    /**
-     * 
-     * @param groups
-     * @return
-     */
-    public NCElementBuilder withGroups(Set<String> groups) {
-        impl.setGroups(groups);
-
-        return this;
-    }
-
-    /**
-     * 
-     * @param values
-     * @return
-     */
-    public NCElementBuilder withValues(Set<NCValue> values) {
-        impl.setValues(values);
-
-        return this;
-    }
-
-    /**
-     * 
-     * @param loader
-     * @return
-     */
-    public NCElementBuilder withValuesLoader(NCValueLoader loader) {
-        impl.setValuesLoader(loader);
-
-        return this;
-    }
-
-    /**
-     * 
-     * @param props
-     * @return
-     */
-    public NCElementBuilder withProperties(Map<String, String> props) {
-        // TODO:
-        return this;
-    }
-
-    /**
-     * 
-     * @param syns
-     * @return
-     */
-    public NCElementBuilder withSynonyms(List<String> syns) {
-        impl.setSynonyms(syns);
-
-        return this;
-    }
-
-    /**
-     * 
-     * @return
-     */
-    public NCElement make() {
-        // TODO: add validation
-        return impl;
-    }
-}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCEntityParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCEntityParser.java
deleted file mode 100644
index da94fc3..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCEntityParser.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nlpcraft.internal.nlp.entity.parser.custom;
-
-import org.apache.nlpcraft.NCEntity;
-import org.apache.nlpcraft.NCModelConfig;
-import org.apache.nlpcraft.NCRequest;
-import org.apache.nlpcraft.NCToken;
-
-import java.util.List;
-
-/**
- * 
- */
-public class NCEntityParser implements org.apache.nlpcraft.NCEntityParser {
-    private final List<NCMacro> macros;
-    private final List<NCElement> elements;
-
-    /**
-     * 
-     * @param macros
-     * @param elements
-     */
-    public NCEntityParser(List<NCMacro> macros, List<NCElement> elements) {
-        this.macros = macros;
-        this.elements = elements;
-    }
-
-    /**
-     * 
-     * @param elements
-     */
-    public NCEntityParser(List<NCElement> elements) {
-        this(null, elements);
-    }
-
-    @Override
-    public List<NCEntity> parse(NCRequest req, NCModelConfig cfg, List<NCToken> toks) {
-        return null;
-    }
-}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCFileEntityParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCFileEntityParser.java
deleted file mode 100644
index 3e11057..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCFileEntityParser.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nlpcraft.internal.nlp.entity.parser.custom;
-
-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 java.util.List;
-import java.util.Map;
-import java.io.File;
-
-/**
- * 
- */
-public class NCFileEntityParser implements NCEntityParser {
-    private final File file;
-    private final Map<String, NCValueLoader> loaders;
-
-    /**
-     * 
-     * @param file
-     * @param loaders
-     */
-    public NCFileEntityParser(File file, Map<String, NCValueLoader> loaders) {
-        this.file = file;
-        this.loaders = loaders;
-    }
-
-    /**
-     * 
-     * @param file
-     */
-    public NCFileEntityParser(File file) {
-        this(file, null);
-    }
-
-    @Override
-    public List<NCEntity> parse(NCRequest req, NCModelConfig cfg, List<NCToken> toks) {
-        return null;
-    }
-}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCValue.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCValue.java
deleted file mode 100644
index 0d0acb6..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCValue.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nlpcraft.internal.nlp.entity.parser.custom;
-
-import java.util.List;
-
-/**
- * TODO: fix javadoc
- *
- * Model element's value.
- * <p>
- * Each model element can generally be recognized either by one of its synonyms or values. Elements and their values
- * are analogous to types and instances of that type in programming languages. Each value
- * has a name and optional set of its own synonyms by which that value, and ultimately its element, can be
- * recognized by. Note that value name itself acts as an implicit synonym even when no additional synonyms added
- * for that value.
- *
- * @see NCElement#getValues()
- */
-public interface NCValue {
-    /**
-     * Gets value name.
-     *
-     * @return Value name.
-     */
-    String getName();
-
-    /**
-     * Gets optional list of value's synonyms.
-     *
-     * @return Potentially empty list of value's synonyms.
-     */
-    List<String> getSynonyms();
-}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCValueLoader.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCValueLoader.java
deleted file mode 100644
index 090dc2d..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCValueLoader.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nlpcraft.internal.nlp.entity.parser.custom;
-
-import java.util.Set;
-
-/**
- * TODO: fix javadoc
- *
- * Dynamic value loader that can be used by model elements to dynamically load or create their values. Note that
- * the primary use case for this interface is the dynamic value loading for the models defines in JSON/YAML
- * presentation. However, it's not technically limited to that use case only, and this interface can be
- * set programmatically when model elements are created programmatically too.
- * <p>
- * <b>JSON</b>
- * <br>
- * When using JSON/YAML model presentation element values can be defined statically. However, in some
- * cases, it is required to load these values from external sources like database or REST services while
- * keeping the rest of the model declaration static (i.e. in JSON/YAML). To accomplish this you can
- * define <code>valueLoader</code> property and provide a fully qualified class name that implements
- * this interface. During the model instantiation an instance of that class will be created once per
- * each model and class of loader and method {@link #load(NCElement)} will be called to load
- * element's values. Note that you can use both statically defined values (i.e. <code>values</code> property)
- * and dynamically loaded values together and they will be merged:
- * <pre class="brush: js, highlight: [11]">
- *     "elements": [
- *         {
- *             "id": "my:id",
- *             "description": "My description.",
- *             "values": [
- *                  {
- *                      "name": "name1",
- *                      "synonyms": ["syn1", "syn2"]
- *                  }
- *             ],
- *             "valueLoader": "my.package.MyLoader"
- *         }
- *     ]
- * </pre>
- */
-public interface NCValueLoader {
-    /**
-     * Loads values for given model element.
-     * 
-     * @param owner Model element to which this value loader belongs to.
-     * @return Set of values, potentially empty but never {@code null}.
-     */
-    Set<NCValue> load(NCElement owner);
-}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpEntityParseImpl.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpEntityParseImpl.scala
deleted file mode 100644
index 37f60db..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpEntityParseImpl.scala
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nlpcraft.internal.nlp.entity.parser.opennlp
-
-import opennlp.tools.lemmatizer.DictionaryLemmatizer
-import opennlp.tools.postag.{POSModel, POSTagger, POSTaggerME}
-import org.apache.nlpcraft.{NCEntity, NCEntityParser, NCModelConfig, NCRequest, NCToken, NCTokenParser}
-
-import scala.concurrent.ExecutionContext
-import scala.util.Using
-import scala.util.control.Exception.catching
-import java.io.InputStream
-import java.util
-import scala.jdk.CollectionConverters.ListHasAsScala
-
-class NCOpenNlpEntityParseImpl() extends NCEntityParser {
-    override def parse(req: NCRequest, cfg: NCModelConfig, toks: util.List[NCToken]): util.List[NCEntity] = ???
-}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpEntityParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpEntityParser.java
deleted file mode 100644
index d1ed3d2..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpEntityParser.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nlpcraft.internal.nlp.entity.parser.opennlp;
-
-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 java.util.List;
-import java.util.stream.Collectors;
-
-/**
- *
- */
-public class NCOpenNlpEntityParser implements NCEntityParser {
-    private final List<NCOpenNlpModel> mdls;
-
-    /**
-     *
-     * @param mdls
-     */
-    public NCOpenNlpEntityParser(List<NCOpenNlpModel> mdls) {
-        this.mdls = mdls;
-    }
-
-    @Override
-    public void start() {
-        // TODO:
-    }
-
-    @Override
-    public List<NCEntity> parse(NCRequest req, NCModelConfig cfg, List<NCToken> toks) {
-        return null;
-    }
-}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpModel.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpModel.java
deleted file mode 100644
index 056ab49..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/opennlp/NCOpenNlpModel.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nlpcraft.internal.nlp.entity.parser.opennlp;
-
-import java.io.File;
-
-/**
- * 
- */
-public class NCOpenNlpModel {
-    private String elementId;
-    private File path;
-
-    /**
-     * 
-     * @param elementId
-     * @param path
-     */
-    public NCOpenNlpModel(String elementId, File path) {
-        this.elementId = elementId;
-        this.path = path;
-    }
-
-    /**
-     * 
-     * @return
-     */
-    public String getElementId() {
-        return elementId;
-    }
-
-    /**
-     * 
-     * @return
-     */
-    public File getPath() {
-        return path;
-    }
-}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnDictionaryTokenEnricher.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnDictionaryTokenEnricher.java
index c9895e6..1c54626 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnDictionaryTokenEnricher.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnDictionaryTokenEnricher.java
@@ -17,19 +17,19 @@
 
 package org.apache.nlpcraft.internal.nlp.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.*;
+import org.apache.nlpcraft.internal.nlp.token.enricher.impl.NCEnDictionaryImpl;
 import java.util.List;
 
 /**
  * 
  */
 public class NCEnDictionaryTokenEnricher implements NCTokenEnricher {
+    private NCEnDictionaryImpl impl;
+
     @Override
     public void enrich(NCRequest req, NCModelConfig cfg, List<NCToken> toks) {
-
+        assert impl != null;
+        impl.enrich(req, cfg, toks);
     }
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnQuotesTokenEnricher.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnQuotesTokenEnricher.java
index 14243a7..d22fe6f 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnQuotesTokenEnricher.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnQuotesTokenEnricher.java
@@ -17,19 +17,19 @@
 
 package org.apache.nlpcraft.internal.nlp.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.*;
 import java.util.List;
+import org.apache.nlpcraft.internal.nlp.token.enricher.impl.NCEnQuotesImpl;
 
 /**
  *
  */
 public class NCEnQuotesTokenEnricher implements NCTokenEnricher {
+    private NCEnQuotesImpl impl;
+
     @Override
     public void enrich(NCRequest req, NCModelConfig cfg, List<NCToken> toks) {
-        
+        assert impl != null;
+        impl.enrich(req, cfg, toks);
     }
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnSwearWordsTokenEnricher.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnSwearWordsTokenEnricher.java
index ed61cdb..0ac4276 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnSwearWordsTokenEnricher.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnSwearWordsTokenEnricher.java
@@ -17,10 +17,8 @@
 
 package org.apache.nlpcraft.internal.nlp.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.*;
+import org.apache.nlpcraft.internal.nlp.token.enricher.impl.NCEnSwearWordsImpl;
 
 import java.util.List;
 
@@ -28,8 +26,11 @@ import java.util.List;
  *
  */
 public class NCEnSwearWordsTokenEnricher implements NCTokenEnricher {
+    private NCEnSwearWordsImpl impl;
+
     @Override
     public void enrich(NCRequest req, NCModelConfig cfg, List<NCToken> toks) {
-        
+        assert impl != null;
+        impl.enrich(req, cfg, toks);
     }
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCMacro.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/impl/NCEnDictionaryImpl.scala
similarity index 61%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCMacro.java
rename to nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/impl/NCEnDictionaryImpl.scala
index 428df40..acbe9d3 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/entity/parser/custom/NCMacro.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/impl/NCEnDictionaryImpl.scala
@@ -15,38 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.internal.nlp.entity.parser.custom;
+package org.apache.nlpcraft.internal.nlp.token.enricher.impl
 
-/**
- * 
- */
-public class NCMacro {
-    private final String id;
-    private final String macro;
-
-    /**
-     * 
-     * @param id
-     * @param macro
-     */
-    public NCMacro(String id, String macro) {
-        this.id = id;
-        this.macro = macro;
-    }
-
-    /**
-     * 
-     * @return
-     */
-    public String getId() {
-        return id;
-    }
+import org.apache.nlpcraft.*
 
+/**
+  *
+  */
+class NCEnDictionaryImpl:
     /**
-     * 
-     * @return
-     */
-    public String getMacro() {
-        return macro;
-    }
-}
\ No newline at end of file
+      *
+      * @param req
+      * @param cfg
+      * @param toks
+      */
+    def enrich(req: NCRequest, cfg: NCModelConfig, toks: java.util.List[NCToken]): Unit = ???
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnDictionaryTokenEnricher.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/impl/NCEnQuotesImpl.scala
similarity index 65%
copy from nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnDictionaryTokenEnricher.java
copy to nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/impl/NCEnQuotesImpl.scala
index c9895e6..64a9ee9 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnDictionaryTokenEnricher.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/impl/NCEnQuotesImpl.scala
@@ -15,21 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.internal.nlp.token.enricher;
+package org.apache.nlpcraft.internal.nlp.token.enricher.impl
 
-import org.apache.nlpcraft.NCModelConfig;
-import org.apache.nlpcraft.NCRequest;
-import org.apache.nlpcraft.NCToken;
-import org.apache.nlpcraft.NCTokenEnricher;
-
-import java.util.List;
+import org.apache.nlpcraft.*
 
 /**
- * 
- */
-public class NCEnDictionaryTokenEnricher implements NCTokenEnricher {
-    @Override
-    public void enrich(NCRequest req, NCModelConfig cfg, List<NCToken> toks) {
-
-    }
-}
+  *
+  */
+class NCEnQuotesImpl:
+    /**
+      *
+      * @param req
+      * @param cfg
+      * @param toks
+      */
+    def enrich(req: NCRequest, cfg: NCModelConfig, toks: java.util.List[NCToken]): Unit = ???
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnDictionaryTokenEnricher.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/impl/NCEnSwearWordsImpl.scala
similarity index 65%
copy from nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnDictionaryTokenEnricher.java
copy to nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/impl/NCEnSwearWordsImpl.scala
index c9895e6..6f74460 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/NCEnDictionaryTokenEnricher.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/enricher/impl/NCEnSwearWordsImpl.scala
@@ -15,21 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.nlpcraft.internal.nlp.token.enricher;
+package org.apache.nlpcraft.internal.nlp.token.enricher.impl
 
-import org.apache.nlpcraft.NCModelConfig;
-import org.apache.nlpcraft.NCRequest;
-import org.apache.nlpcraft.NCToken;
-import org.apache.nlpcraft.NCTokenEnricher;
-
-import java.util.List;
+import org.apache.nlpcraft.*
 
 /**
- * 
- */
-public class NCEnDictionaryTokenEnricher implements NCTokenEnricher {
-    @Override
-    public void enrich(NCRequest req, NCModelConfig cfg, List<NCToken> toks) {
-
-    }
-}
+  *
+  */
+class NCEnSwearWordsImpl:
+    /**
+      *
+      * @param req
+      * @param cfg
+      * @param toks
+      */
+    def enrich(req: NCRequest, cfg: NCModelConfig, toks: java.util.List[NCToken]): Unit = ???
diff --git a/nlpcraft/src/test/java/org/apache/nlpcraft/lightswitch/LightSwitchModel.java b/nlpcraft/src/test/java/org/apache/nlpcraft/lightswitch/LightSwitchModel.java
deleted file mode 100644
index b719283..0000000
--- a/nlpcraft/src/test/java/org/apache/nlpcraft/lightswitch/LightSwitchModel.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nlpcraft.lightswitch;
-
-import org.apache.nlpcraft.NCModelAdapter;
-import org.apache.nlpcraft.*;
-import org.apache.nlpcraft.NCModelConfig;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- *
- */
-public class LightSwitchModel extends NCModelAdapter {
-    /**
-     *
-     * @param cfg
-     */
-    public LightSwitchModel(NCModelConfig cfg) {
-        super(cfg);
-    }
-
-    /**
-     *
-     * @param actTok
-     * @param locToks
-     * @return
-     */
-    @NCIntent("intent=ls term(act)={has(tok_groups, 'act')} term(loc)={# == 'ls:loc'}*")
-    @NCIntentSample({
-        "Turn the lights off in the entire house.",
-        "Turn off all lights now",
-        "Switch on the illumination in the master bedroom closet.",
-        "Off the lights on the 1st floor",
-        "Get the lights on.",
-        "Lights up in the kitchen.",
-        "Please, put the light out in the upstairs bedroom.",
-        "Set the lights on in the entire house.",
-        "Turn the lights off in the guest bedroom.",
-        "Could you please switch off all the lights?",
-        "Dial off illumination on the 2nd floor.",
-        "Turn down lights in 1st floor bedroom",
-        "Lights on at second floor kitchen",
-        "Please, no lights!",
-        "Kill off all the lights now!",
-        "Down the lights in the garage",
-        "Lights down in the kitchen!",
-        "Turn up the illumination in garage and master bedroom",
-        "Turn down all the light now!",
-        "No lights in the bedroom, please.",
-        "Light up the garage, please!",
-        "Kill the illumination now!"
-    })
-    NCResult onMatch(
-        @NCIntentTerm("act") NCEntity actTok,
-        @NCIntentTerm("loc") List<NCEntity> locToks) {
-        String status = actTok.getId().equals("ls:on") ? "on" : "off";
-        String locations = locToks.isEmpty() ?
-            "entire house" :
-            locToks.stream().
-                map(p -> p.getTokens().stream().map(x -> x.getOriginalText()).collect(Collectors.joining(" "))).
-                collect(Collectors.joining(", "));
-
-        return new NCResult(
-            "Lights are [" + status + "] in [" + locations.toLowerCase() + "].",
-            NCResultType.ASK_RESULT
-        );
-    }
-}
diff --git a/nlpcraft/src/test/java/org/apache/nlpcraft/lightswitch/LightSwitchModelTest.java b/nlpcraft/src/test/java/org/apache/nlpcraft/lightswitch/LightSwitchModelTest.java
deleted file mode 100644
index 3371481..0000000
--- a/nlpcraft/src/test/java/org/apache/nlpcraft/lightswitch/LightSwitchModelTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nlpcraft.lightswitch;
-
-import org.apache.nlpcraft.NCModelClient;
-import org.apache.nlpcraft.NCModelConfigAdapter;
-import org.apache.nlpcraft.internal.nlp.entity.parser.custom.NCElement;
-import org.apache.nlpcraft.internal.nlp.entity.parser.custom.NCElementBuilder;
-import org.apache.nlpcraft.internal.nlp.entity.parser.custom.NCEntityParser;
-import org.apache.nlpcraft.internal.nlp.entity.parser.custom.NCMacro;
-import org.apache.nlpcraft.internal.nlp.token.parser.opennlp.NCOpenNlpTokenParser;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-import java.util.HashSet;
-import java.util.List;
-
-import static java.util.Arrays.asList;
-
-public class LightSwitchModelTest {
-    @Test
-    public void test() {
-        NCModelClient client = new NCModelClient(new LightSwitchModel(mkConfigManual()));
-
-        client.start();
-
-        Assertions.assertNotNull(client.askSync("Hi!", null, null).getBody());
-
-        client.stop();
-    }
-
-    /**
-     *
-     * @return
-     */
-    private static NCModelConfigAdapter mkConfigManual() {
-        List<NCMacro> macros = List.of(
-            new NCMacro("<ACTION>", "{turn|switch|dial|let|set|get|put}"),
-            new NCMacro("<KILL>", "{shut|kill|stop|eliminate}"),
-            new NCMacro("<ENTIRE_OPT>", "{entire|full|whole|total|_}"),
-            new NCMacro("<FLOOR_OPT>", "{upstairs|downstairs|{1st|first|2nd|second|3rd|third|4th|fourth|5th|fifth|top|ground} floor|_}"),
-            new NCMacro("<TYPE>", "{room|closet|attic|loft|{store|storage} {room|_}}"),
-            new NCMacro("<LIGHT>", "{all|_} {it|them|light|illumination|lamp|lamplight}")
-        );
-
-        List<NCElement> elements =
-            List.of(
-                new NCElementBuilder("ls:loc", "ls:loc").
-                    withSynonyms(
-                        asList(
-                            "<ENTIRE_OPT> <FLOOR_OPT> {kitchen|library|closet|garage|office|playroom|{dinning|laundry|play} <TYPE>}",
-                            "<ENTIRE_OPT> <FLOOR_OPT> {master|kid|children|child|guest|_} {bedroom|bathroom|washroom|storage} {<TYPE>|_}",
-                            "<ENTIRE_OPT> {house|home|building|{1st|first} floor|{2nd|second} floor}"
-                        )
-                    ).make(),
-                new NCElementBuilder("ls:on", "ls:on").
-                    withGroups(new HashSet<>() {{
-                        add("act");
-                    }}).
-                    withSynonyms(
-                        asList(
-                            "<ACTION> {on|up|_} <LIGHT> {on|up|_}",
-                            "<LIGHT> {on|up}"
-                        )
-                    ).make(),
-                new NCElementBuilder("ls:off", "ls:off").
-                    withGroups(new HashSet<>() {{
-                        add("act");
-                    }}).
-                    withSynonyms(
-                        asList(
-                            "<ACTION> <LIGHT> {off|out|down}",
-                            "{<ACTION>|<KILL>} {off|out|down} <LIGHT>",
-                            "<KILL> <LIGHT>",
-                            "<LIGHT> <KILL>",
-                            "{out|no|off|down} <LIGHT>",
-                            "<LIGHT> {out|off|down}"
-                        )
-                    ).make()
-            );
-
-        NCModelConfigAdapter cfg =
-            new NCModelConfigAdapter(
-                "nlpcraft.lightswitch.ex",
-                "Light Switch Example Model",
-                "1.0",
-                new NCOpenNlpTokenParser(
-                    "opennlp/en-token.bin",
-                    "opennlp/en-pos-maxent.bin",
-                    "opennlp/en-lemmatizer.dict"
-                )
-            );
-
-        // Order is important.
-//        cfg.setTokenEnrichers(
-//            asList(
-//                new NCEnDictionaryTokenEnricher(),
-//                new NCEnQuotesTokenEnricher(),
-//                new NCEnSwearWordsTokenEnricher()
-//            )
-//        )
-
-        cfg.setEntityParsers(asList(new NCEntityParser(macros, elements)));
-
-//        // Don't need any entity enrichers.
-//        cfg.setEntityEnrichers(null)
-        return cfg;
-    }
-}

[incubator-nlpcraft] 02/02: WIP.

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

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

commit a571917c003350f074c15c733f807ae0d6aefc01
Author: Aaron Radzinski <ar...@datalingvo.com>
AuthorDate: Thu Dec 16 19:11:06 2021 -0800

    WIP.
---
 .../token/parser/opennlp/NCOpenNlpTokenParser.java | 19 +++++-----------
 .../token/parser/opennlp/impl/NCOpenNlpImpl.scala  | 26 ++++++++++++++++++++++
 2 files changed, 32 insertions(+), 13 deletions(-)

diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/parser/opennlp/NCOpenNlpTokenParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/parser/opennlp/NCOpenNlpTokenParser.java
index fc741e5..8f3e155 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/parser/opennlp/NCOpenNlpTokenParser.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/parser/opennlp/NCOpenNlpTokenParser.java
@@ -26,15 +26,18 @@ import java.io.InputStream;
 import java.util.List;
 
 
-/**
- * TODO:
+/*
  * Models can be downloaded from the following resources:
  *  - tokenizer: http://opennlp.sourceforge.net/models-1.5/en-token.bin
  *  - 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 NCOpenNlpTokenParser implements NCTokenParser {
-    private final NCOpenNlpTokenParserImpl delegate;
+    private final NCOpenNlpTokenParserImpl impl;
 
     /**
      *
@@ -67,16 +70,6 @@ public class NCOpenNlpTokenParser implements NCTokenParser {
     }
 
     @Override
-    public void start() {
-        delegate.start();
-    }
-
-    @Override
-    public void stop() {
-        delegate.stop();
-    }
-
-    @Override
     public List<NCToken> parse(NCRequest req) {
         return delegate.parse(req);
     }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/parser/opennlp/impl/NCOpenNlpImpl.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/parser/opennlp/impl/NCOpenNlpImpl.scala
new file mode 100644
index 0000000..fa600c4
--- /dev/null
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/internal/nlp/token/parser/opennlp/impl/NCOpenNlpImpl.scala
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nlpcraft.internal.nlp.token.parser.opennlp.impl
+
+import org.apache.nlpcraft.*
+
+/**
+  *
+  */
+class NCOpenNlpImpl:
+    def parse(req: NCRequest): java.util.List[NCToken] = ???