This is an automated email from the ASF dual-hosted git repository. mawiesne pushed a commit to branch OPENNLP-1667-Add-thread-safe-version-of-ChunkerME in repository https://gitbox.apache.org/repos/asf/opennlp.git
commit 1efbc1c15573147ff701b2de4ce279c0979dccec Author: Martin Wiesner <[email protected]> AuthorDate: Thu Dec 12 09:13:07 2024 +0100 OPENNLP-1667 Add thread-safe version of ChunkerME --- .../ThreadSafeChunkerME.java} | 54 +++++++++++++--------- .../tools/lemmatizer/ThreadSafeLemmatizerME.java | 10 ++-- 2 files changed, 37 insertions(+), 27 deletions(-) diff --git a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/ThreadSafeLemmatizerME.java b/opennlp-tools/src/main/java/opennlp/tools/chunker/ThreadSafeChunkerME.java similarity index 54% copy from opennlp-tools/src/main/java/opennlp/tools/lemmatizer/ThreadSafeLemmatizerME.java copy to opennlp-tools/src/main/java/opennlp/tools/chunker/ThreadSafeChunkerME.java index ba84c83b..5d92ba21 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/ThreadSafeLemmatizerME.java +++ b/opennlp-tools/src/main/java/opennlp/tools/chunker/ThreadSafeChunkerME.java @@ -15,14 +15,14 @@ * limitations under the License. */ -package opennlp.tools.lemmatizer; - -import java.util.List; +package opennlp.tools.chunker; import opennlp.tools.commons.ThreadSafe; +import opennlp.tools.util.Sequence; +import opennlp.tools.util.Span; /** - * A thread-safe version of the {@link LemmatizerME}. Using it is completely transparent. + * A thread-safe version of the {@link ChunkerME}. Using it is completely transparent. * You can use it in a single-threaded context as well, it only incurs a minimal overhead. * * @implNote @@ -34,43 +34,53 @@ import opennlp.tools.commons.ThreadSafe; * </p> * The user is responsible for clearing the {@link ThreadLocal}. * - * @see Lemmatizer - * @see LemmatizerME + * @see Chunker + * @see ChunkerME */ @ThreadSafe -public class ThreadSafeLemmatizerME implements Lemmatizer, AutoCloseable { +public class ThreadSafeChunkerME implements Chunker, AutoCloseable { - private final LemmatizerModel model; + private final ChunkerModel model; - private final ThreadLocal<LemmatizerME> threadLocal = new ThreadLocal<>(); + private final ThreadLocal<ChunkerME> threadLocal = new ThreadLocal<>(); /** - * Initializes a {@link ThreadSafeLemmatizerME} with the specified {@code model}. + * Initializes a {@link ThreadSafeChunkerME} with the specified {@code model}. * - * @param model A valid {@link LemmatizerModel}. + * @param model A valid {@link ChunkerModel}. */ - public ThreadSafeLemmatizerME(LemmatizerModel model) { + public ThreadSafeChunkerME(ChunkerModel model) { super(); this.model = model; } - private LemmatizerME getLemmatizer() { - LemmatizerME tagger = threadLocal.get(); - if (tagger == null) { - tagger = new LemmatizerME(model); - threadLocal.set(tagger); + private ChunkerME getChunker() { + ChunkerME c = threadLocal.get(); + if (c == null) { + c = new ChunkerME(model); + threadLocal.set(c); } - return tagger; + return c; + } + + @Override + public String[] chunk(String[] toks, String[] tags) { + return getChunker().chunk(toks, tags); + } + + @Override + public Span[] chunkAsSpans(String[] toks, String[] tags) { + return getChunker().chunkAsSpans(toks, tags); } @Override - public String[] lemmatize(String[] toks, String[] tags) { - return getLemmatizer().lemmatize(toks, tags); + public Sequence[] topKSequences(String[] sentence, String[] tags) { + return getChunker().topKSequences(sentence, tags); } @Override - public List<List<String>> lemmatize(List<String> toks, List<String> tags) { - return getLemmatizer().lemmatize(toks, tags); + public Sequence[] topKSequences(String[] sentence, String[] tags, double minSequenceScore) { + return getChunker().topKSequences(sentence, tags, minSequenceScore); } @Override diff --git a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/ThreadSafeLemmatizerME.java b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/ThreadSafeLemmatizerME.java index ba84c83b..fc3aba08 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/ThreadSafeLemmatizerME.java +++ b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/ThreadSafeLemmatizerME.java @@ -55,12 +55,12 @@ public class ThreadSafeLemmatizerME implements Lemmatizer, AutoCloseable { } private LemmatizerME getLemmatizer() { - LemmatizerME tagger = threadLocal.get(); - if (tagger == null) { - tagger = new LemmatizerME(model); - threadLocal.set(tagger); + LemmatizerME l = threadLocal.get(); + if (l == null) { + l = new LemmatizerME(model); + threadLocal.set(l); } - return tagger; + return l; } @Override
