This is an automated email from the ASF dual-hosted git repository.
sergeykamov pushed a commit to branch NLPCRAFT-468
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
The following commit(s) were added to refs/heads/NLPCRAFT-468 by this push:
new bef3404 WIP.
bef3404 is described below
commit bef3404946b82509b369a24840ccd6042f533178
Author: Sergey Kamov <[email protected]>
AuthorDate: Tue Oct 12 22:51:00 2021 +0300
WIP.
---
.../org/apache/nlpcraft/spring/NlpCraftConfig.java | 1 +
.../org/apache/nlpcraft/model/NCConversation.java | 2 +-
.../org/apache/nlpcraft/model/NCMetadata.java | 120 +++++++++++++++++++++
.../org/apache/nlpcraft/model/NCModelConfig.java | 13 +--
.../scala/org/apache/nlpcraft/model/NCRequest.java | 1 -
.../scala/org/apache/nlpcraft/model/NCToken.java | 19 +---
.../model/builders/NCModelConfigBuilder.java | 8 +-
.../detectors/NCDefaultStopWordsDetector.java | 4 +-
.../detectors/NCDefaultSwearWordsDetector.java | 4 +-
.../detectors/NCSimpleWordsDetector.java | 4 +-
.../ner/synonyms/NCSynonymsNerElement.java | 3 +-
.../org/apache/nlpcraft/model/nlp/NCNlpToken.java | 7 +-
...{NCNlpDetector.java => NCNlpWordsDetector.java} | 2 +-
.../org/apache/nlpcraft/rest/NCAskRequest.java | 2 +-
.../src/test/java/org/apache/nlpcraft/NCSpec.java | 46 +++++++-
15 files changed, 189 insertions(+), 47 deletions(-)
diff --git
a/nlpcraft-spring/src/test/java/org/apache/nlpcraft/spring/NlpCraftConfig.java
b/nlpcraft-spring/src/test/java/org/apache/nlpcraft/spring/NlpCraftConfig.java
index f2469e6..08b2c8a 100644
---
a/nlpcraft-spring/src/test/java/org/apache/nlpcraft/spring/NlpCraftConfig.java
+++
b/nlpcraft-spring/src/test/java/org/apache/nlpcraft/spring/NlpCraftConfig.java
@@ -47,6 +47,7 @@ public class NlpCraftConfig {
new NCModelBuilder().
withConfig(cfg).
withIntents(Arrays.asList(intent1, intent2)).
+ withIntentsClasses(Arrays.asList(NlpCraftConfig.class)).
getModel();
}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
index fd30366..6de2333 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
@@ -23,7 +23,7 @@ import java.util.List;
import java.util.function.Predicate;
/**
- * TODO: drop reference to NCSynonymsNerElement.
+ * TODO: javadoc. drop reference to NCSynonymsNerElement.
* Conversation container for unique combination of user and data model.
* <p>
* Conversation management is based on idea of a short-term-memory (STM). STM
can be viewed as a condensed
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCMetadata.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCMetadata.java
new file mode 100644
index 0000000..91c10f4
--- /dev/null
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCMetadata.java
@@ -0,0 +1,120 @@
+/*
+ * 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
+ *
+ * http://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.model;
+
+import org.apache.nlpcraft.common.*;
+import java.util.*;
+
+/**
+ * Provides support for mutable runtime-only metadata.
+ * <p>
+ * Read full documentation in <a target=_
href="https://nlpcraft.apache.org/data-model.html">Data Model</a> section and
review
+ * <a target=_
href="https://github.com/apache/incubator-nlpcraft/tree/master/nlpcraft-examples">examples</a>.
+ */
+public interface NCMetadata {
+ /**
+ * Factory for creating metadata out of standard map.
+ *
+ * @param map Map to convert to metadata.
+ * @return Newly created metadata container.
+ */
+ static NCMetadata apply(Map<String, Object> map) {
+ return () -> map;
+ }
+
+ /**
+ * Gets mutable metadata underlying container.
+ * Returned map can be used to mutate the metadata or perform any other
operations.
+ *
+ * @return Mutable, underlying metadata container.
+ * @see #meta(String)
+ * @see #metaOpt(String)
+ * @see #meta(String, Object)
+ */
+ Map<String, Object> getMetadata();
+
+ /**
+ * Shortcut method to get given optional metadata property. Equivalent to:
+ * <pre class="brush: java">
+ * Optional.ofNullable((T)getMetadata().get(prop));
+ * </pre>
+ *
+ * @param prop Metadata property name.
+ * @param <T> Type of the metadata property.
+ * @return Metadata optional property value.
+ */
+ @SuppressWarnings("unchecked")
+ default <T> Optional<T> metaOpt(String prop) {
+ return Optional.ofNullable((T)getMetadata().get(prop));
+ }
+
+ /**
+ * Shortcut method to get given metadata property. Equivalent to:
+ * <pre class="brush: java">
+ * (T)getMetadata().get(prop);
+ * </pre>
+ *
+ * @param prop Metadata property name.
+ * @param <T> Type of the metadata property.
+ * @return Metadata property value or {@code null} if given metadata
property not found.
+ */
+ @SuppressWarnings("unchecked")
+ default <T> T meta(String prop) {
+ return (T)getMetadata().get(prop);
+ }
+
+ /**
+ * Shortcut method to get given mandatory metadata property. Equivalent to:
+ * <pre class="brush: java">
+ * T t = (T)getMetadata().get(prop);
+ * if (t == null)
+ * throw new NCException("Mandatory metadata property not found: "
+ prop);
+ * else
+ * return t;
+ * </pre>
+ *
+ * @param prop Metadata property name.
+ * @param <T> Type of the metadata property.
+ * @return Metadata property value or throws an exception if given
metadata property not found.
+ * @throws NCException Thrown if given metadata property not found.
+ */
+ default <T> T metax(String prop) throws NCException {
+ T t = meta(prop);
+
+ if (t == null)
+ throw new NCException("Mandatory metadata property not found: " +
prop);
+ else
+ return t;
+ }
+
+ /**
+ * Shortcut method to get given metadata property. Equivalent to:
+ * <pre class="brush: java">
+ * getMetadata().get(tokId, prop, dflt);
+ * </pre>
+ *
+ * @param prop Metadata property name.
+ * @param dflt Default value to return if specified one isn't set.
+ * @param <T> Type of the metadata property.
+ * @return Metadata property value or default value if one isn't set.
+ */
+ @SuppressWarnings("unchecked")
+ default <T> T meta(String prop, T dflt) {
+ return (T)getMetadata().getOrDefault(prop, dflt);
+ }
+}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelConfig.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelConfig.java
index d8d8856..25f437c 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelConfig.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelConfig.java
@@ -23,7 +23,7 @@ import
org.apache.nlpcraft.model.components.ner.synonyms.NCSynonymsNerElement;
import org.apache.nlpcraft.model.components.tokenizer.NCOpenNlpTokenizer;
import org.apache.nlpcraft.model.nlp.NCNlpNerParser;
import org.apache.nlpcraft.model.nlp.NCNlpTokenizer;
-import org.apache.nlpcraft.model.nlp.NCNlpDetector;
+import org.apache.nlpcraft.model.nlp.NCNlpWordsDetector;
import java.time.Duration;
import java.util.Collections;
@@ -699,17 +699,14 @@ public interface NCModelConfig {
}
// TODO: dropped. getSuspiciousWords,
- // TODO: dropped - getAdditionalStopWords, getExcludedStopWords - just
override if necessary getStopWordsDetector.
-
- default NCNlpDetector getStopWordsDetector() {
+ // TODO: dropped - getAdditionalStopWords, getExcludedStopWords - just
override if necessary getStopWordsDetector.
+ default NCNlpWordsDetector getStopWordsDetector() {
return new NCDefaultStopWordsDetector();
}
-
- default NCNlpDetector getSwearWordsDetector() {
+ default NCNlpWordsDetector getSwearWordsDetector() {
return new NCDefaultSwearWordsDetector();
}
-
- default NCNlpDetector getSuspiciousWordsDetector() {
+ default NCNlpWordsDetector getSuspiciousWordsDetector() {
return null;
}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCRequest.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCRequest.java
index d8db100..74e7ede 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCRequest.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCRequest.java
@@ -27,7 +27,6 @@ import java.util.Optional;
*/
public interface NCRequest {
/**
- * TODO: optional?
* Gets descriptor of the user on behalf of which this request was
submitted.
*
* @return User descriptor.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
index e9517d4..a7ca808 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
@@ -29,21 +29,13 @@ import java.util.Map;
*
* @see NCDefaultNerElement
*/
-public interface NCToken {
- /**
- * TODO: drop it.
- * Gets reference to the model this token belongs to.
- *
- * @return Model reference.
- */
- NCModel getModel();
-
+public interface NCToken extends NCMetadata {
/**
* Gets ID of the server request this token is part of.
*
* @return ID of the server request this token is part of.
*/
- String getServerRequestId();
+ String getRequestId();
/**
* If this token represents user defined model element this method returns
@@ -275,11 +267,6 @@ public interface NCToken {
*/
String getUnid();
- // TODO: maybe add it?
+ // TODO: javadoc
List<Integer> getWordsIndexes();
-
- // TODO: maybe add it?
- default Map<String, Object> getMetadata() {
- return Collections.emptyMap();
- }
}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/builders/NCModelConfigBuilder.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/builders/NCModelConfigBuilder.java
index ecb6a06..b622753 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/builders/NCModelConfigBuilder.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/builders/NCModelConfigBuilder.java
@@ -18,7 +18,7 @@
package org.apache.nlpcraft.model.builders;
import org.apache.nlpcraft.model.NCModelConfig;
-import org.apache.nlpcraft.model.nlp.NCNlpDetector;
+import org.apache.nlpcraft.model.nlp.NCNlpWordsDetector;
import org.apache.nlpcraft.model.nlp.NCNlpNerParser;
import org.apache.nlpcraft.model.nlp.NCNlpTokenizer;
@@ -79,17 +79,17 @@ public class NCModelConfigBuilder {
// 2. Specail words detectors. Free implementation supported.
// Has default.
- public NCModelConfigBuilder withStopWordsDetector(NCNlpDetector detector) {
+ public NCModelConfigBuilder withStopWordsDetector(NCNlpWordsDetector
detector) {
return this;
}
// Has default.
- public NCModelConfigBuilder withSwearWordsDetector(NCNlpDetector detector)
{
+ public NCModelConfigBuilder withSwearWordsDetector(NCNlpWordsDetector
detector) {
return this;
}
// Empty by default.
- public NCModelConfigBuilder withSuspiciousWordsDetector(NCNlpDetector
detector) {
+ public NCModelConfigBuilder withSuspiciousWordsDetector(NCNlpWordsDetector
detector) {
return this;
}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCDefaultStopWordsDetector.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCDefaultStopWordsDetector.java
index b736117..b81fd1f 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCDefaultStopWordsDetector.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCDefaultStopWordsDetector.java
@@ -18,7 +18,7 @@
package org.apache.nlpcraft.model.components.detectors;
import org.apache.nlpcraft.model.nlp.NCNlpWord;
-import org.apache.nlpcraft.model.nlp.NCNlpDetector;
+import org.apache.nlpcraft.model.nlp.NCNlpWordsDetector;
import java.util.Collections;
import java.util.List;
@@ -26,7 +26,7 @@ import java.util.List;
/**
* Stopwords detector default implementation.
*/
-public class NCDefaultStopWordsDetector implements NCNlpDetector {
+public class NCDefaultStopWordsDetector implements NCNlpWordsDetector {
@Override
public List<NCNlpWord> detect(List<NCNlpWord> sen) {
return Collections.emptyList();
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCDefaultSwearWordsDetector.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCDefaultSwearWordsDetector.java
index 69026a6..a51c8f1 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCDefaultSwearWordsDetector.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCDefaultSwearWordsDetector.java
@@ -18,7 +18,7 @@
package org.apache.nlpcraft.model.components.detectors;
import org.apache.nlpcraft.model.nlp.NCNlpWord;
-import org.apache.nlpcraft.model.nlp.NCNlpDetector;
+import org.apache.nlpcraft.model.nlp.NCNlpWordsDetector;
import java.util.Collections;
import java.util.List;
@@ -26,7 +26,7 @@ import java.util.List;
/**
* Swearwords detector default implementation.
*/
-public class NCDefaultSwearWordsDetector implements NCNlpDetector {
+public class NCDefaultSwearWordsDetector implements NCNlpWordsDetector {
@Override
public List<NCNlpWord> detect(List<NCNlpWord> sen) {
return Collections.emptyList();
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCSimpleWordsDetector.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCSimpleWordsDetector.java
index 0c471af..712bdb6 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCSimpleWordsDetector.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/detectors/NCSimpleWordsDetector.java
@@ -18,7 +18,7 @@
package org.apache.nlpcraft.model.components.detectors;
import org.apache.nlpcraft.model.nlp.NCNlpWord;
-import org.apache.nlpcraft.model.nlp.NCNlpDetector;
+import org.apache.nlpcraft.model.nlp.NCNlpWordsDetector;
import java.util.Collections;
import java.util.List;
@@ -28,7 +28,7 @@ import java.util.stream.Collectors;
/**
*
*/
-public class NCSimpleWordsDetector implements NCNlpDetector {
+public class NCSimpleWordsDetector implements NCNlpWordsDetector {
private final Set<String> words;
public NCSimpleWordsDetector(Set<String> words) {
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/ner/synonyms/NCSynonymsNerElement.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/ner/synonyms/NCSynonymsNerElement.java
index 58ab8e7..4850d50 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/ner/synonyms/NCSynonymsNerElement.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/components/ner/synonyms/NCSynonymsNerElement.java
@@ -18,6 +18,7 @@
package org.apache.nlpcraft.model.components.ner.synonyms;
import org.apache.nlpcraft.model.NCConversation;
+import org.apache.nlpcraft.model.NCMetadata;
import org.apache.nlpcraft.model.NCToken;
import java.util.Collections;
@@ -38,7 +39,7 @@ import java.util.Optional;
*
* @see NCCustomParser
*/
-public interface NCSynonymsNerElement {
+public interface NCSynonymsNerElement extends NCMetadata {
/**
* Gets unique ID of this element.
* <p>
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpToken.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpToken.java
index e6888f9..e28fb38 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpToken.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpToken.java
@@ -17,6 +17,7 @@
package org.apache.nlpcraft.model.nlp;
+import org.apache.nlpcraft.model.NCMetadata;
import org.apache.nlpcraft.model.NCModel;
import org.apache.nlpcraft.model.NCModelConfig;
import org.apache.nlpcraft.model.NCRequest;
@@ -27,14 +28,14 @@ import java.util.List;
import java.util.Map;
// NCNlpNerTokensParser parsing result.
-public interface NCNlpToken {
+public interface NCNlpToken extends NCMetadata {
/**
* Gets ID of the detected model element. Note that it <b>must
correspond</b> to one of the elements
* defined in the model. In other words, the parser doesn't define a new
model element but rather
* references the element that's already defined in the model.
*
* @return ID of the detected model element.
- * @see NCSynonymsNerElement#getId() TODO: drop it.
+ * @see NCSynonymsNerElement#getId() TODO: javadoc drop it.
* @see NCModel#getElements()
*/
String getId();
@@ -86,7 +87,7 @@ public interface NCNlpToken {
return null;
}
- // TODO:
+ // TODO: metadata.
default Map<String, Object> getMetadata() {
return Collections.emptyMap();
}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpDetector.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpWordsDetector.java
similarity index 97%
rename from
nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpDetector.java
rename to
nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpWordsDetector.java
index 222aab1..bd79078 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpDetector.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpWordsDetector.java
@@ -33,7 +33,7 @@ import java.util.List;
* Custom and language related solutions should be implemented and set in
model configuration.
*
*/
-public interface NCNlpDetector {
+public interface NCNlpWordsDetector {
/**
* Finds words by some criteria in given words list.
*
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/rest/NCAskRequest.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/rest/NCAskRequest.java
index 120c11d..84ca125 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/rest/NCAskRequest.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/rest/NCAskRequest.java
@@ -3,7 +3,7 @@ package org.apache.nlpcraft.rest;
import java.util.Map;
public class NCAskRequest {
- // TODO: add all validations.
+ // TODO: add all Spring validations.
public String txt;
public Map<String, Object> data;
public boolean enableLog;
diff --git a/nlpcraft/src/test/java/org/apache/nlpcraft/NCSpec.java
b/nlpcraft/src/test/java/org/apache/nlpcraft/NCSpec.java
index 11a2b0b..880e466 100644
--- a/nlpcraft/src/test/java/org/apache/nlpcraft/NCSpec.java
+++ b/nlpcraft/src/test/java/org/apache/nlpcraft/NCSpec.java
@@ -24,6 +24,8 @@ import org.apache.nlpcraft.model.NCRejection;
import org.apache.nlpcraft.model.NCModelConfig;
import org.apache.nlpcraft.model.NCResult;
import org.apache.nlpcraft.model.builders.NCModelConfigBuilder;
+import
org.apache.nlpcraft.model.components.detectors.NCDefaultStopWordsDetector;
+import org.apache.nlpcraft.model.components.detectors.NCSimpleWordsDetector;
import org.apache.nlpcraft.model.components.ner.synonyms.NCSynonymsNerValue;
import org.apache.nlpcraft.model.builders.NCModelBuilder;
import org.apache.nlpcraft.model.components.ner.synonyms.NCSynonymsNerElement;
@@ -33,21 +35,58 @@ import
org.apache.nlpcraft.model.components.ner.synonyms.builders.NCSynonymsNerE
import
org.apache.nlpcraft.model.components.ner.synonyms.builders.NCSynonymsNerParserBuilder;
import org.apache.nlpcraft.model.components.ner.opennlp.NCOpenNlpNerParser;
import org.apache.nlpcraft.model.components.tokenizer.NCOpenNlpTokenizer;
+import org.apache.nlpcraft.model.nlp.NCNlpWordsDetector;
+import org.apache.nlpcraft.model.nlp.NCNlpWord;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.net.URL;
import java.util.Arrays;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
import org.apache.nlpcraft.model.NCIntentRef;
public class NCSpec {
private static class SomeClassWithIntents {
@NCIntentRef("remove:waypoint")
public void x() {
+ // No-op.
+ }
+ }
+ private static class CustomStopWordsDetector implements NCNlpWordsDetector
{
+ private final static Set<String> ADDITIONAL = new HashSet<>() {
+ {
+ add("stop1");
+ add("stop2");
+ }
+ };
+
+ private final static NCNlpWordsDetector STANDARD = new
NCDefaultStopWordsDetector();
+
+ @Override
+ public List<NCNlpWord> detect(List<NCNlpWord> sen) {
+ return
+ Stream.concat(
+ STANDARD.detect(sen).stream(),
+ sen.stream().filter(p ->
ADDITIONAL.contains(p.getWord()))
+ ).
+ distinct().
+ sorted(
+ new Comparator<NCNlpWord>() {
+ @Override
+ public int compare(NCNlpWord w1, NCNlpWord w2) {
+ return Integer.compare(w1.getStart(),
w2.getStart());
+ }
+ }
+ ).collect(Collectors.toList());
}
}
@@ -86,10 +125,8 @@ public class NCSpec {
// Common.
withId("modleId").
withName("name").
- // TODO:
-// withSwearWordsAllowed(true).
-// // Stopwords etc.
-// withAdditionalStopWords(new HashSet<>(Arrays.asList("x1",
"x2"))).
+ withSuspiciousWordsDetector(new
NCSimpleWordsDetector(Collections.singleton("bad"))).
+ withStopWordsDetector(new CustomStopWordsDetector()).
// Nlp tokenizer.
withTokenizer(new NCOpenNlpTokenizer()).
// NERs.
@@ -102,7 +139,6 @@ public class NCSpec {
// Intents.
withIntentsFromUrls(Collections.singletonList(new
URL("http://urls.com"))).
withIntentsClasses(Collections.singletonList(SomeClassWithIntents.class)).
- // You can set link on this if prepare model without builder.
withIntentsObjects(Collections.singletonList(new
SomeClassWithIntents())).
withIntentsSamples(
new HashMap<>() { { put("intent1",
Arrays.asList(Arrays.asList("sample1", "sample2"))); } }