Class GeneratorFactory

java.lang.Object
opennlp.tools.util.featuregen.GeneratorFactory

public class GeneratorFactory extends Object
Creates a set of feature generators based on a provided XML descriptor. Example of an XML descriptor:

<featureGenerators name="namefind"> <generator class="opennlp.tools.util.featuregen.CachedFeatureGeneratorFactory"> <generator class="opennlp.tools.util.featuregen.WindowFeatureGeneratorFactory"> <int name="prevLength">2</int> <int name="nextLength">2</int> <generator class="opennlp.tools.util.featuregen.TokenClassFeatureGeneratorFactory"/> </generator> <generator class="opennlp.tools.util.featuregen.WindowFeatureGeneratorFactory"> <int name="prevLength">2</int> <int name="nextLength">2</int> <generator class="opennlp.tools.util.featuregen.TokenFeatureGeneratorFactory"/> </generator> <generator class="opennlp.tools.util.featuregen.DefinitionFeatureGeneratorFactory"/> <generator class="opennlp.tools.util.featuregen.PreviousMapFeatureGeneratorFactory"/> <generator class="opennlp.tools.util.featuregen.BigramNameFeatureGeneratorFactory"/> <generator class="opennlp.tools.util.featuregen.SentenceFeatureGeneratorFactory"> <bool name="begin">true</bool> <bool name="end">false</bool> </generator> </generator> </featureGenerators>

Each XML element is mapped to a GeneratorFactory.XmlFeatureGeneratorFactory which is responsible to process the element and create the specified AdaptiveFeatureGenerator. Elements can contain other elements in this case it is the responsibility of the mapped factory to process the child elements correctly. In some factories this leads to recursive calls the GeneratorFactory.XmlFeatureGeneratorFactory.create(Element, FeatureGeneratorResourceProvider) method. In the example above the generators element is mapped to the AggregatedFeatureGeneratorFactory which then creates all the aggregated AdaptiveFeatureGenerators to accomplish this it evaluates the mapping with the same mechanism and gives the child element to the corresponding factories. All created generators are added to a new instance of the AggregatedFeatureGenerator which is then returned.
  • Constructor Details

    • GeneratorFactory

      public GeneratorFactory()
  • Method Details

    • create

      public static AdaptiveFeatureGenerator create(InputStream xmlDescriptorIn, FeatureGeneratorResourceProvider resourceManager) throws IOException
      Creates an AdaptiveFeatureGenerator from an provided XML descriptor. Usually this XML descriptor contains a set of nested feature generators which are then used to generate the features by one of the opennlp components.
      Parameters:
      xmlDescriptorIn - the InputStream from which the descriptor is read, the stream remains open and must be closed by the caller.
      resourceManager - the resource manager which is used to resolve resources referenced by a key in the descriptor
      Returns:
      created feature generators
      Throws:
      IOException - if an error occurs during reading from the descriptor InputStream
    • extractArtifactSerializerMappings

      public static Map<String,ArtifactSerializer<?>> extractArtifactSerializerMappings(InputStream xmlDescriptorIn) throws IOException
      Throws:
      IOException
    • getDescriptorElements

      public static List<Element> getDescriptorElements(InputStream xmlDescriptorIn) throws IOException
      Provides a list with all the elements in the xml feature descriptor.
      Parameters:
      xmlDescriptorIn - the xml feature descriptor
      Returns:
      a list containing all elements
      Throws:
      IOException - if inputstream cannot be open
      InvalidFormatException - if xml is not well-formed