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