// Path: age-predictor-opennlp/src/main/java/opennlp/tools/util/featuregen/BagOfWordsFeatureGenerator.java
// public class BagOfWordsFeatureGenerator implements FeatureGenerator {
//     
//     public static final BagOfWordsFeatureGenerator INSTANCE = new BagOfWordsFeatureGenerator();
// 
//     private static List<String> stopwords = new ArrayList<String>();
//    
//     static {
// 		try {
// 		    stopwords = FileUtils.readLines(new File("props/stopwords.txt"), "utf-8");
// 		} catch (IOException e) {
// 		    stopwords = new ArrayList<String>();
// 		}
//     }
//     
//     public BagOfWordsFeatureGenerator() {
//     }
//     
//     @Override
//     public Collection<String> extractFeatures(String[] text) {
// 	
// 	Collection<String> bagOfWords = new ArrayList<String>();
// 
// 	for (String word : text) {
// 	    if (!stopwords.contains(word)) {
// 		bagOfWords.add("bow=" + word);
// 	    }
// 	}
// 
// 	return bagOfWords;
//     }
// 
// }
// 
// Path: age-predictor-opennlp/src/main/java/opennlp/tools/util/featuregen/FeatureGenerator.java
// public interface FeatureGenerator {
// 
//     /**
//      * Extract features from given text fragments
//      *
//      * @param text             the text fragments to extract features from
//      * @param extraInformation optional extra information to be used by the feature generator
//      * @return a collection of features
//      */
//     Collection<String> extractFeatures(String[] text);
// }


import opennlp.tools.tokenize.Tokenizer;
import opennlp.tools.tokenize.WhitespaceTokenizer;
import opennlp.tools.util.BaseToolFactory;
import opennlp.tools.util.InvalidFormatException;
import opennlp.tools.util.ext.ExtensionLoader;
import opennlp.tools.util.featuregen.BagOfWordsFeatureGenerator;
import opennlp.tools.util.featuregen.FeatureGenerator;
/*
 * 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.
 */

package opennlp.tools.authorage;



/**
 * TODO: Documentation
 */ 
public class AgeClassifyFactory extends BaseToolFactory {

    public static final AgeClassifyFactory INSTANCE = new AgeClassifyFactory();
    
    private static final String FEATURE_GENERATORS = "authorage.featureGenerators";
    private static final String TOKENIZER_NAME = "authorage.tokenizer";

// Path: age-predictor-opennlp/src/main/java/opennlp/tools/util/featuregen/BagOfWordsFeatureGenerator.java
// public class BagOfWordsFeatureGenerator implements FeatureGenerator {
//     
//     public static final BagOfWordsFeatureGenerator INSTANCE = new BagOfWordsFeatureGenerator();
// 
//     private static List<String> stopwords = new ArrayList<String>();
//    
//     static {
// 		try {
// 		    stopwords = FileUtils.readLines(new File("props/stopwords.txt"), "utf-8");
// 		} catch (IOException e) {
// 		    stopwords = new ArrayList<String>();
// 		}
//     }
//     
//     public BagOfWordsFeatureGenerator() {
//     }
//     
//     @Override
//     public Collection<String> extractFeatures(String[] text) {
// 	
// 	Collection<String> bagOfWords = new ArrayList<String>();
// 
// 	for (String word : text) {
// 	    if (!stopwords.contains(word)) {
// 		bagOfWords.add("bow=" + word);
// 	    }
// 	}
// 
// 	return bagOfWords;
//     }
// 
// }
// 
// Path: age-predictor-opennlp/src/main/java/opennlp/tools/util/featuregen/FeatureGenerator.java
// public interface FeatureGenerator {
// 
//     /**
//      * Extract features from given text fragments
//      *
//      * @param text             the text fragments to extract features from
//      * @param extraInformation optional extra information to be used by the feature generator
//      * @return a collection of features
//      */
//     Collection<String> extractFeatures(String[] text);
// }


// Path: age-predictor-opennlp/src/main/java/opennlp/tools/authorage/AgeClassifyFactory.java
import opennlp.tools.tokenize.Tokenizer;
import opennlp.tools.tokenize.WhitespaceTokenizer;
import opennlp.tools.util.BaseToolFactory;
import opennlp.tools.util.InvalidFormatException;
import opennlp.tools.util.ext.ExtensionLoader;
import opennlp.tools.util.featuregen.BagOfWordsFeatureGenerator;
import opennlp.tools.util.featuregen.FeatureGenerator;

/*
 * 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.
 */

package opennlp.tools.authorage;



/**
 * TODO: Documentation
 */ 
public class AgeClassifyFactory extends BaseToolFactory {

    public static final AgeClassifyFactory INSTANCE = new AgeClassifyFactory();
    
    private static final String FEATURE_GENERATORS = "authorage.featureGenerators";
    private static final String TOKENIZER_NAME = "authorage.tokenizer";

    private FeatureGenerator[] featureGenerators; // Defaults to just getting unigrams