public Classifier runLearner(Corpus trainCorpus, File workDir, String featSetName)
      throws IOException, FileNotFoundException {
    String modelName = cfg.getModelName();
    String model = Utils.getWorkDirectory() + "/" + modelName;
    if (modelName == null)
      throw new RuntimeException("Model name needs to be specified (parameter MODEL_NAME)");
    // SimpleDateFormat nameFormat = new SimpleDateFormat("yyyyMMdd");
    // Date date = new Date();
    // modelName = nameFormat.format(date) + "-" + modelName;
    Classifier classifier = Constructor.createClassifier(model);

    if (featSetName == null)
      throw new RuntimeException(
          "Feature set name needs to be specified (parameter FEAT_SET_NAME)");
    if (modelName == null)
      throw new RuntimeException("Model name needs to be specified (parameter MODEL_NAME)");

    // merge feature files together
    File mergedFeatureVector = File.createTempFile("mergedFeatureVector_", ".csv.gz", workDir);

    OutputStream trainFeatures = new FileOutputStream(mergedFeatureVector);
    FeatureMerger.combine(trainFeatures, trainCorpus);
    System.out.println("start training");
    classifier.train(mergedFeatureVector, new File(workDir, classifier.getName() + ".model"));
    return classifier;
  }