This is an automated email from the ASF dual-hosted git repository.
colen 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 4362e02 OPENNLP-1121: Sort NameSample spans to avoid serialization
issues
4362e02 is described below
commit 4362e02ed0404d12ca75ee3476d4a32f9f671811
Author: William D C M SILVA <[email protected]>
AuthorDate: Mon Jul 31 12:10:22 2017 -0300
OPENNLP-1121: Sort NameSample spans to avoid serialization issues
---
.../java/opennlp/tools/namefind/NameSample.java | 5 +--
.../opennlp/tools/namefind/NameSampleTest.java | 38 ++++++++++++++++++++++
2 files changed, 41 insertions(+), 2 deletions(-)
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 8858ceb..edd7506 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameSample.java
@@ -54,7 +54,9 @@ public class NameSample {
}
this.sentence = Collections.unmodifiableList(new
ArrayList<>(Arrays.asList(sentence)));
- this.names = Collections.unmodifiableList(new
ArrayList<>(Arrays.asList(names)));
+ List<Span> namesList = Arrays.asList(names);
+ Collections.sort(namesList);
+ this.names = Collections.unmodifiableList(namesList);
if (additionalContext != null) {
this.additionalContext = new String[additionalContext.length][];
@@ -158,7 +160,6 @@ public class NameSample {
result.append(NameSampleDataStream.START_TAG_PREFIX).append(name.getType()).append(">
");
}
}
-
if (name.getEnd() == tokenIndex) {
result.append(NameSampleDataStream.END_TAG).append(' ');
}
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 911f998..760e282 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/namefind/NameSampleTest.java
@@ -62,6 +62,44 @@ public class NameSampleTest {
}
/**
+ * Test serialization of sequential spans.
+ */
+ @Test
+ public void testSequentialSpans() {
+
+ String[] sentence = {"A", "Place", "a", "time", "A", "Person", "."};
+
+ 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);
+
+ Assert.assertEquals(
+ "<START:Place> A Place <END> <START:Time> a time <END> <START:Person>
A Person <END> .",
+ nameSample.toString());
+ }
+
+ /**
+ * Test serialization of unsorted sequential spans.
+ */
+ @Test
+ public void testUnsortedSequentialSpans() {
+
+ String[] sentence = {"A", "Place", "a", "time", "A", "Person", "."};
+
+ 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);
+
+ Assert.assertEquals(
+ "<START:Place> A Place <END> <START:Time> a time <END> <START:Person>
A Person <END> .",
+ nameSample.toString());
+ }
+
+ /**
* Checks if could create a NameSample without NameTypes, generate the
* string representation and validate it.
*/
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].