uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Artem Vovk <vovk.ar...@gmail.com>
Subject Re: AnalysisEngine.processAndOutputNewCASes(...) in case of JCasMultiplier returns 0 JCases
Date Thu, 26 Sep 2013 23:03:16 GMT
Hi Richard,
	
> did you try asking the AggregateBuilder for a description,
> calling getOperationalProperties().setOutputsNewCASes(true)
> on the description and then creating the engine?

	thanks Richard, it solved my problem!

However, I noticed that while using the JCasIterator I should release every JCas object after
using it, otherwise the process is blocked because of the CasPool(?):

JCasIterator it = engine.processAndOutputNewCASes(jCas);
while(it.hasNext()) {
  JCas a = it.next();
  ...
  a.release();
}

Best,
Artem

On Sep 5, 2013, at 7:59 PM, Richard Eckart de Castilho <richard.eckart@gmail.com> wrote:

> Hi Artem,
> 
> did you try asking the AggregateBuilder for a description,
> calling getOperationalProperties().setOutputsNewCASes(true)
> on the description and then creating the engine?
> 
> I have an apparently working piece of code looking along these lines
> 
> // The part starting with a splitter and ending with a merger has to be in its own
> // aggregate. The flow controller of the aggregate has to drop the intermediate CASes.
> FlowControllerDescription fcd = createFlowControllerDescription(FixedFlowController.class,
>  FixedFlowController.PARAM_ACTION_AFTER_CAS_MULTIPLIER, "drop");
> AnalysisEngineDescription embedded = createEngineDescription(fcd, splitter, tokenizer,
merger);
> 
> // The final merged CAS, however, needs to be returned from the aggregate
> embedded.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
> 
> // Need to wrap into another aggregate because runPipeline has no immediate support for
> // flow control
> AnalysisEngineDescription pipelineDesc = createEngineDescription(sentenceDetector, embedded,
consumer);
> 
> SimplePipeline.runPipeline(createReaderDescription(…), pipelineDesc);
> 
> Cheers,
> 
> -- Richard
> 
> On 30.08.2013, at 23:32, Artem Vovk <vovk.artem@gmail.com> wrote:
> 
>> Hi,
>> 
>> I wanted to write a test for MyJCasMultiplier, to check how many JCases are created.
Here is my code:
>> 
>> AnalysisEngineDescription segmenter =   createEngineDescription(BreakIteratorSegmenter.class);
>> 
>> AnalysisEngineDescription multiplier = createEngineDescription(MyJCasMultiplier.class);
>> 	
>> AggregateBuilder ab = new AggregateBuilder();
>> ab.add(segmenter);
>> ab.add(multiplier);
>> 
>> AnalysisEngine engine = ab.createAggregate();
>> engine.getAnalysisEngineMetaData().getOperationalProperties().setOutputsNewCASes(true);
>> 
>> JCas jCas = engine.newJCas();
>> jCas.setDocumentText(testString);
>> JCasIterator it = engine.processAndOutputNewCASes(jCas);
>> 
>> The problem is that engine.processAndOutputNewCASes(jCas) returns always 0 JCases,
but I know it should be more :) Did I miss something here or it is a framework issue?
>> 
>> Best,
>> Artem
> 


Mime
View raw message