Am 25.07.2013 um 04:15 schrieb swirl <[email protected]>: > Hi Richard, > I was reading your reference for using JCasIterable > (https://code.google.com/p/dkpro-core-asl/wiki/GroovyRecipies#OpenNLP_Part- > of-speech_tagging_pipeline_using_JCasIterable_and_c), but i have some > questions. > > Your example creates a JCasIterable using the following codes: > > def pipeline = new JCasIterable( > createReaderDescription(TextReader, > TextReader.PARAM_PATH, args[0], > TextReader.PARAM_LANGUAGE, args[1], > TextReader.PARAM_PATTERNS, ["[+]*.txt"]), > createEngineDescription(OpenNlpSegmenter), > createEngineDescription(OpenNlpPosTagger)); > > I assume that createReaderDescription(), createEngineDescription() are > return CollectionReaderDescription and AnalysisEngineDescription > respectively. But when I looked at the constructor for JCasIterable, it only > accepts CollectionReader and AnalysisEngine array: > JCasIterable(final CollectionReader aReader, final AnalysisEngine... > aEngines) > > Why is this so?
In the days of yore, uutuc/uimaFIT devs/users used instances (CollectionReader, AnalysisEngine) more often. Later, we figured out that in those cases we had to take care of sending all the life-cycle events (collectionProcessComplete, destroy) ourselves. It also had other potentially unexpected effects, such as that a CollectionReader could not be re-used in several pipelines because after the first pipeline was through, it would be "empty" (hasNext() = false). Today, it is considered a best practice to stick to descriptors as long as possible and instantiate only when necessary. If possible, leave instantiation to a runtime engine like SimplePipeline or CPE. In uimaFIT 1.4.0 the JCasIterable only accepts CollectionReader and AnalysisEngine…. In uimaFIT 2.0.0, this changes to CollectionReaderDescription and AnalaysisEngineDescription…. See also: - UIMA-3041 [1] - JCasIterable should have signature accepting descriptors - UIMA-3097 [2] - Split JCasIterable into iterable and iterator parts Cheers, -- Richard [1] https://issues.apache.org/jira/browse/UIMA-3041 [2] https://issues.apache.org/jira/browse/UIMA-3097
