You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@uima.apache.org by Matthew Campbell <mc...@syrres.com> on 2007/08/20 23:27:59 UTC
Multi-Document Processing
Hey folks:
I'm looking at a process that runs each document through a bunch of
annotators to tag up various information, then I need to do some
processing/manipulation of those documents based the information held in
the whole collection. I've been reading up on the CPE, but it looks
like it's primarily for running a collection of documents through an
AE. I was hoping someone could point me in the right direction for
doing the collection-wide processing portion of my process.
I had started out by defining the process as one large aggregate AE
and running each document through it, but I don't see a way to go
through that initial tagging process for all documents and then move on
to the next phase.
I then switched gears and tried splitting up each phase into it's
own AE, but then I loose the complex Sofa mappings I had put together
for the previous attempt. So I guess this could be solved in two ways -
one would be that the CPE has some sort of built-in method for doing
collection-wide processing and manipulation (ie, "first identify all
location names in all documents, then replace each with a new name, but
make sure the new name doesn't appear in any other document"). The
other would be to somehow run through the first phase to identify
everything, do processing using the collection of JCas's resulting, then
pump each JCas into a second AE for doing post-processing stuff.
Somewhere in there would have to be some dynamically-mapped Sofas from
the phase 1 AE to the phase 2 AE.
I hope that described my goal well enough, and thanks ahead of time
for any pointers you guys can throw my way.
-Matt
Re: Multi-Document Processing
Posted by Matthew Campbell <mc...@syrres.com>.
Thanks so much! That does help - I'm still fiddling with making sure my
various Sofa's are getting through alright, but this gets me in the
right direction.
-Matt
Marshall Schor wrote:
> Matthew Campbell wrote:
>> Hey folks:
>>
>> I'm looking at a process that runs each document through a bunch
>> of annotators to tag up various information, then I need to do some
>> processing/manipulation of those documents based the information held
>> in the whole collection. I've been reading up on the CPE, but it
>> looks like it's primarily for running a collection of documents
>> through an AE. I was hoping someone could point me in the right
>> direction for doing the collection-wide processing portion of my
>> process.
>> I had started out by defining the process as one large aggregate
>> AE and running each document through it, but I don't see a way to go
>> through that initial tagging process for all documents and then move
>> on to the next phase.
>> I then switched gears and tried splitting up each phase into it's
>> own AE, but then I loose the complex Sofa mappings I had put together
>> for the previous attempt. So I guess this could be solved in two
>> ways - one would be that the CPE has some sort of built-in method for
>> doing collection-wide processing and manipulation (ie, "first
>> identify all location names in all documents, then replace each with
>> a new name, but make sure the new name doesn't appear in any other
>> document"). The other would be to somehow run through the first
>> phase to identify everything, do processing using the collection of
>> JCas's resulting, then pump each JCas into a second AE for doing
>> post-processing stuff. Somewhere in there would have to be some
>> dynamically-mapped Sofas from the phase 1 AE to the phase 2 AE.
>>
>> I hope that described my goal well enough, and thanks ahead of
>> time for any pointers you guys can throw my way.
>>
> The way many do things like this is to have a singleton Annotator at
> the end of the pipe line, which sees all of the CASes being processed
> after they've been "tagged" by earlier annotators. This annotator
> would have some persistent Java object(s) that accumulated information
> across the entire document collection, and would have a
> collection-processing-complete method which it would register with the
> CPM so it could be called at the end of processing the collection.
> This method would then use the accumulated information to do whatever
> processing you wanted to do at that point.
>
> Would that work?
> -Marshall
>
Re: Multi-Document Processing
Posted by Marshall Schor <ms...@schor.com>.
Matthew Campbell wrote:
> Hey folks:
>
> I'm looking at a process that runs each document through a bunch of
> annotators to tag up various information, then I need to do some
> processing/manipulation of those documents based the information held
> in the whole collection. I've been reading up on the CPE, but it
> looks like it's primarily for running a collection of documents
> through an AE. I was hoping someone could point me in the right
> direction for doing the collection-wide processing portion of my process.
> I had started out by defining the process as one large aggregate AE
> and running each document through it, but I don't see a way to go
> through that initial tagging process for all documents and then move
> on to the next phase.
> I then switched gears and tried splitting up each phase into it's
> own AE, but then I loose the complex Sofa mappings I had put together
> for the previous attempt. So I guess this could be solved in two ways
> - one would be that the CPE has some sort of built-in method for doing
> collection-wide processing and manipulation (ie, "first identify all
> location names in all documents, then replace each with a new name,
> but make sure the new name doesn't appear in any other document").
> The other would be to somehow run through the first phase to identify
> everything, do processing using the collection of JCas's resulting,
> then pump each JCas into a second AE for doing post-processing stuff.
> Somewhere in there would have to be some dynamically-mapped Sofas from
> the phase 1 AE to the phase 2 AE.
>
> I hope that described my goal well enough, and thanks ahead of time
> for any pointers you guys can throw my way.
>
The way many do things like this is to have a singleton Annotator at the
end of the pipe line, which sees all of the CASes being processed after
they've been "tagged" by earlier annotators. This annotator would have
some persistent Java object(s) that accumulated information across the
entire document collection, and would have a
collection-processing-complete method which it would register with the
CPM so it could be called at the end of processing the collection. This
method would then use the accumulated information to do whatever
processing you wanted to do at that point.
Would that work?
-Marshall