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 6f65e47 WIP.
6f65e47 is described below
commit 6f65e4741a01034adac44046042c8eccde454456
Author: Sergey Kamov <[email protected]>
AuthorDate: Mon Oct 11 14:57:41 2021 +0300
WIP.
---
.../main/scala/org/apache/nlpcraft/NCNlpcraft.java | 1 +
.../org/apache/nlpcraft/NCNlpcraftBuilder.java | 3 +-
.../org/apache/nlpcraft/model/NCConversation.java | 4 +-
.../org/apache/nlpcraft/model/NCModelView.java | 4 +-
.../scala/org/apache/nlpcraft/model/NCToken.java | 2 -
...ltNerElement.java => NCSynonymsNerElement.java} | 11 +++---
...aultNerParser.java => NCSynonymsNerParser.java} | 11 ++++--
.../ner/NCSynonymsNerValue.java} | 8 ++--
...ueLoader.java => NCSynonymsNerValueLoader.java} | 8 ++--
...ilder.java => NCSynonymsNerElementBuilder.java} | 26 ++++++-------
...uilder.java => NCSynonymsNerParserBuilder.java} | 22 +++++------
.../model/impl/opennlp/NCOpenNlpNerParser.java | 1 -
.../apache/nlpcraft/model/nlp/NCNlpNerToken.java | 44 +++++++++++++++++++++-
.../src/test/java/org/apache/nlpcraft/NCSpec.java | 31 ++++++++-------
14 files changed, 106 insertions(+), 70 deletions(-)
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCNlpcraft.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCNlpcraft.java
index b27b22e..d96c4c7 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCNlpcraft.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCNlpcraft.java
@@ -23,6 +23,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+// Maybe all responses should be objects to be mapped under REST.
public interface NCNlpcraft {
String ask(String txt, Map<String, Object> data, boolean enableLog, String
userId);
String ask(String txt, String userId);
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCNlpcraftBuilder.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCNlpcraftBuilder.java
index 31c9231..de3fa03 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/NCNlpcraftBuilder.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/NCNlpcraftBuilder.java
@@ -20,6 +20,7 @@ package org.apache.nlpcraft;
import org.apache.nlpcraft.model.NCModel;
public class NCNlpcraftBuilder {
+ // There we can validate user prepared model.
public NCNlpcraftBuilder withModel(NCModel mdl) {
return null;
}
@@ -29,7 +30,7 @@ public class NCNlpcraftBuilder {
// return null;
//}
- public NCNlpcraft getNCNlpcraft() {
+ public NCNlpcraft getNlpcraft() {
return null;
}
}
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 c44ac45..465150c 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
@@ -17,7 +17,7 @@
package org.apache.nlpcraft.model;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNerElement;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerElement;
import java.util.List;
import java.util.function.Predicate;
@@ -28,7 +28,7 @@ import java.util.function.Predicate;
* Conversation management is based on idea of a short-term-memory (STM). STM
can be viewed as a condensed
* short-term history of the input for a given user and data model. Every
submitted user request that was
* successfully answered is added to the conversation STM as a list of {@link
NCToken tokens}. Existing STM tokens belonging to
- * the same {@link NCDefaultNerElement#getGroups() group} will be overridden
by the more recent tokens from the same group.
+ * the same {@link NCSynonymsNerElement#getGroups() group} will be overridden
by the more recent tokens from the same group.
* Note also that tokens in STM automatically expire (i.e. context is
"forgotten") after a certain period of time and/or
* based on the depth of the conversation since the last mention.
* <p>
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelView.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelView.java
index 6d0cf6c..910d2b6 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelView.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCModelView.java
@@ -17,7 +17,7 @@
package org.apache.nlpcraft.model;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNerElement;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerElement;
import org.apache.nlpcraft.model.nlp.NCNlpNerParser;
import java.time.Duration;
@@ -157,7 +157,7 @@ public interface NCModelView extends NCMetadata {
int MODEL_VERSION_MAXLEN = 16;
/**
- * Max length for {@link NCDefaultNerElement#getId()} method.
+ * Max length for {@link NCSynonymsNerElement#getId()} method.
*/
int MODEL_ELEMENT_ID_MAXLEN = 64;
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 c3fe0d3..9a30a37 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
@@ -17,8 +17,6 @@
package org.apache.nlpcraft.model;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNerElement;
-
import java.util.List;
/**
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCDefaultNerElement.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerElement.java
similarity index 97%
rename from
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCDefaultNerElement.java
rename to
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerElement.java
index cb7912d..8834394 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCDefaultNerElement.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerElement.java
@@ -20,7 +20,6 @@ package org.apache.nlpcraft.model.impl.ner;
import org.apache.nlpcraft.model.NCConversation;
import org.apache.nlpcraft.model.NCMetadata;
import org.apache.nlpcraft.model.NCToken;
-import org.apache.nlpcraft.model.NCValue;
import java.util.Collections;
import java.util.List;
@@ -40,7 +39,7 @@ import java.util.Optional;
*
* @see NCCustomParser
*/
-public interface NCDefaultNerElement extends NCMetadata {
+public interface NCSynonymsNerElement extends NCMetadata {
/**
* Gets unique ID of this element.
* <p>
@@ -187,7 +186,7 @@ public interface NCDefaultNerElement extends NCMetadata {
}
/**
- * Gets optional map of {@link NCValue values} for this element.
+ * Gets optional map of {@link NCSynonymsNerValue values} for this element.
* <p>
* Each 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
@@ -244,7 +243,7 @@ public interface NCDefaultNerElement extends NCMetadata {
*
* @return Map of value's name and its synonyms or {@code null} if not
defined.
*/
- default List<NCValue> getValues() {
+ default List<NCSynonymsNerValue> getValues() {
return Collections.emptyList();
}
@@ -308,7 +307,7 @@ public interface NCDefaultNerElement extends NCMetadata {
* <b>JSON</b>
* <br>
* If using JSON/YAML model presentation this is set by
<code>valueLoader</code> property with value
- * of a fully qualified class name implementing {@link
NCDefaultNervalueLoader} interface. Note that
+ * of a fully qualified class name implementing {@link
NCSynonymsNerValueLoader} interface. Note that
* only one instance of the value loader will be created per model and
given class name:
* <pre class="brush: js, highlight: [14]">
* "elements": [
@@ -331,7 +330,7 @@ public interface NCDefaultNerElement extends NCMetadata {
*
* @return Optional instance of dynamic value loader.
*/
- default Optional<NCDefaultNervalueLoader> getValueLoader() {
+ default Optional<NCSynonymsNerValueLoader> getValueLoader() {
return Optional.empty();
}
}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCDefaultNerParser.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerParser.java
similarity index 95%
rename from
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCDefaultNerParser.java
rename to
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerParser.java
index 8fe00c6..8cb0a7c 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCDefaultNerParser.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerParser.java
@@ -25,8 +25,11 @@ import java.util.Map;
import java.util.Set;
// TODO: maybe class.
-public interface NCDefaultNerParser extends NCNlpNerParser {
-
+// With NCNlpNerToken elements metadata provided
+// - `Value`.
+// - group
+// - parent attributes
+public interface NCSynonymsNerParser extends NCNlpNerParser {
/**
* Default value for {@link #getMaxElementSynonyms()} method.
*/
@@ -84,7 +87,7 @@ public interface NCDefaultNerParser extends NCNlpNerParser {
* @return Set of model elements, potentially empty.
* @see NCModel#getParsers()
*/
- default Set<NCDefaultNerElement> getElements() {
+ default Set<NCSynonymsNerElement> getElements() {
return Collections.emptySet();
}
@@ -194,7 +197,7 @@ public interface NCDefaultNerParser extends NCNlpNerParser {
/**
* Gets an optional map of macros to be used in this model. Macros and
option groups are instrumental
- * in defining model's elements. See {@link NCDefaultNerElement} for
documentation on macros.
+ * in defining model's elements. See {@link NCSynonymsNerElement} for
documentation on macros.
* <p>
* <b>JSON</b>
* <br>
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCValue.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerValue.java
similarity index 90%
rename from nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCValue.java
rename to
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerValue.java
index c381322..e0b8e8a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCValue.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerValue.java
@@ -15,9 +15,7 @@
* limitations under the License.
*/
-package org.apache.nlpcraft.model;
-
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNerElement;
+package org.apache.nlpcraft.model.impl.ner;
import java.util.List;
@@ -30,9 +28,9 @@ import java.util.List;
* recognized by. Note that value name itself acts as an implicit synonym even
when no additional synonyms added
* for that value.
*
- * @see NCDefaultNerElement#getValues()
+ * @see NCSynonymsNerElement#getValues()
*/
-public interface NCValue {
+public interface NCSynonymsNerValue {
/**
* Gets value name.
*
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCDefaultNervalueLoader.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerValueLoader.java
similarity index 91%
rename from
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCDefaultNervalueLoader.java
rename to
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerValueLoader.java
index 90230e4..e0ebe5a 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCDefaultNervalueLoader.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/NCSynonymsNerValueLoader.java
@@ -17,8 +17,6 @@
package org.apache.nlpcraft.model.impl.ner;
-import org.apache.nlpcraft.model.NCValue;
-
import java.util.Set;
/**
@@ -34,7 +32,7 @@ import java.util.Set;
* 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(NCDefaultNerElement)} will be called to load
+ * each model and class of loader and method {@link
#load(NCSynonymsNerElement)} 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]">
@@ -53,12 +51,12 @@ import java.util.Set;
* ]
* </pre>
*/
-public interface NCDefaultNervalueLoader {
+public interface NCSynonymsNerValueLoader {
/**
* 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(NCDefaultNerElement owner);
+ Set<NCSynonymsNerValue> load(NCSynonymsNerElement owner);
}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCDefaultNerElementBuilder.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCSynonymsNerElementBuilder.java
similarity index 59%
rename from
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCDefaultNerElementBuilder.java
rename to
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCSynonymsNerElementBuilder.java
index b20af43..a4cb782 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCDefaultNerElementBuilder.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCSynonymsNerElementBuilder.java
@@ -17,42 +17,42 @@
package org.apache.nlpcraft.model.impl.ner.builders;
-import org.apache.nlpcraft.model.NCValue;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNerElement;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNervalueLoader;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerValue;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerElement;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerValueLoader;
import java.util.List;
import java.util.Map;
// withId is only one mandatory call.
// It is named NCSingleElementBuilder to have different name with
NCMultiElementsBuilder.
-public class NCDefaultNerElementBuilder {
- public NCDefaultNerElementBuilder withId(String id) {
+public class NCSynonymsNerElementBuilder {
+ public NCSynonymsNerElementBuilder withId(String id) {
return null;
}
- public NCDefaultNerElementBuilder withParentId(String id) {
+ public NCSynonymsNerElementBuilder withParentId(String id) {
return null;
}
- public NCDefaultNerElementBuilder withGroups(String... groups) {
+ public NCSynonymsNerElementBuilder withGroups(String... groups) {
return null;
}
- public NCDefaultNerElementBuilder withMetadata(Map<String, Object> meta) {
+ public NCSynonymsNerElementBuilder withMetadata(Map<String, Object> meta) {
return null;
}
- public NCDefaultNerElementBuilder withDescrition(String desc) {
+ public NCSynonymsNerElementBuilder withDescrition(String desc) {
return null;
}
- public NCDefaultNerElementBuilder withValues(List<NCValue> values) {
+ public NCSynonymsNerElementBuilder withValues(List<NCSynonymsNerValue>
values) {
return null;
}
- public NCDefaultNerElementBuilder withValueLoader(NCDefaultNervalueLoader
loader) {
+ public NCSynonymsNerElementBuilder
withValueLoader(NCSynonymsNerValueLoader loader) {
return null;
}
- public NCDefaultNerElementBuilder withSynonyms(List<String> syns) {
+ public NCSynonymsNerElementBuilder withSynonyms(List<String> syns) {
return null;
}
- public NCDefaultNerElement getElement() {
+ public NCSynonymsNerElement getElement() {
return null;
}
}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCDefaultNerParserBuilder.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCSynonymsNerParserBuilder.java
similarity index 56%
rename from
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCDefaultNerParserBuilder.java
rename to
nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCSynonymsNerParserBuilder.java
index c236dd6..6272b01 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCDefaultNerParserBuilder.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/ner/builders/NCSynonymsNerParserBuilder.java
@@ -17,36 +17,36 @@
package org.apache.nlpcraft.model.impl.ner.builders;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNerElement;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNerParser;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerElement;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerParser;
import java.io.File;
import java.util.List;
import java.util.Map;
-public class NCDefaultNerParserBuilder {
- public NCDefaultNerParserBuilder withMaxElementSynonyms(int
maxElementSynonyms) { return null; }
- public NCDefaultNerParserBuilder withMaxTotalSynonyms(int
maxTotalSynonyms) {
+public class NCSynonymsNerParserBuilder {
+ public NCSynonymsNerParserBuilder withMaxElementSynonyms(int
maxElementSynonyms) { return null; }
+ public NCSynonymsNerParserBuilder withMaxTotalSynonyms(int
maxTotalSynonyms) {
return null;
}
- public NCDefaultNerParserBuilder withMaxSynonymsThresholdError(boolean
maxSynonymsThresholdError) { return null; }
- public NCDefaultNerParserBuilder withDupSynonymsAllowed(boolean
dupSynonymsAllowed) {
+ public NCSynonymsNerParserBuilder withMaxSynonymsThresholdError(boolean
maxSynonymsThresholdError) { return null; }
+ public NCSynonymsNerParserBuilder withDupSynonymsAllowed(boolean
dupSynonymsAllowed) {
return null;
}
- public NCDefaultNerParserBuilder withMacros(Map<String, String> macros) {
+ public NCSynonymsNerParserBuilder withMacros(Map<String, String> macros) {
return null;
}
// 2 alterabatives.
- public NCDefaultNerParserBuilder withElements(List<NCDefaultNerElement>
elements) {
+ public NCSynonymsNerParserBuilder withElements(List<NCSynonymsNerElement>
elements) {
return null;
}
- public NCDefaultNerParserBuilder withElements(File file) {
+ public NCSynonymsNerParserBuilder withElements(File file) {
return null;
}
- public NCDefaultNerParser getNlpcraftNerParser() {
+ public NCSynonymsNerParser getNlpcraftNerParser() {
return null;
}
}
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/opennlp/NCOpenNlpNerParser.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/opennlp/NCOpenNlpNerParser.java
index 61fd8b1..8083e4b 100644
---
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/opennlp/NCOpenNlpNerParser.java
+++
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/impl/opennlp/NCOpenNlpNerParser.java
@@ -17,7 +17,6 @@
package org.apache.nlpcraft.model.impl.opennlp;
-import org.apache.nlpcraft.model.NCModel;
import org.apache.nlpcraft.model.NCModelView;
import org.apache.nlpcraft.model.NCRequest;
import org.apache.nlpcraft.model.nlp.NCNlpNerParser;
diff --git
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpNerToken.java
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpNerToken.java
index 3ace535..d14ba36 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpNerToken.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/nlp/NCNlpNerToken.java
@@ -21,8 +21,9 @@ import org.apache.nlpcraft.model.NCMetadata;
import org.apache.nlpcraft.model.NCModel;
import org.apache.nlpcraft.model.NCModelView;
import org.apache.nlpcraft.model.NCRequest;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNerElement;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerElement;
+import java.util.Collections;
import java.util.List;
// NCNlpNerTokensParser parsing result.
@@ -33,7 +34,7 @@ public interface NCNlpNerToken extends NCMetadata {
* references the element that's already defined in the model.
*
* @return ID of the detected model element.
- * @see NCDefaultNerElement#getId()
+ * @see NCSynonymsNerElement#getId()
* @see NCModel#getElements()
*/
String getId();
@@ -45,4 +46,43 @@ public interface NCNlpNerToken extends NCMetadata {
* @return List of NLP custom words that comprise detected custom model
element.
*/
List<NCNlpRichWord> getWords();
+
+ /**
+ * TODO: javadoc
+ * Gets the list of groups this token belongs to. Note that, by default,
if not specified explicitly,
+ * token always belongs to one group with ID equal to token ID.
+ *
+ * @return Token groups list. Never {@code null} - but can be empty.
+ * @see NCDefaultNerElement#getGroups()
+ */
+ default List<String> getGroups() {
+ return Collections.emptyList();
+ }
+
+ /**
+ * TODO: javadoc
+ * Gets the optional parent ID of the model element this token represents.
This only available
+ * for user-defined model elements - built-in tokens do not have parents
and this will return {@code null}.
+ *
+ * @return ID of the token's element immediate parent or {@code null} if
not available.
+ * @see NCDefaultNerElement#getParentId()
+ * @see #getAncestors()
+ */
+ default String getParentId() {
+ return null;
+ }
+
+ /**
+ * TODO: javadoc
+ *
+ * Gets the value if this token was detected via element's value (or its
synonyms). Otherwise,
+ * returns {@code null}. Only applicable for user-defined model elements -
built-in tokens
+ * do not have values, and it will return {@code null}.
+ *
+ * @return Value for the user-defined model element or {@code null}, if
not available.
+ * @see NCDefaultNerElement#getValues()
+ */
+ default String getValue() {
+ return null;
+ }
}
diff --git a/nlpcraft/src/test/java/org/apache/nlpcraft/NCSpec.java
b/nlpcraft/src/test/java/org/apache/nlpcraft/NCSpec.java
index cf2ad13..36b1be8 100644
--- a/nlpcraft/src/test/java/org/apache/nlpcraft/NCSpec.java
+++ b/nlpcraft/src/test/java/org/apache/nlpcraft/NCSpec.java
@@ -22,13 +22,13 @@ import org.apache.nlpcraft.model.NCModel;
import org.apache.nlpcraft.model.NCModelBehaviour;
import org.apache.nlpcraft.model.NCRejection;
import org.apache.nlpcraft.model.NCResult;
-import org.apache.nlpcraft.model.NCValue;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerValue;
import org.apache.nlpcraft.model.builders.NCModelBuilder;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNerElement;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNerParser;
-import org.apache.nlpcraft.model.impl.ner.NCDefaultNervalueLoader;
-import org.apache.nlpcraft.model.impl.ner.builders.NCDefaultNerElementBuilder;
-import org.apache.nlpcraft.model.impl.ner.builders.NCDefaultNerParserBuilder;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerElement;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerParser;
+import org.apache.nlpcraft.model.impl.ner.NCSynonymsNerValueLoader;
+import org.apache.nlpcraft.model.impl.ner.builders.NCSynonymsNerElementBuilder;
+import org.apache.nlpcraft.model.impl.ner.builders.NCSynonymsNerParserBuilder;
import org.apache.nlpcraft.model.impl.opennlp.NCOpenNlpNerParser;
import org.apache.nlpcraft.model.impl.opennlp.NCOpenNlpWordsParser;
import org.junit.jupiter.api.Test;
@@ -52,26 +52,26 @@ public class NCSpec {
@Test
public void test() throws Exception {
- NCDefaultNerParser ner1 =
- new NCDefaultNerParserBuilder().
+ NCSynonymsNerParser ner1 =
+ new NCSynonymsNerParserBuilder().
withElements(new File("ner1.json")).
withMaxTotalSynonyms(30).
getNlpcraftNerParser();
- NCDefaultNerParser ner2 =
- new NCDefaultNerParserBuilder().
+ NCSynonymsNerParser ner2 =
+ new NCSynonymsNerParserBuilder().
withMacros(new HashMap<>() { { put("<ACTION>",
"{turn|switch|dial|let|set|get|put}"); } }).
withElements(
Arrays.asList(
- new NCDefaultNerElementBuilder().
+ new NCSynonymsNerElementBuilder().
withId("elementID1").
withSynonyms(Arrays.asList("<ACTION> {on|up|_}",
"<ACTION> qq")).
getElement(),
- new NCDefaultNerElementBuilder().
+ new NCSynonymsNerElementBuilder().
withId("elementID2").
- withValueLoader(new NCDefaultNervalueLoader() {
+ withValueLoader(new NCSynonymsNerValueLoader() {
@Override
- public Set<NCValue> load(NCDefaultNerElement
owner) {
+ public Set<NCSynonymsNerValue>
load(NCSynonymsNerElement owner) {
return null;
}
}).
@@ -80,7 +80,6 @@ public class NCSpec {
).
getNlpcraftNerParser();
-
NCModel mdl =
new NCModelBuilder().
// Common.
@@ -113,7 +112,7 @@ public class NCSpec {
mdl.start();
- NCNlpcraft nlp = new
NCNlpcraftBuilder().withModel(mdl).getNCNlpcraft();
+ NCNlpcraft nlp = new NCNlpcraftBuilder().withModel(mdl).getNlpcraft();
String reqId = nlp.ask("weather today");