uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "LeHouillier, Frank D." <Frank.LeHouill...@gd-ais.com>
Subject RE: UIMA Beginners Help?
Date Tue, 03 Jul 2007 00:19:30 GMT
Hopefully other people will correct and add to this:

JCas is essentially a Java wrapper for a CAS with a particular type
system.  For example if you create an Analysis Engine that produces
Sentence Annotations, JCasGen in the Eclipse plugin will generate a
Sentence class that can be easily added to a JCas.  The CAS itself is
easily accessed through the JCas.  Essentially, if you are working in
Java and you know the type system the AE is getting ahead of time it is
better to use the JCas. 

You can create a pipeline of Analysis Engines through an Aggregate
Analysis Engine.  So in the case of Sentences going to NE extraction.
You'd have an Aggregate Analysis Engine consisting of the Sentence
Extractor AE which adds Sentence annotations to the CAS and a NE
Extractor AE which uses the already present Sentence Annotations in the
course of adding Name Entity annotations (or PERSON annotations,
ORGANIZATION annotations, GPE annotations etc.) to the CAS.  I'm not
sure what you mean that your application has two CASes.  In the default
case there should only be one CAS and that should essentially represent
the entire document.  If you have some code that requires some small bit
of text such as a sentence, then this should probably be handled by code
inside of Analysis Engine code rather than by generating new CASes.  

My best piece of advice about this is that you should go through the
UIMA documentation and do the "Dave Extractor" example.  

All this said, it appears to me that UIMA-JNET doesn't actually require
any prior annotations on the CAS that it gets but generates its own
sentences internally.  Are you sure you aren't doing unnecessary work?


-----Original Message-----
From: Andrew Serff [mailto:lists@serff.net] 
Sent: Monday, July 02, 2007 3:47 PM
To: uima-user@incubator.apache.org
Subject: UIMA Beginners Help?

Hello.  I'm very new to the whole world of data mining and have stumbled

upon UIMA within the last week or so.  I'm trying to go through all the 
documentation and just create a simple application but am hitting some 
road blocks and was wondering where I can find some newbie help. I 
realize this is sorta of long, so I appreciate any help anyone can give.


First I have a question: What is the difference between a CAS and a JCas

and why would I want to use one over the other?  Is this determined by 
the AEs I'm using (i.e. if they are implemented by extending a 
JCas_*_impl) or is there some other reason?  It seems the CAS is more 
developed and has things like CasPools, ability to make CASes with 
multiple AEs, Consumers, etc.  Should I just be using the CAS interface 
and forget about JCas?

My main issue right now is that I can't figure out how to set inputs for

an AE.  I can't find any examples of how to do it.  See the description 
below of what I'm trying to do:

I'm trying to use some pre bundled AEs to parse some text.  I basically 
want to do Named Entity Extraction on text.  So I wrote a simple 
application that first does Sentence Boundary detection and prints out 
the sentences that it finds.  That was easy enough.  So now I would like

to take those sentences and feed it into the named entity AE.  Both the 
Sentence Boundary AE and the NE AE I'm using are from the JULIE lab 
(http://www.julielab.de).  Reading the documentation for the NE AE it 
says that is requires inputs as Sentences (the output of the Sentence 
Boundary AE).  I cannot figure out how to set those inputs and am stuck 
at this point.  Once I figure that out, I think I'll be getting NEs out 
of the CAS. 

So now all that being said, I'm also not sure I'm coding this process 
the way I'm supposed to.  I eventually want to build all this into a 
distributed architecture with many threads running constantly processing

using a pool of extractors.  I want to be able to submit documents to 
the named entity extractor, then persist the named entities in a 
database.  I would like to have multiple entry points into the extractor

(i.e. adhoc (here is a doc, extract it now)) or using a collection 
reader to pull mulitple docs in at once and parse them all.  Right now, 
my simple application has 2 CASes and 2 AnalsysEngines (one for Sentence

Detection and one for NE Extraction).  It seems like I would just want 
to make one AE that does the Sentence Detection and passes it on to the 
NE extractor, but I don't get how you do this.  Do I need to make a new 
AE and define these things in the xml that describes it?  Or is this a 
CPE? 

If anyone has a simple NE example application that could point me in the

right direction, that would be great.  

Thanks!
Andrew




Mime
View raw message