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:14 UTC
[incubator-nlpcraft] 01/02: WIP (refactoring, cleanup).
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;
- }
-}