This is an automated email from the ASF dual-hosted git repository. mawiesne pushed a commit to branch OPENNLP-1583-Reduce-compiler-warnings-in-opennlp-tools in repository https://gitbox.apache.org/repos/asf/opennlp.git
commit 0937b25ad8a2df31bd717bab6b350bb7ce856b7f Author: Martin Wiesner <[email protected]> AuthorDate: Sun Jun 30 13:20:11 2024 +0200 OPENNLP-1583 Reduce compiler warnings in opennlp-tools - rewrites code in opennlp-tools module to avoid complaints by javac - removes long-time deprecated PosModel#getPosModel() method (comment was: "This method will be removed soon") - removes long-time deprecated ChunkerModel#getChunkerModel() method --- .../tagdict/MorfologikPOSTaggerFactory.java | 5 ++-- .../main/java/opennlp/tools/chunker/ChunkerME.java | 7 +++--- .../java/opennlp/tools/chunker/ChunkerModel.java | 26 +++++++-------------- .../java/opennlp/tools/cmdline/CmdLineTool.java | 2 +- .../java/opennlp/tools/doccat/DoccatModel.java | 4 ++++ .../opennlp/tools/entitylinker/LinkedSpan.java | 4 ++++ .../opennlp/tools/formats/masc/MascDocument.java | 4 +++- .../DefaultLanguageDetectorContextGenerator.java | 7 +++++- .../tools/langdetect/LanguageDetectorME.java | 4 ++++ .../tools/langdetect/LanguageDetectorModel.java | 4 ++++ .../opennlp/tools/lemmatizer/LemmatizerME.java | 6 ++--- .../opennlp/tools/lemmatizer/LemmatizerModel.java | 10 ++++---- .../ml/AbstractEventModelSequenceTrainer.java | 5 ++-- .../src/main/java/opennlp/tools/ml/BeamSearch.java | 11 ++++----- .../java/opennlp/tools/ml/SequenceTrainer.java | 2 +- .../ml/model/SequenceClassificationModel.java | 10 ++++---- .../tools/ml/model/SequenceStreamEventStream.java | 2 +- .../java/opennlp/tools/namefind/NameFinderME.java | 6 ++--- .../tools/namefind/TokenNameFinderModel.java | 16 +++++++++---- .../java/opennlp/tools/parser/ParserModel.java | 6 ++++- .../parser/treeinsert/AttachContextGenerator.java | 2 +- .../main/java/opennlp/tools/postag/POSModel.java | 27 +++++++--------------- .../opennlp/tools/postag/POSTaggerFactory.java | 8 +++---- .../java/opennlp/tools/postag/POSTaggerME.java | 20 +++++++--------- .../tools/sentdetect/SentenceDetectorME.java | 1 + .../java/opennlp/tools/util/BaseToolFactory.java | 3 +-- .../src/main/java/opennlp/tools/util/Span.java | 2 ++ .../java/opennlp/tools/util/model/BaseModel.java | 14 +++++++---- .../tools/util/model/ChunkerModelSerializer.java | 3 ++- .../tools/util/model/POSModelSerializer.java | 2 +- .../opennlp/tools/langdetect/DummyFactory.java | 17 +++++++------- .../test/java/opennlp/tools/ml/BeamSearchTest.java | 9 ++++---- .../java/opennlp/tools/ml/MockSequenceTrainer.java | 6 ++--- .../opennlp/tools/namefind/NameFinderMETest.java | 2 +- .../tools/postag/DummyPOSTaggerFactory.java | 5 ++-- .../opennlp/tools/postag/POSTaggerFactoryTest.java | 16 ++----------- .../sentdetect/DummySentenceDetectorFactory.java | 5 ++-- .../tools/tokenize/DummyTokenizerFactory.java | 5 ++-- .../featuregen/CachedFeatureGeneratorTest.java | 3 +-- 39 files changed, 146 insertions(+), 145 deletions(-) diff --git a/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikPOSTaggerFactory.java b/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikPOSTaggerFactory.java index 85ad6e44..b3a8e2b0 100644 --- a/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikPOSTaggerFactory.java +++ b/opennlp-morfologik-addon/src/main/java/opennlp/morfologik/tagdict/MorfologikPOSTaggerFactory.java @@ -133,9 +133,8 @@ public class MorfologikPOSTaggerFactory extends POSTaggerFactory { } @Override - @SuppressWarnings("rawtypes") - public Map<String, ArtifactSerializer> createArtifactSerializersMap() { - Map<String, ArtifactSerializer> serializers = super.createArtifactSerializersMap(); + public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() { + Map<String, ArtifactSerializer<?>> serializers = super.createArtifactSerializersMap(); serializers.put(MORFOLOGIK_POSDICT_SUF, new ByteArraySerializer()); serializers.put(MORFOLOGIK_DICT_INFO_SUF, new ByteArraySerializer()); diff --git a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java index a96be802..e036742e 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java +++ b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerME.java @@ -51,7 +51,7 @@ public class ChunkerME implements Chunker { /** * The model used to assign chunk tags to a sequence of tokens. */ - private final SequenceClassificationModel<TokenTag> model; + private final SequenceClassificationModel model; private final ChunkerContextGenerator contextGenerator; private final SequenceValidator<TokenTag> sequenceValidator; @@ -80,7 +80,8 @@ public class ChunkerME implements Chunker { this.model = model.getChunkerSequenceModel(); } else { - this.model = new BeamSearch<>(DEFAULT_BEAM_SIZE, model.getChunkerModel(), 0); + this.model = new BeamSearch(DEFAULT_BEAM_SIZE, + model.getArtifact(ChunkerModel.CHUNKER_MODEL_ENTRY_NAME), 0); } } @@ -157,7 +158,7 @@ public class ChunkerME implements Chunker { TrainerType trainerType = TrainerFactory.getTrainerType(mlParams); MaxentModel chunkerModel = null; - SequenceClassificationModel<String> seqChunkerModel = null; + SequenceClassificationModel seqChunkerModel = null; if (TrainerType.EVENT_MODEL_TRAINER.equals(trainerType)) { ObjectStream<Event> es = new ChunkerEventStream(in, factory.getContextGenerator()); diff --git a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerModel.java b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerModel.java index df7cfe65..04e650a5 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerModel.java +++ b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkerModel.java @@ -20,6 +20,7 @@ package opennlp.tools.chunker; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.Serial; import java.net.URL; import java.nio.file.Path; import java.util.Map; @@ -31,7 +32,6 @@ import opennlp.tools.ml.model.MaxentModel; import opennlp.tools.ml.model.SequenceClassificationModel; import opennlp.tools.util.BaseToolFactory; import opennlp.tools.util.InvalidFormatException; -import opennlp.tools.util.TokenTag; import opennlp.tools.util.model.BaseModel; /** @@ -41,9 +41,11 @@ import opennlp.tools.util.model.BaseModel; */ public class ChunkerModel extends BaseModel { - private static final long serialVersionUID = 1608653769616498232L; + @Serial + private static final long serialVersionUID = -5450757164882452147L; + private static final String COMPONENT_NAME = "ChunkerME"; - private static final String CHUNKER_MODEL_ENTRY_NAME = "chunker.model"; + static final String CHUNKER_MODEL_ENTRY_NAME = "chunker.model"; /** * Initializes a {@link ChunkerModel} instance via given parameters. @@ -53,7 +55,7 @@ public class ChunkerModel extends BaseModel { * @param manifestInfoEntries Additional information kept in the manifest. * @param factory The {@link ChunkerFactory} for creating related objects. */ - public ChunkerModel(String languageCode, SequenceClassificationModel<String> chunkerModel, + public ChunkerModel(String languageCode, SequenceClassificationModel chunkerModel, Map<String, String> manifestInfoEntries, ChunkerFactory factory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory); artifactMap.put(CHUNKER_MODEL_ENTRY_NAME, chunkerModel); @@ -167,23 +169,11 @@ public class ChunkerModel extends BaseModel { } - /** - * @deprecated use {@link ChunkerModel#getChunkerSequenceModel()} instead. This method will be removed soon. - */ - @Deprecated - public MaxentModel getChunkerModel() { - if (artifactMap.get(CHUNKER_MODEL_ENTRY_NAME) instanceof MaxentModel) { - return (MaxentModel) artifactMap.get(CHUNKER_MODEL_ENTRY_NAME); - } - else { - return null; - } - } /** * @return Retrieves a {@link SequenceClassificationModel}. */ - public SequenceClassificationModel<TokenTag> getChunkerSequenceModel() { + public SequenceClassificationModel getChunkerSequenceModel() { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); @@ -195,7 +185,7 @@ public class ChunkerModel extends BaseModel { beamSize = Integer.parseInt(beamSizeString); } - return new BeamSearch<>(beamSize, (MaxentModel) artifactMap.get(CHUNKER_MODEL_ENTRY_NAME)); + return new BeamSearch(beamSize, (MaxentModel) artifactMap.get(CHUNKER_MODEL_ENTRY_NAME)); } else if (artifactMap.get(CHUNKER_MODEL_ENTRY_NAME) instanceof SequenceClassificationModel) { return (SequenceClassificationModel) artifactMap.get(CHUNKER_MODEL_ENTRY_NAME); diff --git a/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java b/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java index d0b2d1b5..cec52f5b 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java +++ b/opennlp-tools/src/main/java/opennlp/tools/cmdline/CmdLineTool.java @@ -45,7 +45,7 @@ public abstract class CmdLineTool { } protected String getBasicHelp(Class<?> argProxyInterface) { - return getBasicHelp(new Class[]{argProxyInterface}); + return getBasicHelp(new Class<?>[]{argProxyInterface}); } protected String getBasicHelp(Class<?>... argProxyInterfaces) { diff --git a/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatModel.java b/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatModel.java index 26776eae..a7318b01 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatModel.java +++ b/opennlp-tools/src/main/java/opennlp/tools/doccat/DoccatModel.java @@ -20,6 +20,7 @@ package opennlp.tools.doccat; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.Serial; import java.net.URL; import java.nio.file.Path; import java.util.Map; @@ -35,6 +36,9 @@ import opennlp.tools.util.model.BaseModel; */ public class DoccatModel extends BaseModel { + @Serial + private static final long serialVersionUID = -1348944493118276133L; + private static final String COMPONENT_NAME = "DocumentCategorizerME"; private static final String DOCCAT_MODEL_ENTRY_NAME = "doccat.model"; diff --git a/opennlp-tools/src/main/java/opennlp/tools/entitylinker/LinkedSpan.java b/opennlp-tools/src/main/java/opennlp/tools/entitylinker/LinkedSpan.java index ea9c09be..a12ffa9c 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/entitylinker/LinkedSpan.java +++ b/opennlp-tools/src/main/java/opennlp/tools/entitylinker/LinkedSpan.java @@ -16,6 +16,7 @@ */ package opennlp.tools.entitylinker; +import java.io.Serial; import java.util.ArrayList; import java.util.Objects; @@ -28,6 +29,9 @@ import opennlp.tools.util.Span; */ public class LinkedSpan<T extends BaseLink> extends Span { + @Serial + private static final long serialVersionUID = 2089863052379334449L; + private ArrayList<T> linkedEntries; private int sentenceid = 0; private String searchTerm; diff --git a/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascDocument.java b/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascDocument.java index aec39b88..e4e1177c 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascDocument.java +++ b/opennlp-tools/src/main/java/opennlp/tools/formats/masc/MascDocument.java @@ -315,7 +315,8 @@ public class MascDocument { * to entity type Strings, and entityIDsToTokens, mapping entity ID integers to Penn * token ID integers */ - private void addNamedEntityTags(Map<String, Map<Integer, ?>> namedEntities) { + @SuppressWarnings("unchecked") + private void addNamedEntityTags(Map<String, Map<Integer, ? extends Object>> namedEntities) { try { Map<Integer, String> entityIDtoEntityType = (Map<Integer, String>) namedEntities.get("entityIDtoEntityType"); @@ -343,6 +344,7 @@ public class MascDocument { * * tokenToBase, from Penn token ID (int) to the base and tokenToQuarks, from Penn token ID * * (int) to a List of quark IDs contained in that token. */ + @SuppressWarnings("unchecked") private void addPennTags(Map<String, Map<Integer, ?>> tagMaps) throws IOException { try { // Extract individual mappings diff --git a/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java b/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java index db5fbadf..7abe1278 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java +++ b/opennlp-tools/src/main/java/opennlp/tools/langdetect/DefaultLanguageDetectorContextGenerator.java @@ -17,6 +17,7 @@ package opennlp.tools.langdetect; +import java.io.Serial; import java.util.ArrayList; import java.util.Collection; @@ -25,10 +26,13 @@ import opennlp.tools.util.normalizer.AggregateCharSequenceNormalizer; import opennlp.tools.util.normalizer.CharSequenceNormalizer; /** - * A context generator for language detector. + * A context generator for {@link LanguageDetectorContextGenerator language detector}. */ public class DefaultLanguageDetectorContextGenerator implements LanguageDetectorContextGenerator { + @Serial + private static final long serialVersionUID = 8891936509865460799L; + protected final int minLength; protected final int maxLength; protected final CharSequenceNormalizer normalizer; @@ -50,6 +54,7 @@ public class DefaultLanguageDetectorContextGenerator implements LanguageDetector } @Override + @SuppressWarnings("unchecked") public <T extends CharSequence> T[] getContext(CharSequence document) { Collection<CharSequence> context = new ArrayList<>(); diff --git a/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorME.java b/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorME.java index 539f7c9d..6623aa6f 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorME.java +++ b/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorME.java @@ -18,6 +18,7 @@ package opennlp.tools.langdetect; import java.io.IOException; +import java.io.Serial; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; @@ -62,6 +63,9 @@ import opennlp.tools.util.TrainingParameters; */ public class LanguageDetectorME implements LanguageDetector { + @Serial + private static final long serialVersionUID = 2426614409522429702L; + protected final LanguageDetectorModel model; private final LanguageDetectorContextGenerator mContextGenerator; diff --git a/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorModel.java b/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorModel.java index a37b64f0..4f2ac4fc 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorModel.java +++ b/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageDetectorModel.java @@ -20,6 +20,7 @@ package opennlp.tools.langdetect; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.Serial; import java.net.URL; import java.util.Map; @@ -36,6 +37,9 @@ import opennlp.tools.util.model.BaseModel; */ public class LanguageDetectorModel extends BaseModel { + @Serial + private static final long serialVersionUID = -8894047401677394181L; + private static final String COMPONENT_NAME = "LanguageDetectorME"; private static final String LANGDETECT_MODEL_ENTRY_NAME = "langdetect.model"; diff --git a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java index 6898cec5..e0170051 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java +++ b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerME.java @@ -58,7 +58,7 @@ public class LemmatizerME implements Lemmatizer { protected final int beamSize; private Sequence bestSequence; - private final SequenceClassificationModel<String> model; + private final SequenceClassificationModel model; private final LemmatizerContextGenerator contextGenerator; private final SequenceValidator<String> sequenceValidator; @@ -88,7 +88,7 @@ public class LemmatizerME implements Lemmatizer { this.model = model.getLemmatizerSequenceModel(); } else { - this.model = new opennlp.tools.ml.BeamSearch<>(beamSize, + this.model = new opennlp.tools.ml.BeamSearch(beamSize, (MaxentModel) model.getLemmatizerSequenceModel(), 0); } } @@ -257,7 +257,7 @@ public class LemmatizerME implements Lemmatizer { TrainerType trainerType = TrainerFactory.getTrainerType(params); MaxentModel lemmatizerModel = null; - SequenceClassificationModel<String> seqLemmatizerModel = null; + SequenceClassificationModel seqLemmatizerModel = null; if (TrainerType.EVENT_MODEL_TRAINER.equals(trainerType)) { ObjectStream<Event> es = new LemmaSampleEventStream(samples, contextGenerator); diff --git a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerModel.java b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerModel.java index 3fa2aac3..ba467334 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerModel.java +++ b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmatizerModel.java @@ -20,6 +20,7 @@ package opennlp.tools.lemmatizer; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.Serial; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; @@ -41,6 +42,7 @@ import opennlp.tools.util.model.BaseModel; */ public class LemmatizerModel extends BaseModel { + @Serial private static final long serialVersionUID = -3362902631186156673L; private static final String COMPONENT_NAME = "StatisticalLemmatizer"; private static final String LEMMATIZER_MODEL_ENTRY_NAME = "lemmatizer.model"; @@ -53,7 +55,7 @@ public class LemmatizerModel extends BaseModel { * @param manifestInfoEntries Additional information kept in the manifest. * @param factory The {@link LemmatizerFactory} for creating related objects. */ - public LemmatizerModel(String languageCode, SequenceClassificationModel<String> lemmatizerModel, + public LemmatizerModel(String languageCode, SequenceClassificationModel lemmatizerModel, Map<String, String> manifestInfoEntries, LemmatizerFactory factory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory); artifactMap.put(LEMMATIZER_MODEL_ENTRY_NAME, lemmatizerModel); @@ -159,7 +161,7 @@ public class LemmatizerModel extends BaseModel { /** * @return Retrieves a {@link SequenceClassificationModel} instance. */ - public SequenceClassificationModel<String> getLemmatizerSequenceModel() { + public SequenceClassificationModel getLemmatizerSequenceModel() { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); @@ -171,10 +173,10 @@ public class LemmatizerModel extends BaseModel { beamSize = Integer.parseInt(beamSizeString); } - return new BeamSearch<>(beamSize, (MaxentModel) artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME)); + return new BeamSearch(beamSize, (MaxentModel) artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME)); } else if (artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME) instanceof SequenceClassificationModel) { - return (SequenceClassificationModel<String>) artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME); + return (SequenceClassificationModel) artifactMap.get(LEMMATIZER_MODEL_ENTRY_NAME); } else { return null; diff --git a/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventModelSequenceTrainer.java b/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventModelSequenceTrainer.java index a7333d31..b233df23 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventModelSequenceTrainer.java +++ b/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventModelSequenceTrainer.java @@ -27,7 +27,7 @@ import opennlp.tools.ml.model.SequenceStream; * A basic {@link EventModelSequenceTrainer} implementation that processes {@link Event events}. */ public abstract class AbstractEventModelSequenceTrainer extends AbstractTrainer implements - EventModelSequenceTrainer<Event> { + EventModelSequenceTrainer<Event> { public AbstractEventModelSequenceTrainer() { } @@ -39,8 +39,7 @@ public abstract class AbstractEventModelSequenceTrainer extends AbstractTrainer validate(); MaxentModel model = doTrain(events); - addToReport(AbstractTrainer.TRAINER_TYPE_PARAM, - EventModelSequenceTrainer.SEQUENCE_VALUE); + addToReport(AbstractTrainer.TRAINER_TYPE_PARAM, EventModelSequenceTrainer.SEQUENCE_VALUE); return model; } diff --git a/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java b/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java index f6cfec87..42df2c7b 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java +++ b/opennlp-tools/src/main/java/opennlp/tools/ml/BeamSearch.java @@ -39,7 +39,7 @@ import opennlp.tools.util.SequenceValidator; * @see SequenceValidator * @see BeamSearchContextGenerator */ -public class BeamSearch<T> implements SequenceClassificationModel<T> { +public class BeamSearch implements SequenceClassificationModel { public static final String BEAM_SIZE_PARAMETER = "BeamSize"; @@ -97,7 +97,7 @@ public class BeamSearch<T> implements SequenceClassificationModel<T> { * if no sequence could be found. */ @Override - public Sequence[] bestSequences(int numSequences, T[] sequence, + public <T> Sequence[] bestSequences(int numSequences, T[] sequence, Object[] additionalContext, double minSequenceScore, BeamSearchContextGenerator<T> cg, SequenceValidator<T> validator) { @@ -189,7 +189,7 @@ public class BeamSearch<T> implements SequenceClassificationModel<T> { * if no sequence could be found. */ @Override - public Sequence[] bestSequences(int numSequences, T[] sequence, + public <T> Sequence[] bestSequences(int numSequences, T[] sequence, Object[] additionalContext, BeamSearchContextGenerator<T> cg, SequenceValidator<T> validator) { return bestSequences(numSequences, sequence, additionalContext, zeroLog, cg, validator); } @@ -208,9 +208,9 @@ public class BeamSearch<T> implements SequenceClassificationModel<T> { * if no sequence could be found. */ @Override - public Sequence bestSequence(T[] sequence, Object[] additionalContext, + public <T> Sequence bestSequence(T[] sequence, Object[] additionalContext, BeamSearchContextGenerator<T> cg, SequenceValidator<T> validator) { - Sequence[] sequences = bestSequences(1, sequence, additionalContext, cg, validator); + Sequence[] sequences = bestSequences(1, sequence, additionalContext, cg, validator); if (sequences.length > 0) return sequences[0]; @@ -225,7 +225,6 @@ public class BeamSearch<T> implements SequenceClassificationModel<T> { for (int i = 0; i < model.getNumOutcomes(); i++) { outcomes[i] = model.getOutcome(i); } - return outcomes; } } diff --git a/opennlp-tools/src/main/java/opennlp/tools/ml/SequenceTrainer.java b/opennlp-tools/src/main/java/opennlp/tools/ml/SequenceTrainer.java index 855ca5c7..1280dfcc 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/ml/SequenceTrainer.java +++ b/opennlp-tools/src/main/java/opennlp/tools/ml/SequenceTrainer.java @@ -36,5 +36,5 @@ public interface SequenceTrainer extends Trainer { * @return The trained {@link SequenceClassificationModel}. * @throws IOException Thrown if IO errors occurred. */ - <T> SequenceClassificationModel<String> train(SequenceStream<T> events) throws IOException; + <T> SequenceClassificationModel train(SequenceStream<T> events) throws IOException; } diff --git a/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceClassificationModel.java b/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceClassificationModel.java index 5d1976fb..8329701f 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceClassificationModel.java +++ b/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceClassificationModel.java @@ -23,10 +23,8 @@ import opennlp.tools.util.SequenceValidator; /** * A classification model that can label an input {@link Sequence}. - * - * @param <T> The type of the object which is the source. */ -public interface SequenceClassificationModel<T> { +public interface SequenceClassificationModel { /** * Finds the {@link Sequence} with the highest probability. @@ -38,7 +36,7 @@ public interface SequenceClassificationModel<T> { * * @return The {@link Sequence} with the highest probability. */ - Sequence bestSequence(T[] sequence, Object[] additionalContext, + <T> Sequence bestSequence(T[] sequence, Object[] additionalContext, BeamSearchContextGenerator<T> cg, SequenceValidator<T> validator); /** @@ -53,7 +51,7 @@ public interface SequenceClassificationModel<T> { * * @return The {@link Sequence sequences} with the highest probability. */ - Sequence[] bestSequences(int numSequences, T[] sequence, Object[] additionalContext, + <T> Sequence[] bestSequences(int numSequences, T[] sequence, Object[] additionalContext, double minSequenceScore, BeamSearchContextGenerator<T> cg, SequenceValidator<T> validator); /** @@ -67,7 +65,7 @@ public interface SequenceClassificationModel<T> { * * @return The {@link Sequence sequences} with the highest probability. */ - Sequence[] bestSequences(int numSequences, T[] sequence, + <T> Sequence[] bestSequences(int numSequences, T[] sequence, Object[] additionalContext, BeamSearchContextGenerator<T> cg, SequenceValidator<T> validator); /** diff --git a/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStreamEventStream.java b/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStreamEventStream.java index 9bc5f34c..906da057 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStreamEventStream.java +++ b/opennlp-tools/src/main/java/opennlp/tools/ml/model/SequenceStreamEventStream.java @@ -43,7 +43,7 @@ public class SequenceStreamEventStream implements ObjectStream<Event> { @Override public Event read() throws IOException { while (!eventIt.hasNext()) { - Sequence<?> sequence = sequenceStream.read(); + Sequence<Event> sequence = sequenceStream.read(); if (sequence == null) { return null; } diff --git a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java index 915db34b..f8c5e667 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java +++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java @@ -64,7 +64,7 @@ public class NameFinderME implements TokenNameFinder { private final SequenceCodec<String> seqCodec; - protected final SequenceClassificationModel<String> model; + protected final SequenceClassificationModel model; protected final NameContextGenerator contextGenerator; private Sequence bestSequence; @@ -244,7 +244,7 @@ public class NameFinderME implements TokenNameFinder { Map<String, String> manifestInfoEntries = new HashMap<>(); MaxentModel nameFinderModel = null; - SequenceClassificationModel<String> seqModel = null; + SequenceClassificationModel seqModel = null; TrainerType trainerType = TrainerFactory.getTrainerType(params); @@ -259,7 +259,7 @@ public class NameFinderME implements TokenNameFinder { else if (TrainerType.EVENT_MODEL_SEQUENCE_TRAINER.equals(trainerType)) { NameSampleSequenceStream ss = new NameSampleSequenceStream(samples, factory.createContextGenerator()); - EventModelSequenceTrainer trainer = TrainerFactory.getEventModelSequenceTrainer( + EventModelSequenceTrainer<NameSample> trainer = TrainerFactory.getEventModelSequenceTrainer( params, manifestInfoEntries); nameFinderModel = trainer.train(ss); } else if (TrainerType.SEQUENCE_TRAINER.equals(trainerType)) { diff --git a/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderModel.java b/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderModel.java index 2a89a4c3..57f6b7de 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderModel.java +++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderModel.java @@ -21,6 +21,7 @@ package opennlp.tools.namefind; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.Serial; import java.net.URL; import java.nio.file.Path; import java.util.Map; @@ -47,7 +48,14 @@ import opennlp.tools.util.model.ByteArraySerializer; // TODO: Fix the model validation, on loading via constructors and input streams public class TokenNameFinderModel extends BaseModel { + @Serial + private static final long serialVersionUID = -459655422186301499L; + public static class FeatureGeneratorCreationError extends RuntimeException { + + @Serial + private static final long serialVersionUID = -7004590770543145243L; + FeatureGeneratorCreationError(Throwable t) { super(t); } @@ -74,7 +82,7 @@ public class TokenNameFinderModel extends BaseModel { * @throws IllegalArgumentException Thrown if the {@code namFinderModel} incompatible * with {@code seqCodec}. */ - public TokenNameFinderModel(String languageCode, SequenceClassificationModel<String> nameFinderModel, + public TokenNameFinderModel(String languageCode, SequenceClassificationModel nameFinderModel, byte[] generatorDescriptor, Map<String, Object> resources, Map<String, String> manifestInfoEntries, SequenceCodec<String> seqCodec, TokenNameFinderFactory factory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, factory); @@ -248,7 +256,7 @@ public class TokenNameFinderModel extends BaseModel { * @return Retrieves a valid {@link SequenceClassificationModel} or {@code null} * if no matching one could be found. */ - public SequenceClassificationModel<String> getNameFinderSequenceModel() { + public SequenceClassificationModel getNameFinderSequenceModel() { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); @@ -260,7 +268,7 @@ public class TokenNameFinderModel extends BaseModel { beamSize = Integer.parseInt(beamSizeString); } - return new BeamSearch<>(beamSize, (MaxentModel) artifactMap.get(MAXENT_MODEL_ENTRY_NAME)); + return new BeamSearch(beamSize, (MaxentModel) artifactMap.get(MAXENT_MODEL_ENTRY_NAME)); } else if (artifactMap.get(MAXENT_MODEL_ENTRY_NAME) instanceof SequenceClassificationModel) { return (SequenceClassificationModel) artifactMap.get(MAXENT_MODEL_ENTRY_NAME); @@ -290,7 +298,7 @@ public class TokenNameFinderModel extends BaseModel { } @Override - protected void createArtifactSerializers(Map<String, ArtifactSerializer> serializers) { + protected void createArtifactSerializers(Map<String, ArtifactSerializer<?>> serializers) { super.createArtifactSerializers(serializers); serializers.put("featuregen", new ByteArraySerializer()); diff --git a/opennlp-tools/src/main/java/opennlp/tools/parser/ParserModel.java b/opennlp-tools/src/main/java/opennlp/tools/parser/ParserModel.java index dd4134ef..7fd12f4b 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/parser/ParserModel.java +++ b/opennlp-tools/src/main/java/opennlp/tools/parser/ParserModel.java @@ -24,6 +24,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; +import java.io.Serial; import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Path; @@ -45,6 +46,9 @@ import opennlp.tools.util.model.POSModelSerializer; */ public class ParserModel extends BaseModel { + @Serial + private static final long serialVersionUID = 8130378166122870498L; + private static class HeadRulesSerializer implements ArtifactSerializer<opennlp.tools.parser.lang.en.HeadRules> { @@ -203,7 +207,7 @@ public class ParserModel extends BaseModel { } @Override - protected void createArtifactSerializers(Map<String, ArtifactSerializer> serializers) { + protected void createArtifactSerializers(Map<String, ArtifactSerializer<?>> serializers) { super.createArtifactSerializers(serializers); diff --git a/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/AttachContextGenerator.java b/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/AttachContextGenerator.java index 6bc4d5c5..457a2b84 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/AttachContextGenerator.java +++ b/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/AttachContextGenerator.java @@ -43,7 +43,7 @@ public class AttachContextGenerator extends AbstractContextGenerator { public String[] getContext(Object o) { Object[] parts = (Object[]) o; - return getContext((Parse[]) parts[0], (Integer) parts[1],(List<Parse>) parts[2], (Integer) parts[3]); + return getContext((Parse[]) parts[0], (Integer) parts[1], (List<Parse>) parts[2], (Integer) parts[3]); } private boolean containsPunct(Collection<Parse> puncts, String punct) { diff --git a/opennlp-tools/src/main/java/opennlp/tools/postag/POSModel.java b/opennlp-tools/src/main/java/opennlp/tools/postag/POSModel.java index 5c344641..616b6214 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/postag/POSModel.java +++ b/opennlp-tools/src/main/java/opennlp/tools/postag/POSModel.java @@ -20,6 +20,7 @@ package opennlp.tools.postag; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.Serial; import java.net.URL; import java.nio.file.Path; import java.util.Arrays; @@ -46,7 +47,9 @@ import opennlp.tools.util.model.SerializableArtifact; */ public final class POSModel extends BaseModel implements SerializableArtifact { - private static final long serialVersionUID = -6014331858195322339L; + @Serial + private static final long serialVersionUID = -3085487677101643697L; + private static final String COMPONENT_NAME = "POSTaggerME"; static final String POS_MODEL_ENTRY_NAME = "pos.model"; static final String GENERATOR_DESCRIPTOR_ENTRY_NAME = "generator.featuregen"; @@ -59,7 +62,7 @@ public final class POSModel extends BaseModel implements SerializableArtifact { * @param manifestInfoEntries Additional information kept in the manifest. * @param posFactory The {@link POSTaggerFactory} for creating related objects. */ - public POSModel(String languageCode, SequenceClassificationModel<String> posModel, + public POSModel(String languageCode, SequenceClassificationModel posModel, Map<String, String> manifestInfoEntries, POSTaggerFactory posFactory) { super(COMPONENT_NAME, languageCode, manifestInfoEntries, posFactory); @@ -177,24 +180,10 @@ public final class POSModel extends BaseModel implements SerializableArtifact { return GENERATOR_DESCRIPTOR_ENTRY_NAME.equals(entry.getKey()) && entry.getValue() == null; } - /** - * @deprecated use {@link POSModel#getPosSequenceModel} instead. This method will be removed soon. - * Only required for Parser 1.5.x backward compatibility. Newer models don't need this anymore. - */ - @Deprecated - public MaxentModel getPosModel() { - if (artifactMap.get(POS_MODEL_ENTRY_NAME) instanceof MaxentModel) { - return (MaxentModel) artifactMap.get(POS_MODEL_ENTRY_NAME); - } - else { - return null; - } - } - /** * @return Retrieves a {@link SequenceClassificationModel}. */ - public SequenceClassificationModel<String> getPosSequenceModel() { + public SequenceClassificationModel getPosSequenceModel() { Properties manifest = (Properties) artifactMap.get(MANIFEST_ENTRY); @@ -206,7 +195,7 @@ public final class POSModel extends BaseModel implements SerializableArtifact { beamSize = Integer.parseInt(beamSizeString); } - return new BeamSearch<>(beamSize, (MaxentModel) artifactMap.get(POS_MODEL_ENTRY_NAME)); + return new BeamSearch(beamSize, (MaxentModel) artifactMap.get(POS_MODEL_ENTRY_NAME)); } else if (artifactMap.get(POS_MODEL_ENTRY_NAME) instanceof SequenceClassificationModel) { return (SequenceClassificationModel) artifactMap.get(POS_MODEL_ENTRY_NAME); @@ -224,7 +213,7 @@ public final class POSModel extends BaseModel implements SerializableArtifact { } @Override - protected void createArtifactSerializers(Map<String, ArtifactSerializer> serializers) { + protected void createArtifactSerializers(Map<String, ArtifactSerializer<?>> serializers) { super.createArtifactSerializers(serializers); serializers.put("featuregen", new ByteArraySerializer()); diff --git a/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerFactory.java b/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerFactory.java index 94b0aa63..d338d4cb 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerFactory.java +++ b/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerFactory.java @@ -183,9 +183,8 @@ public class POSTaggerFactory extends BaseToolFactory { } @Override - @SuppressWarnings("rawtypes") - public Map<String, ArtifactSerializer> createArtifactSerializersMap() { - Map<String, ArtifactSerializer> serializers = super.createArtifactSerializersMap(); + public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() { + Map<String, ArtifactSerializer<?>> serializers = super.createArtifactSerializersMap(); // NOTE: This is only needed for old models and this if can be removed if support is dropped @@ -326,8 +325,7 @@ public class POSTaggerFactory extends BaseToolFactory { artifact.serialize(out); } - @SuppressWarnings("rawtypes") - static void register(Map<String, ArtifactSerializer> factories) { + static void register(Map<String, ArtifactSerializer<?>> factories) { factories.put("tagdict", new POSDictionarySerializer()); } } diff --git a/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java b/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java index 56b77c32..2deb5738 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java +++ b/opennlp-tools/src/main/java/opennlp/tools/postag/POSTaggerME.java @@ -80,7 +80,7 @@ public class POSTaggerME implements POSTagger { private Sequence bestSequence; - private final SequenceClassificationModel<String> model; + private final SequenceClassificationModel model; private final SequenceValidator<String> sequenceValidator; @@ -148,8 +148,7 @@ public class POSTaggerME implements POSTagger { if (model.getPosSequenceModel() != null) { this.model = model.getPosSequenceModel(); } else { - this.model = new opennlp.tools.ml.BeamSearch<>(beamSize, - model.getPosModel(), 0); + this.model = new BeamSearch(beamSize, model.getArtifact(POSModel.POS_MODEL_ENTRY_NAME), 0); } this.posTagFormatMapper = new POSTagFormatMapper(getAllPosTags()); @@ -233,12 +232,10 @@ public class POSTaggerME implements POSTagger { public String[] getOrderedTags(List<String> words, List<String> tags, int index, double[] tprobs) { - if (modelPackage.getPosModel() != null) { - - MaxentModel posModel = modelPackage.getPosModel(); + MaxentModel posModel = modelPackage.getArtifact(POSModel.POS_MODEL_ENTRY_NAME); + if (posModel != null) { - double[] probs = posModel.eval(contextGen.getContext(index, - words.toArray(new String[0]), + double[] probs = posModel.eval(contextGen.getContext(index, words.toArray(new String[0]), tags.toArray(new String[0]), null)); String[] orderedTags = new String[probs.length]; @@ -275,7 +272,7 @@ public class POSTaggerME implements POSTagger { TrainerType trainerType = TrainerFactory.getTrainerType(trainParams); MaxentModel posModel = null; - SequenceClassificationModel<String> seqPosModel = null; + SequenceClassificationModel seqPosModel = null; if (TrainerType.EVENT_MODEL_TRAINER.equals(trainerType)) { ObjectStream<Event> es = new POSSampleEventStream(samples, contextGenerator); @@ -398,9 +395,8 @@ public class POSTaggerME implements POSTagger { tagsForWord.add(entry.getKey()); } } - if (tagsForWord.size() > 0) { - dict.put(wordEntry.getKey(), - tagsForWord.toArray(new String[0])); + if (!tagsForWord.isEmpty()) { + dict.put(wordEntry.getKey(), tagsForWord.toArray(new String[0])); } } diff --git a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorME.java b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorME.java index ed8920b8..e65eed33 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorME.java +++ b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceDetectorME.java @@ -111,6 +111,7 @@ public class SentenceDetectorME implements SentenceDetector { * @deprecated Use a {@link SentenceDetectorFactory} to extend * SentenceDetector functionality. */ + @Deprecated public SentenceDetectorME(SentenceModel model, Factory factory) { this.model = model.getMaxentModel(); // if the model has custom EOS characters set, use this to get the context diff --git a/opennlp-tools/src/main/java/opennlp/tools/util/BaseToolFactory.java b/opennlp-tools/src/main/java/opennlp/tools/util/BaseToolFactory.java index ce816565..61c76d32 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/util/BaseToolFactory.java +++ b/opennlp-tools/src/main/java/opennlp/tools/util/BaseToolFactory.java @@ -60,8 +60,7 @@ public abstract class BaseToolFactory { * The base implementation will return a {@link HashMap} that should be * populated by subclasses. */ - @SuppressWarnings("rawtypes") - public Map<String, ArtifactSerializer> createArtifactSerializersMap() { + public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() { return new HashMap<>(); } diff --git a/opennlp-tools/src/main/java/opennlp/tools/util/Span.java b/opennlp-tools/src/main/java/opennlp/tools/util/Span.java index 3b64aa7e..cca3a177 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/util/Span.java +++ b/opennlp-tools/src/main/java/opennlp/tools/util/Span.java @@ -17,6 +17,7 @@ package opennlp.tools.util; +import java.io.Serial; import java.io.Serializable; import java.util.Objects; @@ -26,6 +27,7 @@ import java.util.Objects; */ public class Span implements Comparable<Span>, Serializable { + @Serial private static final long serialVersionUID = -7648780019844573507L; private final int start; private final int end; diff --git a/opennlp-tools/src/main/java/opennlp/tools/util/model/BaseModel.java b/opennlp-tools/src/main/java/opennlp/tools/util/model/BaseModel.java index 951ffbd5..106a32e8 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/util/model/BaseModel.java +++ b/opennlp-tools/src/main/java/opennlp/tools/util/model/BaseModel.java @@ -27,6 +27,7 @@ import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; +import java.io.Serial; import java.io.Serializable; import java.net.URL; import java.nio.file.Files; @@ -52,6 +53,9 @@ import opennlp.tools.util.ext.ExtensionLoader; // TODO: Provide subclasses access to serializers already in constructor public abstract class BaseModel implements ArtifactProvider, Serializable { + @Serial + private static final long serialVersionUID = -4593612444791752264L; + protected static final String MANIFEST_ENTRY = "manifest.properties"; protected static final String FACTORY_NAME = "factory"; @@ -67,7 +71,7 @@ public abstract class BaseModel implements ArtifactProvider, Serializable { private static final String SERIALIZER_CLASS_NAME_PREFIX = "serializer-class-"; - private Map<String, ArtifactSerializer> artifactSerializers = new HashMap<>(); + private Map<String, ArtifactSerializer<?>> artifactSerializers = new HashMap<>(); protected Map<String, Object> artifactMap = new HashMap<>(); @@ -415,12 +419,12 @@ public abstract class BaseModel implements ArtifactProvider, Serializable { * @param serializers The key of the map is the file extension used to look up * an {@link ArtifactSerializer}. */ - protected void createArtifactSerializers(Map<String, ArtifactSerializer> serializers) { + protected void createArtifactSerializers(Map<String, ArtifactSerializer<?>> serializers) { if (this.toolFactory != null) serializers.putAll(this.toolFactory.createArtifactSerializersMap()); } - private void createBaseArtifactSerializers(Map<String, ArtifactSerializer> serializers) { + private void createBaseArtifactSerializers(Map<String, ArtifactSerializer<?>> serializers) { serializers.putAll(createArtifactSerializers()); } @@ -602,7 +606,7 @@ public abstract class BaseModel implements ArtifactProvider, Serializable { continue; } - ArtifactSerializer serializer = getArtifactSerializer(name); + ArtifactSerializer<Object> serializer = (ArtifactSerializer<Object>) getArtifactSerializer(name); // If model is serialize-able always use the provided serializer if (artifact instanceof SerializableArtifact serializableArtifact) { @@ -674,11 +678,13 @@ public abstract class BaseModel implements ArtifactProvider, Serializable { // Serializable and remove the writeObject and readObject methods. // This will allow the usage of final for fields that should not change. + @Serial private void writeObject(ObjectOutputStream out) throws IOException { out.writeUTF(componentName); this.serialize(out); } + @Serial private void readObject(final ObjectInputStream in) throws IOException { isLoadedFromSerialized = true; diff --git a/opennlp-tools/src/main/java/opennlp/tools/util/model/ChunkerModelSerializer.java b/opennlp-tools/src/main/java/opennlp/tools/util/model/ChunkerModelSerializer.java index 2941d2a6..3dba89a9 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/util/model/ChunkerModelSerializer.java +++ b/opennlp-tools/src/main/java/opennlp/tools/util/model/ChunkerModelSerializer.java @@ -37,7 +37,8 @@ public class ChunkerModelSerializer implements ArtifactSerializer<ChunkerModel> Version version = model.getVersion(); if (version.getMajor() == 1 && version.getMinor() == 5) { - model = new ChunkerModel(model.getLanguage(), model.getChunkerModel(), new ParserChunkerFactory()); + model = new ChunkerModel(model.getLanguage(), model.getArtifact("chunker.model"), + new ParserChunkerFactory()); } return model; diff --git a/opennlp-tools/src/main/java/opennlp/tools/util/model/POSModelSerializer.java b/opennlp-tools/src/main/java/opennlp/tools/util/model/POSModelSerializer.java index 427afe7f..31a7393a 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/util/model/POSModelSerializer.java +++ b/opennlp-tools/src/main/java/opennlp/tools/util/model/POSModelSerializer.java @@ -48,7 +48,7 @@ public class POSModelSerializer implements ArtifactSerializer<POSModel> { // dependent code branches in other places fail manifestInfoEntries.put("OpenNLP-Version", "1.5.0"); - posModel = new POSModel(posModel.getLanguage(), posModel.getPosModel(), 10, + posModel = new POSModel(posModel.getLanguage(), posModel.getArtifact("pos.model"), 10, manifestInfoEntries, posModel.getFactory()); } } diff --git a/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java b/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java index e0e840fb..d2e56196 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java +++ b/opennlp-tools/src/test/java/opennlp/tools/langdetect/DummyFactory.java @@ -17,7 +17,7 @@ package opennlp.tools.langdetect; - +import java.io.Serial; import java.util.ArrayList; import java.util.List; @@ -28,7 +28,6 @@ import opennlp.tools.util.normalizer.CharSequenceNormalizer; public class DummyFactory extends LanguageDetectorFactory { - public DummyFactory() { super(); } @@ -40,12 +39,12 @@ public class DummyFactory extends LanguageDetectorFactory { @Override public LanguageDetectorContextGenerator getContextGenerator() { - return new MyContextGenerator(2, 5, - new UpperCaseNormalizer()); + return new MyContextGenerator(2, 5, new UpperCaseNormalizer()); } - public static class UpperCaseNormalizer implements CharSequenceNormalizer { + private static class UpperCaseNormalizer implements CharSequenceNormalizer { + @Serial private static final long serialVersionUID = 589425364183582853L; @Override @@ -54,8 +53,9 @@ public class DummyFactory extends LanguageDetectorFactory { } } - public static class MyContextGenerator extends DefaultLanguageDetectorContextGenerator { + private static class MyContextGenerator extends DefaultLanguageDetectorContextGenerator { + @Serial private static final long serialVersionUID = 5737572653101696876L; public MyContextGenerator(int min, int max, CharSequenceNormalizer... normalizers) { @@ -63,7 +63,8 @@ public class DummyFactory extends LanguageDetectorFactory { } @Override - public String[] getContext(CharSequence document) { + @SuppressWarnings("unchecked") + public <T extends CharSequence> T[] getContext(CharSequence document) { CharSequence[] superContext = super.getContext(document); List<String> context = new ArrayList<>(superContext.length); @@ -86,7 +87,7 @@ public class DummyFactory extends LanguageDetectorFactory { } } - return context.toArray(new String[0]); + return (T[]) context.toArray(new String[0]); } } } diff --git a/opennlp-tools/src/test/java/opennlp/tools/ml/BeamSearchTest.java b/opennlp-tools/src/test/java/opennlp/tools/ml/BeamSearchTest.java index bf246b87..2c9ee2ea 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/ml/BeamSearchTest.java +++ b/opennlp-tools/src/test/java/opennlp/tools/ml/BeamSearchTest.java @@ -37,6 +37,7 @@ public class BeamSearchTest { this.outcomeSequence = outcomeSequence; } + @Override public String[] getContext(int index, String[] sequence, String[] priorDecisions, Object[] additionalContext) { return new String[] {outcomeSequence[index]}; @@ -123,7 +124,7 @@ public class BeamSearchTest { String[] outcomes = new String[] {"1", "2", "3"}; MaxentModel model = new IdentityModel(outcomes); - BeamSearch<String> bs = new BeamSearch<>(3, model); + BeamSearch bs = new BeamSearch(3, model); Sequence seq = bs.bestSequence(sequence, null, cg, (int i, String[] inputSequence, String[] outcomesSequence, String outcome) -> true); @@ -143,7 +144,7 @@ public class BeamSearchTest { String[] outcomes = new String[] {"1", "2", "3"}; MaxentModel model = new IdentityModel(outcomes); - BeamSearch<String> bs = new BeamSearch<>(3, model); + BeamSearch bs = new BeamSearch(3, model); Sequence seq = bs.bestSequence(sequence, null, cg, (int i, String[] inputSequence, String[] outcomesSequence, @@ -165,7 +166,7 @@ public class BeamSearchTest { String[] outcomes = new String[] {"1", "2", "3"}; MaxentModel model = new IdentityModel(outcomes); - BeamSearch<String> bs = new BeamSearch<>(2, model); + BeamSearch bs = new BeamSearch(2, model); Sequence seq = bs.bestSequence(sequence, null, cg, (int i, String[] inputSequence, String[] outcomesSequence, @@ -191,7 +192,7 @@ public class BeamSearchTest { String[] outcomes = new String[] {"1", "2", "3"}; MaxentModel model = new IdentityModel(outcomes); - BeamSearch<String> bs = new BeamSearch<>(2, model, 0); + BeamSearch bs = new BeamSearch(2, model, 0); Sequence seq = bs.bestSequence(sequence, null, cg, (int i, String[] inputSequence, String[] outcomesSequence, diff --git a/opennlp-tools/src/test/java/opennlp/tools/ml/MockSequenceTrainer.java b/opennlp-tools/src/test/java/opennlp/tools/ml/MockSequenceTrainer.java index 83d32cd5..0d26ffbc 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/ml/MockSequenceTrainer.java +++ b/opennlp-tools/src/test/java/opennlp/tools/ml/MockSequenceTrainer.java @@ -19,15 +19,15 @@ package opennlp.tools.ml; import java.util.Map; -import opennlp.tools.commons.Sample; import opennlp.tools.ml.model.AbstractModel; +import opennlp.tools.ml.model.Event; import opennlp.tools.ml.model.SequenceStream; import opennlp.tools.util.TrainingParameters; -public class MockSequenceTrainer implements EventModelSequenceTrainer<Sample> { +public class MockSequenceTrainer implements EventModelSequenceTrainer<Event> { @Override - public AbstractModel train(SequenceStream<Sample> events) { + public AbstractModel train(SequenceStream<Event> events) { return null; } diff --git a/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java b/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java index ae71500d..7038d664 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java +++ b/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java @@ -290,7 +290,7 @@ public class NameFinderMETest { } private boolean hasOtherAsOutcome(TokenNameFinderModel nameFinderModel) { - SequenceClassificationModel<String> model = nameFinderModel.getNameFinderSequenceModel(); + SequenceClassificationModel model = nameFinderModel.getNameFinderSequenceModel(); String[] outcomes = model.getOutcomes(); for (String outcome : outcomes) { if (outcome.equals(NameFinderME.OTHER)) { diff --git a/opennlp-tools/src/test/java/opennlp/tools/postag/DummyPOSTaggerFactory.java b/opennlp-tools/src/test/java/opennlp/tools/postag/DummyPOSTaggerFactory.java index 27c7699e..394ce81c 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/postag/DummyPOSTaggerFactory.java +++ b/opennlp-tools/src/test/java/opennlp/tools/postag/DummyPOSTaggerFactory.java @@ -56,9 +56,8 @@ public class DummyPOSTaggerFactory extends POSTaggerFactory { } @Override - @SuppressWarnings("rawtypes") - public Map<String, ArtifactSerializer> createArtifactSerializersMap() { - Map<String, ArtifactSerializer> serializers = super.createArtifactSerializersMap(); + public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() { + Map<String, ArtifactSerializer<?>> serializers = super.createArtifactSerializersMap(); serializers.put(DUMMY_POSDICT, new DummyPOSDictionarySerializer()); return serializers; diff --git a/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerFactoryTest.java b/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerFactoryTest.java index f6d00d3d..d7e9c371 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerFactoryTest.java +++ b/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerFactoryTest.java @@ -41,10 +41,8 @@ import opennlp.tools.util.TrainingParameters; */ public class POSTaggerFactoryTest { - private static ObjectStream<POSSample> createSampleStream() - throws IOException { - InputStreamFactory in = new ResourceAsStreamFactory( - POSTaggerFactoryTest.class, + private static ObjectStream<POSSample> createSampleStream() throws IOException { + InputStreamFactory in = new ResourceAsStreamFactory(POSTaggerFactoryTest.class, "/opennlp/tools/postag/AnnotatedSentences.txt"); return new WordTagSampleStream(new PlainTextByLineStream(in, StandardCharsets.UTF_8)); @@ -109,20 +107,10 @@ public class POSTaggerFactoryTest { Assertions.assertThrows(InvalidFormatException.class, () -> BaseToolFactory.create("X", null)); } - @Test - void testCreateWithInvalidName2() { - Assertions.assertThrows(InvalidFormatException.class, () -> POSTaggerFactory.create("X", null, null)); - } - @Test void testCreateWithHierarchy() { Assertions.assertThrows(InvalidFormatException.class, () -> BaseToolFactory.create(Object.class.getCanonicalName(), null)); } - @Test - void testCreateWithHierarchy2() { - Assertions.assertThrows(InvalidFormatException.class, () -> - POSTaggerFactory.create(this.getClass().getCanonicalName(), null, null)); - } } diff --git a/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DummySentenceDetectorFactory.java b/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DummySentenceDetectorFactory.java index 9a88f2e5..e7747668 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DummySentenceDetectorFactory.java +++ b/opennlp-tools/src/test/java/opennlp/tools/sentdetect/DummySentenceDetectorFactory.java @@ -66,9 +66,8 @@ public class DummySentenceDetectorFactory extends SentenceDetectorFactory { } @Override - @SuppressWarnings("rawtypes") - public Map<String, ArtifactSerializer> createArtifactSerializersMap() { - Map<String, ArtifactSerializer> serializers = super.createArtifactSerializersMap(); + public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() { + Map<String, ArtifactSerializer<?>> serializers = super.createArtifactSerializersMap(); serializers.put(DUMMY_DICT, new DummyDictionarySerializer()); return serializers; } diff --git a/opennlp-tools/src/test/java/opennlp/tools/tokenize/DummyTokenizerFactory.java b/opennlp-tools/src/test/java/opennlp/tools/tokenize/DummyTokenizerFactory.java index a4c23e74..dab0577b 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/tokenize/DummyTokenizerFactory.java +++ b/opennlp-tools/src/test/java/opennlp/tools/tokenize/DummyTokenizerFactory.java @@ -64,9 +64,8 @@ public class DummyTokenizerFactory extends TokenizerFactory { } @Override - @SuppressWarnings("rawtypes") - public Map<String, ArtifactSerializer> createArtifactSerializersMap() { - Map<String, ArtifactSerializer> serializers = super.createArtifactSerializersMap(); + public Map<String, ArtifactSerializer<?>> createArtifactSerializersMap() { + Map<String, ArtifactSerializer<?>> serializers = super.createArtifactSerializersMap(); serializers.put(DUMMY_DICT, new DummyDictionarySerializer()); return serializers; } diff --git a/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CachedFeatureGeneratorTest.java b/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CachedFeatureGeneratorTest.java index 1f8ed485..05861852 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CachedFeatureGeneratorTest.java +++ b/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/CachedFeatureGeneratorTest.java @@ -29,8 +29,7 @@ import org.junit.jupiter.api.Test; */ public class CachedFeatureGeneratorTest { - private final AdaptiveFeatureGenerator[] identityGenerator = new AdaptiveFeatureGenerator[] { - new IdentityFeatureGenerator()}; + private final AdaptiveFeatureGenerator identityGenerator = new IdentityFeatureGenerator(); private String[] testSentence1;
