Thanks Thilo,

this sound like a good thing to try. I thought that I need to start a whole CPE because maybe the framework is needed to set up the initial CAS that is passed on the the readers "getNext()" method, but it seems I can use the AEs as "standalone" modules. However, I think this way I will not be able to benefit from some of the frameworks features like exception handling, multithreading etc..., but for the time being I think I can live without that,

Christoph

Thilo Goetz schrieb:
Not sure this is going to help, but here goes.  I find
this kind of situation quite common.  So I don't use a
CPE, but just run an aggregate under my own control.

Create a UIMA app with something like this:

public class UimaApp {

  public static void main(String[] args) {
    try {
      // Get Resource Specifier from XML file
      XMLInputSource in = new XMLInputSource(args[0]);
ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
      // Instantiate analysis engine
      AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
      // Create CAS
      CAS cas = ae.newCAS();

// Now process documents (in a loop, hooked up to a queue or whatever is convenient...)

      // Reset CAS before processing
      cas.reset();
      // Set document text and do other initialization
      cas.setDocumentText("Document text goes here");
      // Run ae on CAS
      ae.process(cas);
      // If necessary, get results out of CAS...
System.out.println("Number of annotations: " + cas.getAnnotationIndex().size());

    } catch (Exception e) {
      e.printStackTrace();
    }
  }

}

So if the only thing you need the CPE for is the collection
reader, this is an alternative for you.

--Thilo


Reply via email to