<!--
	Licensed to the Apache Software Foundation (ASF) under one
	or more contributor license agreements.  See the NOTICE file
	distributed with this work for additional information
	regarding copyright ownership.  The ASF licenses this file
	to you under the Apache License, Version 2.0 (the
	"License"); you may not use this file except in compliance
	with the License.  You may obtain a copy of the License at

	http://www.apache.org/licenses/LICENSE-2.0

	Unless required by applicable law or agreed to in writing,
	software distributed under the License is distributed on an
	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
	KIND, either express or implied.  See the License for the
	specific language governing permissions and limitations
	under the License.
-->

<!-- [EXPERIMENTAL] Auxiliary information name finder feature generator configuration -->
<featureGenerators cache="true" name="nameFinder">
  <generator class="opennlp.tools.util.featuregen.AuxiliaryInfoAwareDelegateFeatureGeneratorFactory">
    <generator class="opennlp.tools.util.featuregen.WindowFeatureGeneratorFactory">
      <int name="prevLength">2</int>
      <int name="nextLength">2</int>
      <generator class="opennlp.tools.util.featuregen.lang.jpn.TokenClassFeatureGeneratorFactory"/>
    </generator>
  </generator>
  <generator class="opennlp.tools.util.featuregen.AuxiliaryInfoAwareDelegateFeatureGeneratorFactory">
    <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>
  <generator class="opennlp.tools.util.featuregen.AuxiliaryInfoAwareDelegateFeatureGeneratorFactory">
    <bool name="useAux">true</bool>
    <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>
  <generator class="opennlp.tools.util.featuregen.AuxiliaryInfoAwareDelegateFeatureGeneratorFactory">
    <generator class="opennlp.tools.util.featuregen.DefinitionFeatureGeneratorFactory"/>
  </generator>
  <generator class="opennlp.tools.util.featuregen.AuxiliaryInfoAwareDelegateFeatureGeneratorFactory">
    <generator class="opennlp.tools.util.featuregen.PreviousMapFeatureGeneratorFactory"/>
  </generator>
  <generator class="opennlp.tools.util.featuregen.AuxiliaryInfoAwareDelegateFeatureGeneratorFactory">
    <generator class="opennlp.tools.util.featuregen.lang.jpn.BigramNameFeatureGeneratorFactory"/>
  </generator>
  <generator class="opennlp.tools.util.featuregen.AuxiliaryInfoAwareDelegateFeatureGeneratorFactory">
    <generator class="opennlp.tools.util.featuregen.SentenceFeatureGeneratorFactory">
      <bool name="begin">true</bool>
      <bool name="end">false</bool>
    </generator>
  </generator>
</featureGenerators>
