You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@uima.apache.org by Richard Eckart de Castilho <re...@apache.org> on 2015/11/29 11:25:07 UTC
AnalysisComponent vs AnalysisEngine
Hi all,
this post [1] on Stackoverflow brought up a question I couldn't answer:
What is the difference between AnalysisComponent and AnalysisEngine?
Looking at the inheritance hierarchy of AnalysisComponent, it appears that
it is used in the UIMA SDK examples to implement components.
But I've never seen that being used anywhere else. E.g. we implemented
uimaFIT on top of AnalysisEngine.
So what's the difference and when should one be used and when the other?
Cheers,
-- Richard
[1] http://stackoverflow.com/questions/33973273/how-are-you-supposed-to-use-the-dkpro-libraries-with-uima-ruta
Re: AnalysisComponent vs AnalysisEngine
Posted by Richard Eckart de Castilho <re...@apache.org>.
Thanks Marshall!
Actually, now that you say it, I knew it all...
For a bit, I had actually thought to have missed out on a significant
part of the framework :)
Cheers,
-- Richard
> On 30.11.2015, at 17:10, Marshall Schor <ms...@schor.com> wrote:
>
> This also initially confused me...
>
> There are two different categories of APIs used in UIMA pipelines. One of these
> is for "component" writers - these are people who implement components (usually
> these are usually Annotators, but may also be things like Cas Consumers, Cas
> Multipliers, etc.) which implement a standard set of APIs for components. For
> example, Annotators implement the "process" method which takes a CAS and works
> on it. Each component implements a particular lifecycle, and handles one or
> more CASs.
>
> Analysis Engines represent UIMA pipelines, usually made up of multiple
> components, possibly in hierarchies, arranged in some kind of a flow. The
> pipelines, at the bottom of any aggregation hierarchy is composed of the the
> above "components".
>
> Analysis Engines are created using produceAnalysisEngine calls, and then fed one
> or more CASes to process. The APIs for Analysis Engines can be thought of as
> UIMA Application APIs.
>
> The XML descriptors, which describe which components to use, how they are put
> together, configuration parameters, and other meta information, are associated
> with Analysis Engines.
>
> In the tutorial book,
> http://uima.apache.org/d/uimaj-current/tutorials_and_users_guides.html ,
> Chapter 1 is more about developing components (called Annotators), while chapter
> 3 is more about topics relating to Analysis Engines.
>
> Annotators, Cas Multipliers, Collection Readers, and Cas Consumers typically
> inherit from Cas/JCasAnnotator_ImplBase, which eventually inherits from
> AnalysisComponent.
>
> HTH. -Marshall
>
> On 11/29/2015 5:25 AM, Richard Eckart de Castilho wrote:
>> Hi all,
>>
>> this post [1] on Stackoverflow brought up a question I couldn't answer:
>>
>> What is the difference between AnalysisComponent and AnalysisEngine?
>>
>> Looking at the inheritance hierarchy of AnalysisComponent, it appears that
>> it is used in the UIMA SDK examples to implement components.
>>
>> But I've never seen that being used anywhere else. E.g. we implemented
>> uimaFIT on top of AnalysisEngine.
>>
>> So what's the difference and when should one be used and when the other?
>>
>> Cheers,
>>
>> -- Richard
>>
>> [1] http://stackoverflow.com/questions/33973273/how-are-you-supposed-to-use-the-dkpro-libraries-with-uima-ruta
>>
>>
>
Re: AnalysisComponent vs AnalysisEngine
Posted by Marshall Schor <ms...@schor.com>.
This also initially confused me...
There are two different categories of APIs used in UIMA pipelines. One of these
is for "component" writers - these are people who implement components (usually
these are usually Annotators, but may also be things like Cas Consumers, Cas
Multipliers, etc.) which implement a standard set of APIs for components. For
example, Annotators implement the "process" method which takes a CAS and works
on it. Each component implements a particular lifecycle, and handles one or
more CASs.
Analysis Engines represent UIMA pipelines, usually made up of multiple
components, possibly in hierarchies, arranged in some kind of a flow. The
pipelines, at the bottom of any aggregation hierarchy is composed of the the
above "components".
Analysis Engines are created using produceAnalysisEngine calls, and then fed one
or more CASes to process. The APIs for Analysis Engines can be thought of as
UIMA Application APIs.
The XML descriptors, which describe which components to use, how they are put
together, configuration parameters, and other meta information, are associated
with Analysis Engines.
In the tutorial book,
http://uima.apache.org/d/uimaj-current/tutorials_and_users_guides.html ,
Chapter 1 is more about developing components (called Annotators), while chapter
3 is more about topics relating to Analysis Engines.
Annotators, Cas Multipliers, Collection Readers, and Cas Consumers typically
inherit from Cas/JCasAnnotator_ImplBase, which eventually inherits from
AnalysisComponent.
HTH. -Marshall
On 11/29/2015 5:25 AM, Richard Eckart de Castilho wrote:
> Hi all,
>
> this post [1] on Stackoverflow brought up a question I couldn't answer:
>
> What is the difference between AnalysisComponent and AnalysisEngine?
>
> Looking at the inheritance hierarchy of AnalysisComponent, it appears that
> it is used in the UIMA SDK examples to implement components.
>
> But I've never seen that being used anywhere else. E.g. we implemented
> uimaFIT on top of AnalysisEngine.
>
> So what's the difference and when should one be used and when the other?
>
> Cheers,
>
> -- Richard
>
> [1] http://stackoverflow.com/questions/33973273/how-are-you-supposed-to-use-the-dkpro-libraries-with-uima-ruta
>
>