From dd2baa0c6e9d49f19e98004fcaceb0cf558ebbdf Mon Sep 17 00:00:00 2001 From: jzonthemtn Date: Mon, 12 Dec 2016 19:55:57 -0500 Subject: [PATCH] OPENNLP-891: Making the TokenClassFeatureGenerator configurable. --- .../util/featuregen/GeneratorFactory.java | 16 +++++++++++-- .../TokenClassFeatureGenerator.java | 4 ++-- .../util/featuregen/GeneratorFactoryTest.java | 17 +++++++++++++ .../TestTokenClassFeatureGeneratorConfig.xml | 24 +++++++++++++++++++ 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestTokenClassFeatureGeneratorConfig.xml diff --git a/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/GeneratorFactory.java b/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/GeneratorFactory.java index d943381e6..f6cf702d9 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/GeneratorFactory.java +++ b/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/GeneratorFactory.java @@ -427,8 +427,20 @@ static class TokenClassFeatureGeneratorFactory implements XmlFeatureGeneratorFac public AdaptiveFeatureGenerator create(Element generatorElement, FeatureGeneratorResourceProvider resourceManager) { - // TODO: Make it configurable ... - return new TokenClassFeatureGenerator(true); + + String attribute = generatorElement.getAttribute("wordAndClass"); + + // Default to true. + boolean generateWordAndClassFeature = true; + + if(attribute != "") { + // Anything other than "true" sets it to false. + if(!"true".equalsIgnoreCase(attribute)) { + generateWordAndClassFeature = false; + } + } + + return new TokenClassFeatureGenerator(generateWordAndClassFeature); } static void register(Map factoryMap) { diff --git a/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenClassFeatureGenerator.java b/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenClassFeatureGenerator.java index 1a810e012..4aad40c63 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenClassFeatureGenerator.java +++ b/opennlp-tools/src/main/java/opennlp/tools/util/featuregen/TokenClassFeatureGenerator.java @@ -36,8 +36,8 @@ public TokenClassFeatureGenerator() { this(false); } - public TokenClassFeatureGenerator(boolean genearteWordAndClassFeature) { - this.generateWordAndClassFeature = genearteWordAndClassFeature; + public TokenClassFeatureGenerator(boolean generateWordAndClassFeature) { + this.generateWordAndClassFeature = generateWordAndClassFeature; } public void createFeatures(List features, String[] tokens, int index, String[] preds) { diff --git a/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/GeneratorFactoryTest.java b/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/GeneratorFactoryTest.java index b0a1500ef..9a285880f 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/GeneratorFactoryTest.java +++ b/opennlp-tools/src/test/java/opennlp/tools/util/featuregen/GeneratorFactoryTest.java @@ -35,6 +35,23 @@ import org.junit.Test; public class GeneratorFactoryTest { + + @Test + public void testCreationWithTokenClassFeatureGenerator() throws Exception { + InputStream generatorDescriptorIn = getClass().getResourceAsStream( + "/opennlp/tools/util/featuregen/TestTokenClassFeatureGeneratorConfig.xml"); + + // If this fails the generator descriptor could not be found + // at the expected location + assertNotNull(generatorDescriptorIn); + + AggregatedFeatureGenerator aggregatedGenerator = + (AggregatedFeatureGenerator) GeneratorFactory.create(generatorDescriptorIn, null); + + assertEquals(1, aggregatedGenerator.getGenerators().size()); + assertEquals(TokenClassFeatureGenerator.class.getName(), aggregatedGenerator.getGenerators().iterator().next().getClass().getName()); + + } @Test public void testCreationWihtSimpleDescriptor() throws Exception { diff --git a/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestTokenClassFeatureGeneratorConfig.xml b/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestTokenClassFeatureGeneratorConfig.xml new file mode 100644 index 000000000..e384a7ef1 --- /dev/null +++ b/opennlp-tools/src/test/resources/opennlp/tools/util/featuregen/TestTokenClassFeatureGeneratorConfig.xml @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file