You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opennlp.apache.org by sm...@apache.org on 2017/10/24 08:20:26 UTC

[opennlp] branch master updated: OPENNLP-1151: All Sample objects should implement Serializable for easy interation into other tools (#282)

This is an automated email from the ASF dual-hosted git repository.

smarthi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/opennlp.git


The following commit(s) were added to refs/heads/master by this push:
     new aed96a7  OPENNLP-1151: All Sample objects should implement Serializable for easy interation into other tools (#282)
aed96a7 is described below

commit aed96a73cf44b53c0657411dde6240aacebda2a9
Author: Suneel Marthi <sm...@apache.org>
AuthorDate: Tue Oct 24 13:50:24 2017 +0530

    OPENNLP-1151: All Sample objects should implement Serializable for easy interation into other tools (#282)
---
 .../java/opennlp/tools/chunker/ChunkSample.java    | 15 +++++----
 .../java/opennlp/tools/doccat/DocumentSample.java  |  3 +-
 .../java/opennlp/tools/langdetect/Language.java    |  7 ++--
 .../opennlp/tools/langdetect/LanguageSample.java   |  3 +-
 .../java/opennlp/tools/lemmatizer/LemmaSample.java |  3 +-
 .../tools/ml/maxent/io/BinaryQNModelWriter.java    |  8 ++---
 .../java/opennlp/tools/namefind/NameSample.java    |  3 +-
 .../namefind/TokenNameFinderCrossValidator.java    |  3 +-
 .../main/java/opennlp/tools/postag/POSSample.java  |  3 +-
 .../opennlp/tools/sentdetect/SentenceSample.java   |  4 +--
 .../java/opennlp/tools/tokenize/TokenSample.java   |  3 +-
 .../src/main/java/opennlp/tools/util/Span.java     |  3 +-
 .../opennlp/tools/chunker/ChunkSampleTest.java     | 34 +++++++++++++++++++
 .../opennlp/tools/doccat/DocumentSampleTest.java   | 32 ++++++++++++++++++
 .../tools/langdetect/LanguageSampleTest.java       | 39 ++++++++++++++++++++--
 .../opennlp/tools/lemmatizer/LemmaSampleTest.java  | 31 +++++++++++++++++
 .../opennlp/tools/namefind/NameSampleTest.java     | 38 ++++++++++++++++++---
 .../java/opennlp/tools/postag/POSSampleTest.java   | 34 +++++++++++++++++++
 .../tools/sentdetect/SentenceSampleTest.java       | 32 ++++++++++++++++++
 .../opennlp/tools/tokenize/TokenSampleTest.java    | 30 +++++++++++++++++
 20 files changed, 297 insertions(+), 31 deletions(-)

diff --git a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSample.java b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSample.java
index 174ca61..f703621 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/chunker/ChunkSample.java
@@ -17,6 +17,7 @@
 
 package opennlp.tools.chunker;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -28,7 +29,7 @@ import opennlp.tools.util.Span;
 /**
  * Class for holding chunks for a single unit of text.
  */
-public class ChunkSample {
+public class ChunkSample implements Serializable {
 
   private final List<String> sentence;
   private final List<String> tags;
@@ -167,12 +168,12 @@ public class ChunkSample {
     StringBuilder result = new StringBuilder(" ");
 
     for (int tokenIndex = 0; tokenIndex < sentence.size(); tokenIndex++) {
-      for (int nameIndex = 0; nameIndex < spans.length; nameIndex++) {
-        if (spans[nameIndex].getStart() == tokenIndex) {
-          result.append("[").append(spans[nameIndex].getType()).append(" ");
+      for (Span span : spans) {
+        if (span.getStart() == tokenIndex) {
+          result.append("[").append(span.getType()).append(" ");
         }
 
-        if (spans[nameIndex].getEnd() == tokenIndex) {
+        if (span.getEnd() == tokenIndex) {
           result.append("]").append(' ');
         }
       }
@@ -183,8 +184,8 @@ public class ChunkSample {
     if (sentence.size() > 1)
       result.setLength(result.length() - 1);
 
-    for (int nameIndex = 0; nameIndex < spans.length; nameIndex++) {
-      if (spans[nameIndex].getEnd() == sentence.size()) {
+    for (Span span : spans) {
+      if (span.getEnd() == sentence.size()) {
         result.append(']');
       }
     }
diff --git a/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java b/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java
index adddc27..3f149ed 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/doccat/DocumentSample.java
@@ -17,6 +17,7 @@
 
 package opennlp.tools.doccat;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -27,7 +28,7 @@ import java.util.Objects;
 /**
  * Class which holds a classified document and its category.
  */
-public class DocumentSample {
+public class DocumentSample implements Serializable {
 
   private final String category;
   private final List<String> text;
diff --git a/opennlp-tools/src/main/java/opennlp/tools/langdetect/Language.java b/opennlp-tools/src/main/java/opennlp/tools/langdetect/Language.java
index f780759..43ad71b 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/langdetect/Language.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/langdetect/Language.java
@@ -17,12 +17,13 @@
 
 package opennlp.tools.langdetect;
 
+import java.io.Serializable;
 import java.util.Objects;
 
 /**
  * Class for holding the document language and its confidence
  */
-public class Language {
+public class Language implements Serializable {
   private final String lang;
   private final double confidence;
 
@@ -46,9 +47,7 @@ public class Language {
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder();
-    sb.append(getLang()).append(" (").append(this.confidence).append(")");
-    return sb.toString();
+    return getLang() + " (" + this.confidence + ")";
   }
 
   @Override
diff --git a/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageSample.java b/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageSample.java
index f454864..634718f 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/langdetect/LanguageSample.java
@@ -17,12 +17,13 @@
 
 package opennlp.tools.langdetect;
 
+import java.io.Serializable;
 import java.util.Objects;
 
 /**
  * Class which holds a classified document and its @{@link Language}.
  */
-public class LanguageSample {
+public class LanguageSample implements Serializable {
 
   private final Language language;
   private final CharSequence context;
diff --git a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java
index 553eb3a..f5c2434 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/lemmatizer/LemmaSample.java
@@ -17,6 +17,7 @@
 
 package opennlp.tools.lemmatizer;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -26,7 +27,7 @@ import java.util.Objects;
 /**
  * Represents an lemmatized sentence.
  */
-public class LemmaSample {
+public class LemmaSample implements Serializable {
 
   private List<String> tokens;
 
diff --git a/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryQNModelWriter.java b/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryQNModelWriter.java
index cf23929..1da4d1e 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryQNModelWriter.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/io/BinaryQNModelWriter.java
@@ -63,19 +63,19 @@ public class BinaryQNModelWriter extends QNModelWriter {
     output = dos;
   }
 
-  public void writeUTF(String s) throws java.io.IOException {
+  public void writeUTF(String s) throws IOException {
     output.writeUTF(s);
   }
 
-  public void writeInt(int i) throws java.io.IOException {
+  public void writeInt(int i) throws IOException {
     output.writeInt(i);
   }
 
-  public void writeDouble(double d) throws java.io.IOException {
+  public void writeDouble(double d) throws IOException {
     output.writeDouble(d);
   }
 
-  public void close() throws java.io.IOException {
+  public void close() throws IOException {
     output.flush();
     output.close();
   }
diff --git a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
index 6db4b69..a1e1d07 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
@@ -18,6 +18,7 @@
 package opennlp.tools.namefind;
 
 import java.io.IOException;
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -32,7 +33,7 @@ import opennlp.tools.util.Span;
 /**
  * Class for holding names for a single unit of text.
  */
-public class NameSample {
+public class NameSample implements Serializable {
 
   private final String id;
   private final List<String> sentence;
diff --git a/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderCrossValidator.java b/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderCrossValidator.java
index 5e9e662..0a2fb4d 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderCrossValidator.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/TokenNameFinderCrossValidator.java
@@ -18,6 +18,7 @@
 package opennlp.tools.namefind;
 
 import java.io.IOException;
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -34,7 +35,7 @@ import opennlp.tools.util.eval.FMeasure;
 
 public class TokenNameFinderCrossValidator {
 
-  private static class DocumentSample {
+  private static class DocumentSample implements Serializable {
 
     private NameSample[] samples;
 
diff --git a/opennlp-tools/src/main/java/opennlp/tools/postag/POSSample.java b/opennlp-tools/src/main/java/opennlp/tools/postag/POSSample.java
index 9512e38..459905a 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/postag/POSSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/postag/POSSample.java
@@ -18,6 +18,7 @@
 
 package opennlp.tools.postag;
 
+import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -29,7 +30,7 @@ import opennlp.tools.util.InvalidFormatException;
 /**
  * Represents an pos-tagged sentence.
  */
-public class POSSample {
+public class POSSample implements Serializable {
 
   private List<String> sentence;
 
diff --git a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSample.java b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSample.java
index 7891cfd..3ffe084 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/sentdetect/SentenceSample.java
@@ -17,6 +17,7 @@
 
 package opennlp.tools.sentdetect;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -30,10 +31,9 @@ import opennlp.tools.util.Span;
  * A {@link SentenceSample} contains a document with
  * begin indexes of the individual sentences.
  */
-public class SentenceSample {
+public class SentenceSample implements Serializable {
 
   private final String document;
-
   private final List<Span> sentences;
 
   /**
diff --git a/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java b/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java
index 3ec3b8d..85f1c07 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/tokenize/TokenSample.java
@@ -17,6 +17,7 @@
 
 package opennlp.tools.tokenize;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -29,7 +30,7 @@ import opennlp.tools.util.Span;
 /**
  * A {@link TokenSample} is text with token spans.
  */
-public class TokenSample {
+public class TokenSample implements Serializable {
 
   public static final String DEFAULT_SEPARATOR_CHARS = "<SPLIT>";
 
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 733e461..1c389b1 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/util/Span.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/util/Span.java
@@ -17,13 +17,14 @@
 
 package opennlp.tools.util;
 
+import java.io.Serializable;
 import java.util.Objects;
 
 /**
  * Class for storing start and end integer offsets.
  *
  */
-public class Span implements Comparable<Span> {
+public class Span implements Comparable<Span>, Serializable {
 
   private final int start;
   private final int end;
diff --git a/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkSampleTest.java b/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkSampleTest.java
index 9f3367d..79b5234 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkSampleTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkSampleTest.java
@@ -18,7 +18,13 @@
 package opennlp.tools.chunker;
 
 import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
 import java.io.StringReader;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
@@ -107,6 +113,34 @@ public class ChunkSampleTest {
     return new ChunkSample(createSentence(), createTags(), chunks);
   }
 
+  @Test
+  public void testChunkSampleSerDe() throws IOException {
+    ChunkSample chunkSample = createGoldSample();
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream);
+    out.writeObject(chunkSample);
+    out.flush();
+    byte[] bytes = byteArrayOutputStream.toByteArray();
+
+    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+    ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream);
+
+    ChunkSample deSerializedChunkSample = null;
+    try {
+      deSerializedChunkSample = (ChunkSample) objectInput.readObject();
+    } catch (ClassNotFoundException e) {
+      // do nothing
+    }
+
+    Assert.assertNotNull(deSerializedChunkSample);
+    Assert.assertArrayEquals(chunkSample.getPhrasesAsSpanList(),
+        deSerializedChunkSample.getPhrasesAsSpanList());
+    Assert.assertArrayEquals(chunkSample.getPreds(), deSerializedChunkSample.getPreds());
+    Assert.assertArrayEquals(chunkSample.getTags(), deSerializedChunkSample.getTags());
+    Assert.assertArrayEquals(chunkSample.getSentence(), deSerializedChunkSample.getSentence());
+    Assert.assertEquals(chunkSample, deSerializedChunkSample);
+  }
+
   @Test(expected = IllegalArgumentException.class)
   public void testParameterValidation() {
     new ChunkSample(new String[] {""}, new String[] {""},
diff --git a/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentSampleTest.java b/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentSampleTest.java
index 8cf8fef..2e7bfb7 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentSampleTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentSampleTest.java
@@ -17,6 +17,14 @@
 
 package opennlp.tools.doccat;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -30,6 +38,30 @@ public class DocumentSampleTest {
     Assert.assertFalse(createPredSample().equals(new Object()));
   }
 
+  @Test
+  public void testDocumentSampleSerDe() throws IOException {
+    DocumentSample documentSample = createGoldSample();
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream);
+    out.writeObject(documentSample);
+    out.flush();
+    byte[] bytes = byteArrayOutputStream.toByteArray();
+
+    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+    ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream);
+
+    DocumentSample deSerializedDocumentSample = null;
+    try {
+      deSerializedDocumentSample = (DocumentSample) objectInput.readObject();
+    } catch (ClassNotFoundException e) {
+      // do nothing
+    }
+
+    Assert.assertNotNull(deSerializedDocumentSample);
+    Assert.assertEquals(documentSample.getCategory(), deSerializedDocumentSample.getCategory());
+    Assert.assertArrayEquals(documentSample.getText(), deSerializedDocumentSample.getText());
+  }
+
   public static DocumentSample createGoldSample() {
     return new DocumentSample("aCategory", new String[]{"a", "small", "text"});
   }
diff --git a/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageSampleTest.java b/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageSampleTest.java
index 7d12581..5b7aac0 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageSampleTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/langdetect/LanguageSampleTest.java
@@ -17,11 +17,17 @@
 
 package opennlp.tools.langdetect;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
 
 import org.junit.Assert;
 import org.junit.Test;
 
-
 public class LanguageSampleTest {
 
   @Test
@@ -35,6 +41,35 @@ public class LanguageSampleTest {
     Assert.assertEquals(context, sample.getContext());
   }
 
+  @Test
+  public void testLanguageSampleSerDe() throws IOException {
+    Language lang = new Language("aLang");
+    CharSequence context = "aContext";
+
+    LanguageSample languageSample = new LanguageSample(lang, context);
+
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream);
+    out.writeObject(languageSample);
+    out.flush();
+    byte[] bytes = byteArrayOutputStream.toByteArray();
+
+    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+    ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream);
+
+    LanguageSample deSerializedLanguageSample = null;
+    try {
+      deSerializedLanguageSample = (LanguageSample) objectInput.readObject();
+    } catch (ClassNotFoundException e) {
+      // do nothing
+    }
+
+    Assert.assertNotNull(deSerializedLanguageSample);
+    Assert.assertEquals(languageSample.getContext(), deSerializedLanguageSample.getContext());
+    Assert.assertEquals(languageSample.getLanguage(), deSerializedLanguageSample.getLanguage());
+    Assert.assertEquals(languageSample, deSerializedLanguageSample);
+  }
+
   @Test(expected = NullPointerException.class)
   public void testNullLang() throws Exception {
     CharSequence context = "aContext";
@@ -84,6 +119,6 @@ public class LanguageSampleTest {
     Assert.assertNotEquals(sampleA, sampleB);
     Assert.assertNotEquals(sampleA, sampleC);
     Assert.assertNotEquals(sampleB, sampleC);
-    Assert.assertFalse(sampleA.equals("something else"));
+    Assert.assertNotEquals(sampleA, "something else");
   }
 }
diff --git a/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmaSampleTest.java b/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmaSampleTest.java
index 97f9e27..bfb6cd2 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmaSampleTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmaSampleTest.java
@@ -18,7 +18,13 @@
 package opennlp.tools.lemmatizer;
 
 import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
 import java.io.StringReader;
 
 import org.junit.Assert;
@@ -48,6 +54,31 @@ public class LemmaSampleTest {
   }
 
   @Test
+  public void testLemmaSampleSerDe() throws IOException {
+    LemmaSample lemmaSample = createGoldSample();
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream);
+    out.writeObject(lemmaSample);
+    out.flush();
+    byte[] bytes = byteArrayOutputStream.toByteArray();
+
+    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+    ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream);
+
+    LemmaSample deSerializedLemmaSample = null;
+    try {
+      deSerializedLemmaSample = (LemmaSample) objectInput.readObject();
+    } catch (ClassNotFoundException e) {
+      // do nothing
+    }
+
+    Assert.assertNotNull(deSerializedLemmaSample);
+    Assert.assertArrayEquals(lemmaSample.getLemmas(), deSerializedLemmaSample.getLemmas());
+    Assert.assertArrayEquals(lemmaSample.getTokens(), deSerializedLemmaSample.getTokens());
+    Assert.assertArrayEquals(lemmaSample.getTags(), deSerializedLemmaSample.getTags());
+  }
+
+  @Test
   public void testRetrievingContent() {
     LemmaSample sample = new LemmaSample(createSentence(), createTags(), createLemmas());
 
diff --git a/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleTest.java b/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleTest.java
index 0078731..8bf4aff 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleTest.java
@@ -17,7 +17,13 @@
 
 package opennlp.tools.namefind;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -61,6 +67,32 @@ public class NameSampleTest {
     return nameSample;
   }
 
+  @Test
+  public void testNameSampleSerDe() throws IOException {
+    NameSample nameSample = createGoldSample();
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream);
+    out.writeObject(nameSample);
+    out.flush();
+    byte[] bytes = byteArrayOutputStream.toByteArray();
+
+    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+    ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream);
+
+    NameSample deSerializedNameSample = null;
+    try {
+      deSerializedNameSample = (NameSample) objectInput.readObject();
+    } catch (ClassNotFoundException e) {
+      // do nothing
+    }
+
+    Assert.assertNotNull(deSerializedNameSample);
+    Assert.assertArrayEquals(nameSample.getSentence(), deSerializedNameSample.getSentence());
+    Assert.assertArrayEquals(nameSample.getNames(), deSerializedNameSample.getNames());
+    Assert.assertArrayEquals(nameSample.getAdditionalContext(),
+        deSerializedNameSample.getAdditionalContext());
+  }
+
   /**
    * Test serialization of sequential spans.
    */
@@ -72,8 +104,7 @@ public class NameSampleTest {
     Span[] names = {new Span(0, 2, "Place"), new Span(2, 4, "Time"),
         new Span(4, 6, "Person")};
 
-    NameSample nameSample;
-    nameSample = new NameSample(sentence, names, false);
+    NameSample nameSample = new NameSample(sentence, names, false);
 
     Assert.assertEquals(
         "<START:Place> A Place <END> <START:Time> a time <END> <START:Person> A Person <END> .",
@@ -91,8 +122,7 @@ public class NameSampleTest {
     Span[] names = {new Span(0, 2, "Place"), new Span(4, 6, "Person"),
         new Span(2, 4, "Time")};
 
-    NameSample nameSample;
-    nameSample = new NameSample(sentence, names, false);
+    NameSample nameSample = new NameSample(sentence, names, false);
 
     Assert.assertEquals(
         "<START:Place> A Place <END> <START:Time> a time <END> <START:Person> A Person <END> .",
diff --git a/opennlp-tools/src/test/java/opennlp/tools/postag/POSSampleTest.java b/opennlp-tools/src/test/java/opennlp/tools/postag/POSSampleTest.java
index de437cd..7082828 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/postag/POSSampleTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/postag/POSSampleTest.java
@@ -18,6 +18,14 @@
 
 package opennlp.tools.postag;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -48,6 +56,32 @@ public class POSSampleTest {
     return POSSample.parse(sentence);
   }
 
+  @Test
+  public void testPOSSampleSerDe() throws IOException {
+    POSSample posSample = createGoldSample();
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream);
+    out.writeObject(posSample);
+    out.flush();
+    byte[] bytes = byteArrayOutputStream.toByteArray();
+
+    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+    ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream);
+
+    POSSample deSerializedPOSSample = null;
+    try {
+      deSerializedPOSSample = (POSSample) objectInput.readObject();
+    } catch (ClassNotFoundException e) {
+      // do nothing
+    }
+
+    Assert.assertNotNull(deSerializedPOSSample);
+    Assert.assertArrayEquals(posSample.getAddictionalContext(),
+        deSerializedPOSSample.getAddictionalContext());
+    Assert.assertArrayEquals(posSample.getSentence(), deSerializedPOSSample.getSentence());
+    Assert.assertArrayEquals(posSample.getTags(), deSerializedPOSSample.getTags());
+  }
+
   /**
    * Tests if it can parse a valid token_tag sentence.
    *
diff --git a/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceSampleTest.java b/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceSampleTest.java
index 2ec0978..23dca30 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceSampleTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceSampleTest.java
@@ -17,6 +17,14 @@
 
 package opennlp.tools.sentdetect;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -37,6 +45,30 @@ public class SentenceSampleTest {
     Assert.assertEquals(new Span(3, 5), sample.getSentences()[1]);
   }
 
+  @Test
+  public void testSentenceSampleSerDe() throws IOException {
+    SentenceSample sentenceSample = createGoldSample();
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream);
+    out.writeObject(sentenceSample);
+    out.flush();
+    byte[] bytes = byteArrayOutputStream.toByteArray();
+
+    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+    ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream);
+
+    SentenceSample deSerializedSentenceSample = null;
+    try {
+      deSerializedSentenceSample = (SentenceSample) objectInput.readObject();
+    } catch (ClassNotFoundException e) {
+      // do nothing
+    }
+
+    Assert.assertNotNull(deSerializedSentenceSample);
+    Assert.assertEquals(sentenceSample.getDocument(), deSerializedSentenceSample.getDocument());
+    Assert.assertArrayEquals(sentenceSample.getSentences(), deSerializedSentenceSample.getSentences());
+  }
+
   @Test(expected = IllegalArgumentException.class)
   public void testInvalidSpansFailFast() {
     SentenceSample sample = new SentenceSample("1. 2.",
diff --git a/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenSampleTest.java b/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenSampleTest.java
index 1c329bc..9b53c8b 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenSampleTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenSampleTest.java
@@ -17,7 +17,13 @@
 
 package opennlp.tools.tokenize;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -41,6 +47,30 @@ public class TokenSampleTest {
   }
 
   @Test
+  public void testTokenSampleSerDe() throws IOException {
+    TokenSample tokenSample = createGoldSample();
+    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+    ObjectOutput out = new ObjectOutputStream(byteArrayOutputStream);
+    out.writeObject(tokenSample);
+    out.flush();
+    byte[] bytes = byteArrayOutputStream.toByteArray();
+
+    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
+    ObjectInput objectInput = new ObjectInputStream(byteArrayInputStream);
+
+    TokenSample deSerializedTokenSample = null;
+    try {
+      deSerializedTokenSample = (TokenSample) objectInput.readObject();
+    } catch (ClassNotFoundException e) {
+      // do nothing
+    }
+
+    Assert.assertNotNull(deSerializedTokenSample);
+    Assert.assertEquals(tokenSample.getText(), deSerializedTokenSample.getText());
+    Assert.assertArrayEquals(tokenSample.getTokenSpans(), deSerializedTokenSample.getTokenSpans());
+  }
+
+  @Test
   public void testCreationWithDetokenizer() throws IOException {
 
     Detokenizer detokenizer = DictionaryDetokenizerTest.createLatinDetokenizer();

-- 
To stop receiving notification emails like this one, please contact
['"commits@opennlp.apache.org" <co...@opennlp.apache.org>'].