From ba4816056485fbfb8e3315df4ac1490275531ee5 Mon Sep 17 00:00:00 2001 From: Joe Date: Mon, 12 Nov 2018 00:28:30 -0300 Subject: [PATCH] [Java - Choice] Base classes porting (#957) * WIP for base classes port * Fixed implements and base classes * Modified Resource-Generator POM to include Choice resources --- .../libraries/recognizers-text-choice/pom.xml | 66 +++++++++++++++ .../resource-definitions.json | 80 +++++++++++++++++++ .../text/choice/ChoiceOptions.java | 5 ++ .../text/choice/ChoiceRecognizer.java | 64 +++++++++++++++ .../recognizers/text/choice/Constants.java | 8 ++ .../config/BooleanParserConfiguration.java | 12 +++ .../config/IChoiceParserConfiguration.java | 7 ++ .../choice/extractors/BooleanExtractor.java | 7 ++ .../choice/extractors/ChoiceExtractor.java | 42 ++++++++++ .../IBooleanExtractorConfiguration.java | 9 +++ .../IChoiceExtractorConfiguration.java | 16 ++++ .../text/choice/models/BooleanModel.java | 24 ++++++ .../text/choice/models/ChoiceModel.java | 35 ++++++++ .../text/choice/parsers/BooleanParser.java | 10 +++ .../parsers/OptionsOtherMatchParseResult.java | 7 ++ .../parsers/OptionsParseDataResult.java | 9 +++ .../text/choice/parsers/OptionsParser.java | 23 ++++++ .../text/choice/resources/ChineseChoice.java | 20 +++++ .../text/choice/resources/EnglishChoice.java | 20 +++++ .../text/choice/resources/FrenchChoice.java | 20 +++++ .../choice/resources/PortugueseChoice.java | 20 +++++ .../text/choice/resources/SpanishChoice.java | 20 +++++ .../text/choice/utilities/UnicodeUtils.java | 29 +++++++ Java/libraries/resource-generator/pom.xml | 1 + Java/pom.xml | 1 + 25 files changed, 555 insertions(+) create mode 100644 Java/libraries/recognizers-text-choice/pom.xml create mode 100644 Java/libraries/recognizers-text-choice/resource-definitions.json create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/ChoiceOptions.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/ChoiceRecognizer.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/Constants.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/config/BooleanParserConfiguration.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/config/IChoiceParserConfiguration.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/BooleanExtractor.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/ChoiceExtractor.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/IBooleanExtractorConfiguration.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/IChoiceExtractorConfiguration.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/models/BooleanModel.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/models/ChoiceModel.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/BooleanParser.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsOtherMatchParseResult.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsParseDataResult.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsParser.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/ChineseChoice.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/EnglishChoice.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/FrenchChoice.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/PortugueseChoice.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/SpanishChoice.java create mode 100644 Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/utilities/UnicodeUtils.java diff --git a/Java/libraries/recognizers-text-choice/pom.xml b/Java/libraries/recognizers-text-choice/pom.xml new file mode 100644 index 0000000000..7fdb022edb --- /dev/null +++ b/Java/libraries/recognizers-text-choice/pom.xml @@ -0,0 +1,66 @@ + + + 4.0.0 + + com.microsoft.recognizers.text.choice + recognizers-text-choice + 1.0-SNAPSHOT + jar + + ${project.groupId}:${project.artifactId} + Microsoft.Recognizers.Text - Choice Recognizers + https://github.com/Microsoft/Recognizers-Text/ + + + com.microsoft.recognizers.text + recognizers-text-java + 1.0-SNAPSHOT + ../../ + + + + + MIT License + http://www.opensource.org/licenses/mit-license.php + + + + + + Microsoft Recognizers-Text + + Microsoft + https://www.microsoft.com/ + + + + UTF-8 + + + + com.microsoft.recognizers.text + recognizers-text + 1.0-SNAPSHOT + + + com.google.guava + guava + 24.1-jre + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/resource-definitions.json b/Java/libraries/recognizers-text-choice/resource-definitions.json new file mode 100644 index 0000000000..d85490ec03 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/resource-definitions.json @@ -0,0 +1,80 @@ +{ + "outputPath": "libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/", + "configFiles": [ + { + "input": [ + "English", + "English-Choice" + ], + "output": "EnglishChoice", + "header": [ + "package com.microsoft.recognizers.text.choice.resources;", + "", + "public class EnglishChoice {" + ], + "footer": [ + "}" + ] + }, + { + "input": [ + "Spanish", + "Spanish-Choice" + ], + "output": "SpanishChoice", + "header": [ + "package com.microsoft.recognizers.text.choice.resources;", + "", + "public class SpanishChoice {" + ], + "footer": [ + "}" + ] + }, + { + "input": [ + "Portuguese", + "Portuguese-Choice" + ], + "output": "PortugueseChoice", + "header": [ + "package com.microsoft.recognizers.text.choice.resources;", + "", + "public class PortugueseChoice {" + ], + "footer": [ + "}" + ] + }, + { + "input": [ + "Chinese", + "Chinese-Choice" + ], + "output": "ChineseChoice", + "header": [ + "package com.microsoft.recognizers.text.choice.resources;", + "", + "public class ChineseChoice {" + ], + "footer": [ + "}" + ] + }, + { + "input": [ + "French", + "French-Choice" + ], + "output": "FrenchChoice", + "header": [ + "package com.microsoft.recognizers.text.choice.resources;", + "", + "public class FrenchChoice {" + ], + "footer": [ + "}" + ] + } + ] +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/ChoiceOptions.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/ChoiceOptions.java new file mode 100644 index 0000000000..1a382b42ee --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/ChoiceOptions.java @@ -0,0 +1,5 @@ +package com.microsoft.recognizers.text.choice; + +public enum ChoiceOptions { + None +} diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/ChoiceRecognizer.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/ChoiceRecognizer.java new file mode 100644 index 0000000000..eeaf7787ad --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/ChoiceRecognizer.java @@ -0,0 +1,64 @@ +package com.microsoft.recognizers.text.choice; + +import java.util.List; +import com.microsoft.recognizers.text.IModel; +import com.microsoft.recognizers.text.ModelResult; +import com.microsoft.recognizers.text.Recognizer; + +public class ChoiceRecognizer extends Recognizer { + + public ChoiceRecognizer(String targetCulture, ChoiceOptions options, + boolean lazyInitialization) { + super(targetCulture, options, lazyInitialization); + } + + public ChoiceRecognizer(String targetCulture, int options, boolean lazyInitialization) { + this(targetCulture, ChoiceOptions.values()[options], lazyInitialization); + } + + public ChoiceRecognizer(int options, boolean lazyInitialization) { + this(null, ChoiceOptions.values()[options], lazyInitialization); + } + + public ChoiceRecognizer(ChoiceOptions options, boolean lazyInitialization) { + this(null, options, lazyInitialization); + } + + public ChoiceRecognizer(boolean lazyInitialization) { + this(null, ChoiceOptions.None, lazyInitialization); + } + + public ChoiceRecognizer(int options) { + this(null, ChoiceOptions.values()[options], true); + } + + public ChoiceRecognizer(ChoiceOptions options) { + this(null, options, true); + } + + public ChoiceRecognizer() { + this(null, ChoiceOptions.None, true); + } + + public IModel GetBooleanModel(String culture, boolean fallbackToDefaultCulture) { + throw new UnsupportedOperationException(); + // return GetModel(culture, fallbackToDefaultCulture); + } + + public static List RecognizeBoolean(String query, String culture, ChoiceOptions options, boolean fallbackToDefaultCulture) { + throw new UnsupportedOperationException(); + } + + public static List RecognizeBoolean(String query, String culture, ChoiceOptions options) { + return RecognizeBoolean(query, culture, options, true); + } + + public static List RecognizeBoolean(String query, String culture) { + return RecognizeBoolean(query, culture, ChoiceOptions.None); + } + + @Override + protected void initializeConfiguration() { + throw new UnsupportedOperationException(); + } +} diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/Constants.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/Constants.java new file mode 100644 index 0000000000..d15322850a --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/Constants.java @@ -0,0 +1,8 @@ +package com.microsoft.recognizers.text.choice; + +public class Constants { + public static final String SYS_BOOLEAN_TRUE = "boolean_true"; + public static final String SYS_BOOLEAN_FALSE = "boolean_false"; + // Model type name + public static final String MODEL_BOOLEAN = "boolean"; +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/config/BooleanParserConfiguration.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/config/BooleanParserConfiguration.java new file mode 100644 index 0000000000..1b02ee5e70 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/config/BooleanParserConfiguration.java @@ -0,0 +1,12 @@ +package com.microsoft.recognizers.text.choice.config; + +import java.util.Dictionary; + +public class BooleanParserConfiguration implements IChoiceParserConfiguration { + public Dictionary Resolutions; + + @Override + public Dictionary getResolutions() { + return this.Resolutions; + } +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/config/IChoiceParserConfiguration.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/config/IChoiceParserConfiguration.java new file mode 100644 index 0000000000..763201ab77 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/config/IChoiceParserConfiguration.java @@ -0,0 +1,7 @@ +package com.microsoft.recognizers.text.choice.config; + +import java.util.Dictionary; + +public interface IChoiceParserConfiguration { + public Dictionary getResolutions(); +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/BooleanExtractor.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/BooleanExtractor.java new file mode 100644 index 0000000000..8c8b6bdf3a --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/BooleanExtractor.java @@ -0,0 +1,7 @@ +package com.microsoft.recognizers.text.choice.extractors; + +public class BooleanExtractor extends ChoiceExtractor { + public BooleanExtractor(IBooleanExtractorConfiguration config) { + super(config); + } +} diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/ChoiceExtractor.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/ChoiceExtractor.java new file mode 100644 index 0000000000..cacb9704ff --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/ChoiceExtractor.java @@ -0,0 +1,42 @@ +package com.microsoft.recognizers.text.choice.extractors; + +import java.util.ArrayList; +import java.util.List; + +import com.microsoft.recognizers.text.ExtractResult; +import com.microsoft.recognizers.text.IExtractor; + +public class ChoiceExtractor implements IExtractor { + + private IChoiceExtractorConfiguration config; + + public ChoiceExtractor(IChoiceExtractorConfiguration config) { + this.config = config; + } + + @Override + public List extract(String text) { + throw new UnsupportedOperationException(); + } + + private final double MatchValue(List source, List match, int startPosition) { + double matched = 0; + return matched; + } + + private static int IndexOfToken(List tokens, String token, int startPos) { + return 0; + } + + private final List Tokenize(String text) { + return new ArrayList<>(); + } +} +class ChoiceExtractDataResult { + + public final List OtherMatches = new ArrayList<>(); + + public final String Source = ""; + + public final double Score = 0; +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/IBooleanExtractorConfiguration.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/IBooleanExtractorConfiguration.java new file mode 100644 index 0000000000..2732d561de --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/IBooleanExtractorConfiguration.java @@ -0,0 +1,9 @@ +package com.microsoft.recognizers.text.choice.extractors; + +import java.util.regex.Pattern; + +public interface IBooleanExtractorConfiguration extends IChoiceExtractorConfiguration { + public Pattern getTrueRegex(); + + public Pattern getFalseRegex(); +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/IChoiceExtractorConfiguration.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/IChoiceExtractorConfiguration.java new file mode 100644 index 0000000000..13fb9de84c --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/extractors/IChoiceExtractorConfiguration.java @@ -0,0 +1,16 @@ +package com.microsoft.recognizers.text.choice.extractors; + +import java.util.Dictionary; +import java.util.regex.Pattern; + +public interface IChoiceExtractorConfiguration { + public Dictionary MapRegexes(); + + public Pattern getTokenRegex(); + + public boolean getAllowPartialMatch(); + + public int getMaxDistance(); + + public boolean getOnlyTopMatch(); +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/models/BooleanModel.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/models/BooleanModel.java new file mode 100644 index 0000000000..ed7c5dd043 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/models/BooleanModel.java @@ -0,0 +1,24 @@ +package com.microsoft.recognizers.text.choice.models; + +import java.util.Map; + +import com.microsoft.recognizers.text.IExtractor; +import com.microsoft.recognizers.text.IParser; +import com.microsoft.recognizers.text.ParseResult; +import com.microsoft.recognizers.text.choice.Constants; + +public class BooleanModel extends ChoiceModel { + + public BooleanModel(IParser parser, IExtractor extractor) { + super(parser, extractor); + throw new UnsupportedOperationException(); + } + + public String getModelTypeName() { + return Constants.MODEL_BOOLEAN; + } + + protected Map GetResolution(ParseResult parseResult) { + throw new UnsupportedOperationException(); + } +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/models/ChoiceModel.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/models/ChoiceModel.java new file mode 100644 index 0000000000..5d5dbc1f50 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/models/ChoiceModel.java @@ -0,0 +1,35 @@ +package com.microsoft.recognizers.text.choice.models; + +import java.util.List; +import java.util.Map; + +import com.microsoft.recognizers.text.IExtractor; +import com.microsoft.recognizers.text.IModel; +import com.microsoft.recognizers.text.IParser; +import com.microsoft.recognizers.text.ModelResult; +import com.microsoft.recognizers.text.ParseResult; +import com.microsoft.recognizers.text.choice.Constants; + +public class ChoiceModel implements IModel { + protected IExtractor Extractor; + protected IParser Parser; + + public ChoiceModel(IParser parser, IExtractor extractor) { + this.Parser = parser; + this.Extractor = extractor; + } + + @Override + public String getModelTypeName() { + return Constants.MODEL_BOOLEAN; + } + + @Override + public List parse(String query) { + throw new UnsupportedOperationException(); + } + + protected Map GetResolution(ParseResult parseResult) { + throw new UnsupportedOperationException(); + } +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/BooleanParser.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/BooleanParser.java new file mode 100644 index 0000000000..800d127d71 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/BooleanParser.java @@ -0,0 +1,10 @@ +package com.microsoft.recognizers.text.choice.parsers; + +import com.microsoft.recognizers.text.choice.config.BooleanParserConfiguration; + +public class BooleanParser extends OptionsParser { + public BooleanParser() { + super(new BooleanParserConfiguration()); + throw new UnsupportedOperationException(); + } +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsOtherMatchParseResult.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsOtherMatchParseResult.java new file mode 100644 index 0000000000..1db6376e1e --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsOtherMatchParseResult.java @@ -0,0 +1,7 @@ +package com.microsoft.recognizers.text.choice.parsers; + +public class OptionsOtherMatchParseResult { + public final double Score = 0; + public final String Text = ""; + public final Object Value = null; +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsParseDataResult.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsParseDataResult.java new file mode 100644 index 0000000000..74b3bf634e --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsParseDataResult.java @@ -0,0 +1,9 @@ +package com.microsoft.recognizers.text.choice.parsers; + +import java.util.ArrayList; +import java.util.List; + +public class OptionsParseDataResult { + public final double Score = 0; + public final List OtherMatches = new ArrayList<>(); +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsParser.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsParser.java new file mode 100644 index 0000000000..f6307d4ab5 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/parsers/OptionsParser.java @@ -0,0 +1,23 @@ +package com.microsoft.recognizers.text.choice.parsers; + +import com.microsoft.recognizers.text.ExtractResult; +import com.microsoft.recognizers.text.ParseResult; +import com.microsoft.recognizers.text.IParser; +import com.microsoft.recognizers.text.choice.config.IChoiceParserConfiguration; + +public class OptionsParser implements IParser { + + private IChoiceParserConfiguration config; + + public OptionsParser(IChoiceParserConfiguration config) { + this.config = config; + } + + public ParseResult parse(ExtractResult extractResult) { + throw new UnsupportedOperationException(); + } + + private OptionsOtherMatchParseResult TOptionsOtherMatchReuslt(ExtractResult extractResult) { + throw new UnsupportedOperationException(); + } +} \ No newline at end of file diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/ChineseChoice.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/ChineseChoice.java new file mode 100644 index 0000000000..95230ac2c8 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/ChineseChoice.java @@ -0,0 +1,20 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ + +package com.microsoft.recognizers.text.choice.resources; + +public class ChineseChoice { + + public static final String LangMarker = "Chs"; + + public static final String TokenizerRegex = "[^\\u3040-\\u30ff\\u3400-\\u4dbf\\u4e00-\\u9fff\\uf900-\\ufaff\\uff66-\\uff9f]"; + + public static final String TrueRegex = "(好[的啊呀嘞哇]|没问题|可以|中|好|同意|行|是的|是|对)|(\\uD83D\\uDC4D|\\uD83D\\uDC4C)"; + + public static final String FalseRegex = "(不行|不好|拒绝|否定|不中|不可以|不是的|不是|不对|不)|(\\uD83D\\uDC4E|\\u270B|\\uD83D\\uDD90)"; +} diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/EnglishChoice.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/EnglishChoice.java new file mode 100644 index 0000000000..ecbbeca639 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/EnglishChoice.java @@ -0,0 +1,20 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ + +package com.microsoft.recognizers.text.choice.resources; + +public class EnglishChoice { + + public static final String LangMarker = "Eng"; + + public static final String TokenizerRegex = "[^\\w\\d]"; + + public static final String TrueRegex = "\\b(true|yes|yep|y|sure|ok|agree)\\b|(\\uD83D\\uDC4D|\\uD83D\\uDC4C)"; + + public static final String FalseRegex = "\\b(false|nope|nop|no|not\\s+ok|disagree)\\b|(\\uD83D\\uDC4E|\\u270B|\\uD83D\\uDD90)"; +} diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/FrenchChoice.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/FrenchChoice.java new file mode 100644 index 0000000000..d090ea60c6 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/FrenchChoice.java @@ -0,0 +1,20 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ + +package com.microsoft.recognizers.text.choice.resources; + +public class FrenchChoice { + + public static final String LangMarker = "Fr"; + + public static final String TokenizerRegex = "[^\\w\\d\\u00E0-\\u00FC]"; + + public static final String TrueRegex = "\\b(s[uû]r|ouais|oui|yep|y|sure|approuver|accepter|consentir|d'accord|ça march[eé])\\b|(\\uD83D\\uDC4D|\\uD83D\\uDC4C)"; + + public static final String FalseRegex = "\\b(faux|nan|non|pas\\s+d'accord|pas\\s+concorder|n'est\\s+pas\\s+(correct|ok)|pas)\\b|(\\uD83D\\uDC4E|\\u270B|\\uD83D\\uDD90)"; +} diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/PortugueseChoice.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/PortugueseChoice.java new file mode 100644 index 0000000000..d0b21e0b60 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/PortugueseChoice.java @@ -0,0 +1,20 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ + +package com.microsoft.recognizers.text.choice.resources; + +public class PortugueseChoice { + + public static final String LangMarker = "Por"; + + public static final String TokenizerRegex = "[^\\w\\d\\u00E0-\\u00FC]"; + + public static final String TrueRegex = "\\b(verdade|verdadeir[oa]|sim|isso|claro|ok)\\b|(\\uD83D\\uDC4D|\\uD83D\\uDC4C)"; + + public static final String FalseRegex = "\\b(falso|n[aã]o|incorreto|nada disso)\\b|(\\uD83D\\uDC4E|\\u270B|\\uD83D\\uDD90)"; +} diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/SpanishChoice.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/SpanishChoice.java new file mode 100644 index 0000000000..6fe2907606 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/resources/SpanishChoice.java @@ -0,0 +1,20 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ + +package com.microsoft.recognizers.text.choice.resources; + +public class SpanishChoice { + + public static final String LangMarker = "Spa"; + + public static final String TokenizerRegex = "[^\\w\\d\\u00E0-\\u00FC]"; + + public static final String TrueRegex = "\\b(verdad|verdadero|sí|sip|s|si|cierto|por supuesto|ok)\\b|(\\uD83D\\uDC4D|\\uD83D\\uDC4C)"; + + public static final String FalseRegex = "\\b(falso|no|nop|n|no)\\b|(\\uD83D\\uDC4E|\\u270B|\\uD83D\\uDD90)"; +} diff --git a/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/utilities/UnicodeUtils.java b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/utilities/UnicodeUtils.java new file mode 100644 index 0000000000..069d0bbf94 --- /dev/null +++ b/Java/libraries/recognizers-text-choice/src/main/java/com/microsoft/recognizers/text/choice/utilities/UnicodeUtils.java @@ -0,0 +1,29 @@ +package com.microsoft.recognizers.text.choice.utilities; + +import java.lang.Character; +import java.util.ArrayList; +import java.util.List; + +public class UnicodeUtils { + public static boolean IsEmoji(String letter) { + final int WhereEmojiLive = 0xFFFF; // Supplementary Unicode Plane. This is where emoji live + return Character.isHighSurrogate(letter.charAt(0)) && (letter.codePointAt(0) > WhereEmojiLive); + } + + public static List Letters(String text) { + char codePoint = 0; + List result = new ArrayList<>(); + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + if (codePoint != 0) { + result.add(Character.toString(codePoint)); + codePoint = 0; + } else if (!Character.isHighSurrogate(c)) { + result.add(Character.toString(c)); + } else { + codePoint = c; + } + } + return result; + } +} \ No newline at end of file diff --git a/Java/libraries/resource-generator/pom.xml b/Java/libraries/resource-generator/pom.xml index 9804975ee7..6a9a548b20 100644 --- a/Java/libraries/resource-generator/pom.xml +++ b/Java/libraries/resource-generator/pom.xml @@ -59,6 +59,7 @@ libraries/recognizers-text-number/resource-definitions.json libraries/recognizers-text-number-with-unit/resource-definitions.json + libraries/recognizers-text-choice/resource-definitions.json libraries/recognizers-text-date-time/resource-definitions.json diff --git a/Java/pom.xml b/Java/pom.xml index 9542e75301..b19158c960 100644 --- a/Java/pom.xml +++ b/Java/pom.xml @@ -18,6 +18,7 @@ libraries/recognizers-text libraries/recognizers-text-number libraries/recognizers-text-number-with-unit + libraries/recognizers-text-choice libraries/recognizers-text-date-time tests samples/simple-console