[
https://issues.apache.org/jira/browse/OPENNLP-1413?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17649495#comment-17649495
]
ASF GitHub Bot commented on OPENNLP-1413:
-----------------------------------------
kinow commented on code in PR #459:
URL: https://github.com/apache/opennlp/pull/459#discussion_r1052679956
##########
opennlp-tools/src/main/java/opennlp/tools/util/DownloadUtil.java:
##########
@@ -50,68 +45,81 @@ public enum ModelType {
CHUNKER("chunker"),
PARSER("parser-chunking");
- private String name;
+ private final String name;
ModelType(String name) {
this.name = name;
}
}
- private static final String baseUrl = "https://dlcdn.apache.org/opennlp/";
+ private static final String BASE_URL = "https://dlcdn.apache.org/opennlp/";
+ private static final String MODELS_UD_MODELS_1_0 = "models/ud-models-1.0/";
- public static Map<String, Map<ModelType, String>> available_models = new
HashMap<>();
+ public static final Map<String, Map<ModelType, String>> available_models =
new HashMap<>();
static {
final Map<ModelType, String> frenchModels = new HashMap<>();
frenchModels.put(ModelType.SENTENCE_DETECTOR,
- baseUrl +
"models/ud-models-1.0/opennlp-1.0-1.9.3fr-ud-ftb-sentence-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-1.0-1.9.3fr-ud-ftb-sentence-1.0-1.9.3.bin");
frenchModels.put(ModelType.POS,
- baseUrl + "models/ud-models-1.0/opennlp-fr-ud-ftb-pos-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-fr-ud-ftb-pos-1.0-1.9.3.bin");
frenchModels.put(ModelType.TOKENIZER,
- baseUrl +
"models/ud-models-1.0/opennlp-en-ud-ewt-tokens-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-en-ud-ewt-tokens-1.0-1.9.3.bin");
available_models.put("fr", frenchModels);
final Map<ModelType, String> germanModels = new HashMap<>();
germanModels.put(ModelType.SENTENCE_DETECTOR,
- baseUrl +
"models/ud-models-1.0/opennlp-de-ud-gsd-sentence-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-de-ud-gsd-sentence-1.0-1.9.3.bin");
germanModels.put(ModelType.POS,
- baseUrl + "models/ud-models-1.0/opennlp-de-ud-gsd-pos-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-de-ud-gsd-pos-1.0-1.9.3.bin");
germanModels.put(ModelType.TOKENIZER,
- baseUrl +
"models/ud-models-1.0/opennlp-de-ud-gsd-tokens-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-de-ud-gsd-tokens-1.0-1.9.3.bin");
available_models.put("de", germanModels);
final Map<ModelType, String> englishModels = new HashMap<>();
englishModels.put(ModelType.SENTENCE_DETECTOR,
- baseUrl +
"models/ud-models-1.0/opennlp-en-ud-ewt-sentence-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-en-ud-ewt-sentence-1.0-1.9.3.bin");
englishModels.put(ModelType.POS,
- baseUrl + "models/ud-models-1.0/opennlp-en-ud-ewt-pos-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-en-ud-ewt-pos-1.0-1.9.3.bin");
englishModels.put(ModelType.TOKENIZER,
- baseUrl +
"models/ud-models-1.0/opennlp-en-ud-ewt-tokens-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-en-ud-ewt-tokens-1.0-1.9.3.bin");
available_models.put("en", englishModels);
final Map<ModelType, String> italianModels = new HashMap<>();
italianModels.put(ModelType.SENTENCE_DETECTOR,
- baseUrl +
"models/ud-models-1.0/opennlp-it-ud-vit-sentence-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-it-ud-vit-sentence-1.0-1.9.3.bin");
italianModels.put(ModelType.POS,
- baseUrl + "models/ud-models-1.0/opennlp-it-ud-vit-pos-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-it-ud-vit-pos-1.0-1.9.3.bin");
italianModels.put(ModelType.TOKENIZER,
- baseUrl +
"models/ud-models-1.0/opennlp-it-ud-vit-sentence-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-it-ud-vit-sentence-1.0-1.9.3.bin");
available_models.put("it", italianModels);
final Map<ModelType, String> dutchModels = new HashMap<>();
dutchModels.put(ModelType.SENTENCE_DETECTOR,
- baseUrl + "models/opennlp-nl-ud-alpino-sentence-1.0-1.9.3.bin");
+ BASE_URL + "models/opennlp-nl-ud-alpino-sentence-1.0-1.9.3.bin");
dutchModels.put(ModelType.POS,
- baseUrl +
"models/ud-models-1.0/opennlp-nl-ud-alpino-pos-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-nl-ud-alpino-pos-1.0-1.9.3.bin");
dutchModels.put(ModelType.TOKENIZER,
- baseUrl +
"models/ud-models-1.0/opennlp-nl-ud-alpino-tokens-1.0-1.9.3.bin");
+ BASE_URL + MODELS_UD_MODELS_1_0 +
"opennlp-nl-ud-alpino-tokens-1.0-1.9.3.bin");
available_models.put("nl", dutchModels);
}
- public static BaseModel downloadModel(String language, ModelType modelType,
Class<?> type)
- throws IOException {
+ /**
+ * Triggers a download for the {@link DownloadUtil.ModelType}
Review Comment:
Missing period.
##########
opennlp-tools/src/main/java/opennlp/tools/util/DownloadUtil.java:
##########
@@ -144,29 +158,20 @@ public static BaseModel downloadModel(URL url, Class<?>
type) throws IOException
final Path localFile = Paths.get(homeDirectory.toString(), filename);
if (!Files.exists(localFile)) {
-
System.out.println("Downloading model " + url + " to " + localFile);
try (final InputStream in = url.openStream()) {
Files.copy(in, localFile, StandardCopyOption.REPLACE_EXISTING);
}
System.out.println("Download complete.");
-
}
- if (type == TokenizerModel.class) {
- return new TokenizerModel(localFile);
- } else if (type == ChunkerModel.class) {
- return new ChunkerModel(localFile);
- } else if (type == SentenceModel.class) {
- return new SentenceModel(localFile);
- } else if (type == POSModel.class) {
- return new POSModel(localFile);
- } else {
- return new TokenNameFinderModel(localFile);
+ try {
+ return type.getConstructor(Path.class).newInstance(localFile);
Review Comment:
Or we could provide the constructor as a function, I think, e.g.
https://www.baeldung.com/java-8-double-colon-operator#1-create-a-new-instance
##########
opennlp-tools/src/main/java/opennlp/tools/util/DownloadUtil.java:
##########
@@ -144,29 +158,20 @@ public static BaseModel downloadModel(URL url, Class<?>
type) throws IOException
final Path localFile = Paths.get(homeDirectory.toString(), filename);
if (!Files.exists(localFile)) {
-
System.out.println("Downloading model " + url + " to " + localFile);
try (final InputStream in = url.openStream()) {
Files.copy(in, localFile, StandardCopyOption.REPLACE_EXISTING);
}
System.out.println("Download complete.");
-
}
- if (type == TokenizerModel.class) {
- return new TokenizerModel(localFile);
- } else if (type == ChunkerModel.class) {
- return new ChunkerModel(localFile);
- } else if (type == SentenceModel.class) {
- return new SentenceModel(localFile);
- } else if (type == POSModel.class) {
- return new POSModel(localFile);
- } else {
- return new TokenNameFinderModel(localFile);
+ try {
+ return type.getConstructor(Path.class).newInstance(localFile);
Review Comment:
:ok_man:
> Enhance JavaDoc in opennlp.tools.util package
> ---------------------------------------------
>
> Key: OPENNLP-1413
> URL: https://issues.apache.org/jira/browse/OPENNLP-1413
> Project: OpenNLP
> Issue Type: Improvement
> Components: Documentation
> Affects Versions: 2.1.0
> Reporter: Martin Wiesner
> Assignee: Martin Wiesner
> Priority: Minor
> Fix For: 2.1.1
>
>
> The JavaDoc the _opennlp.tools.util_ package suffers from several
> inconsistencies and missing descriptions. Moreover, several typos are present
> that need sanitizing.
> It needs enhancements and/or additions to provide more clarity for readers.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)