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

Reply via email to