[
https://issues.apache.org/jira/browse/OPENNLP-1151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16216511#comment-16216511
]
ASF GitHub Bot commented on OPENNLP-1151:
-----------------------------------------
smarthi closed pull request #282: OPENNLP-1151: All Sample objects should
implement Serializable for easy integration into other tools
URL: https://github.com/apache/opennlp/pull/282
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
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 174ca6186..f70362146 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 @@
/**
* 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 String nicePrint() {
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 String nicePrint() {
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 adddc27dd..3f149ede5 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 @@
/**
* 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 f780759d5..43ad71b21 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 double getConfidence() {
@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 f45486431..634718f5e 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 553eb3a6e..f5c243431 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 @@
/**
* 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 cf23929ca..1da4d1eea 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 BinaryQNModelWriter(AbstractModel model,
DataOutputStream dos) {
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 6db4b6938..a1e1d075c 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 @@
/**
* 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 5e9e66249..0a2fb4db1 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 @@
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 9512e3895..459905ab0 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 @@
/**
* 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 7891cfd1f..3ffe08429 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 @@
* 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 3ec3b8dcd..85f1c0770 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 @@
/**
* 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 733e461c9..1c389b1d1 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 9f3367d27..79b523411 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 static ChunkSample createPredSample() {
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 8cf8fef1f..2e7bfb7dc 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 void testEquals() {
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 7d125811e..5b7aac084 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 void testConstructor() {
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 void testEquals() throws Exception {
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 97f9e2752..bfb6cd234 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 void testParameterValidation() {
}
@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 00787311d..8bf4affd1 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 @@ private static NameSample createSimpleNameSample(boolean
useTypes) {
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 void testSequentialSpans() {
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 void testUnsortedSequentialSpans() {
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 de437cd35..708282817 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 static POSSample createPredSample() throws
InvalidFormatException {
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 2ec097831..23dca3033 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 void testRetrievingContent() {
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 1c329bc33..9b53c8b23 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 void testRetrievingContent() {
}
@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();
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> All Sample objects should implement Serializable for easy interation into
> other tools
> -------------------------------------------------------------------------------------
>
> Key: OPENNLP-1151
> URL: https://issues.apache.org/jira/browse/OPENNLP-1151
> Project: OpenNLP
> Issue Type: Bug
> Reporter: Joern Kottmann
> Assignee: Suneel Marthi
> Priority: Minor
> Fix For: 1.8.3
>
>
> State of the Art frameworks like Apache Flink require that objects are
> serializable to use them in the pipeline. To use it to prepare training date
> for OpenNLP the Sample objects should all implement Serializable.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)