public void testTesting_MultiTH(CommonConfig config) {
    MaxEntClassificationEDA meceda = new MaxEntClassificationEDA();
    try {
      meceda.initialize(config);
      // check the test data directory
      meceda.initializeData(config, false);

      int correct = 0;
      int sum = 0;
      logger.info("build CASes for input sentence pairs:");
      for (File file : (new File(meceda.getTestDIR())).listFiles()) {
        // ignore all the non-xmi files
        if (!file.getName().endsWith(".xmi")) {
          continue;
        }
        JCas cas = PlatformCASProber.probeXmi(file, null);
        ClassificationTEDecision decision = meceda.process(cas);
        logger.info(decision.getPairID());
        logger.info(meceda.getGoldLabel(cas));
        logger.info(decision.getDecision().toString());
        logger.info(String.valueOf(decision.getConfidence()));
        if (meceda.getGoldLabel(cas).equalsIgnoreCase(decision.getDecision().toString())) {
          correct++;
        }
        sum++;
      }
      logger.info("The correctly predicted pairs are " + correct + " / " + sum);

      meceda.shutdown();
      logger.info("EDA shuts down.");
    } catch (Exception e) {
      logger.info(e.getMessage());
    }
  }
  public void testTesting_MultiTH_AND_Output(CommonConfig config) {
    MaxEntClassificationEDA meceda = new MaxEntClassificationEDA();

    BufferedWriter output = null;

    try {
      meceda.initialize(config);
      // check the test data directory
      meceda.initializeData(config, false);

      output =
          new BufferedWriter(
              new OutputStreamWriter(
                  new FileOutputStream(
                      config.getConfigurationFileName().replace("configuration-file", "results")
                          + "_Result.txt"),
                  "UTF-8"));
      logger.info("build CASes for input sentence pairs:");
      int correct = 0;
      int sum = 0;
      for (File file : (new File(meceda.getTestDIR())).listFiles()) {
        // ignore all the non-xmi files
        if (!file.getName().endsWith(".xmi")) {
          continue;
        }
        JCas cas = PlatformCASProber.probeXmi(file, null);
        ClassificationTEDecision decision = meceda.process(cas);
        output.write(decision.getPairID());
        output.write("\t");
        output.write(meceda.getGoldLabel(cas).toUpperCase());
        output.write("\t");
        output.write(decision.getDecision().toString().toUpperCase());
        output.write("\t");
        output.write(String.valueOf(decision.getConfidence()));
        output.newLine();
        logger.info("Pair " + decision.getPairID() + " is done.");
        if (meceda.getGoldLabel(cas).equalsIgnoreCase(decision.getDecision().toString())) {
          correct++;
        }
        sum++;
      }
      output.close();
      logger.info("The correctly predicted pairs are " + correct + " / " + sum);
      meceda.shutdown();
      logger.info("EDA shuts down.");
    } catch (Exception e) {
      logger.info(e.getMessage());
    }
  }
  public void testTesting_SingleTH(CommonConfig config) {
    MaxEntClassificationEDA meceda = new MaxEntClassificationEDA();
    LAPAccess lap = null;
    try {
      meceda.initialize(config);

      JCas test1Cas;
      JCas test2Cas;
      logger.info("build CASes for input sentence pairs:");

      if (meceda.getLanguage().equalsIgnoreCase("DE")) {
        lap = new TreeTaggerDE();

        test1Cas =
            lap.generateSingleTHPairCAS(
                "Es wird die Registrierung der Software verlangt, diese ist jedoch nicht möglich. Es wird \"Fehlercode -27\" angezeigt.",
                "Fehlercode -27 erscheint beim Registrieren");
        test2Cas =
            lap.generateSingleTHPairCAS(
                "Als ich heute noch einmal etwas weiter machen wollte, stellte ich fest, daß jetzt immer wenn ich den Startzeiger an eine Stelle setze und von dort aus die Preview ansehen möchte, das Anzeigen ganz von Beginn an startet.",
                "Startzeiger zeigt immer von Anfang an");
        //				test1Cas = lap.generateSingleTHPairCAS("Wenn ich auf Preview drücke, beginnt die
        // Anzeige immer von vorn bei Datensatz 1, statt an derStelle wo ich zuletzt bearbeitet
        // habe.", "Startzeiger zeigt immer von Anfang an");
        //				test2Cas = lap.generateSingleTHPairCAS("Beim Öffnen des Programmes erscheint die
        // Fehlermeldung\" das smartcard device...\"", "Leider erscheint die Fehlermeldung -9 beim
        // ausführen.");
        //				test1Cas = lap.generateSingleTHPairCAS("Leider erscheint die Fehlermeldung -9 beim
        // ausführen.", "Beim Öffnen des Programmes erscheint die Fehlermeldung\" das smartcard
        // device...\"");
        //				test2Cas = lap.generateSingleTHPairCAS("Beim Öffnen des Programmes erscheint die
        // Fehlermeldung\" das smartcard device...\"", "Leider erscheint die Fehlermeldung -9 beim
        // ausführen.");
        //				test1Cas = lap.generateSingleTHPairCAS("Fehlercode 27 erscheint beim Registrieren",
        // "ein Fehlercode 27 aufgetreten ist");
        //				test1Cas = lap.generateSingleTHPairCAS("Fehlercode 27 erscheint beim Registrieren",
        // "meldet das Programm Fehlercode 27");
        //				test2Cas = lap.generateSingleTHPairCAS("Fehlercode 27 erscheint beim Registrieren",
        // "bekomme ich den Fehlercode 9");
      } else {
        lap = new TreeTaggerEN();

        // ENTAILMENT
        //				test1Cas = lap.generateSingleTHPairCAS("The person is hired as a postdoc.","The person
        // is hired as a postdoc.");
        // NONENTAILMENT
        //				test2Cas = lap.generateSingleTHPairCAS("The train was uncomfortable", "The train was
        // comfortable");
        //				test1Cas = lap.generateSingleTHPairCAS("I visit Jerusalem","I visit Israel");
        //				test2Cas = lap.generateSingleTHPairCAS("I visit Jerusalem", "I visit Iran");
        test1Cas = lap.generateSingleTHPairCAS("I saw a car", "I saw an automobile");
        test2Cas = lap.generateSingleTHPairCAS("I saw a car", "I saw a cat");
      }

      logger.info("Answers are:");
      ClassificationTEDecision decision1 = meceda.process(test1Cas);
      logger.info(decision1.getDecision().toString());
      logger.info(String.valueOf(decision1.getConfidence()));
      ClassificationTEDecision decision2 = meceda.process(test2Cas);
      logger.info(decision2.getDecision().toString());
      logger.info(String.valueOf(decision2.getConfidence()));

      meceda.shutdown();
      logger.info("EDA shuts down.");
    } catch (Exception e) {
      logger.info(e.getMessage());
    }
  }