Yes, if there is more than one severity or location relation for a given 
identified annotation, currently the template filler does just take the last 
severity and or last location.

I suggest not changing the type system to allow a list (FSArray), or at least 
holding off until we have a definite, well-defined need (from a user). 

I think instead, ideally, we would make the template filler smarter at picking 
which severity / which location  when there is more than one for the given 
identified annotation. Therefore I'd rather not make it a list now, when in the 
long run I think it should be a single value. And in the meantime if someone 
has a need, they can look through the relations.

Pei, I don't follow what you mean by your item B) below

-- James

-----Original Message-----
From: Chen, Pei [mailto:pei.c...@childrens.harvard.edu] 
Sent: Thursday, March 20, 2014 2:03 PM
To: dev@ctakes.apache.org
Subject: RE: getSeverity etc. for relation extractor

Awesome!
Thanks James...

On Sean's point about many-to-one relationships.  I think the current type 
system only supports 1 degree_of and severity_of for each IdentifiedAnnotation? 
 
Does the TemplateFiller component currently just take the last one in the list 
currently?
Should we modify the type system to support this in the future- something like 
the below?
A) Support many-to-one
B) Separate out getting the relations and getting the actual identified 
annotations.

One suggestion would be:
IdentifiedAnnotation.getBodyLocations(): FSArray<IdentifiedAnnotation>
IdentifiedAnnotation.getBodyLocationRelations(): FSArray<LocationOfTextRelation>
IdentifiedAnnotation.getSeverity(): FSArray<Modifier>
IdentifiedAnnotation.getSeverityRelations(): FSArray<DegreeOfTextRelation>

What do others think?
--Pei

> -----Original Message-----
> From: Masanz, James J. [mailto:masanz.ja...@mayo.edu]
> Sent: Thursday, March 20, 2014 2:50 PM
> To: 'dev@ctakes.apache.org'
> Subject: RE: getSeverity etc. for relation extractor
> 
> I saw the jira was assigned to me and had a few minutes so I implemented a
> fix and committed.
> It was more than just the one line.
> The name of the index in which the binary text relations has changed (now
> separate indexes instead of one for all binary text relations) so I had to
> change which index was searched.
> 
> -----Original Message-----
> From: Chen, Pei [mailto:pei.c...@childrens.harvard.edu]
> Sent: Thursday, March 20, 2014 9:28 AM
> To: dev@ctakes.apache.org
> Subject: RE: getSeverity etc. for relation extractor
> 
> Thanks for confirm James.  It seem like a bug...
> Chase,
> if you confirm if adding ddm.setSeverity(degreeOfTextRelation);  works for
> you, I can commit the changes in trunk.
> 
> Which also brings up some interesting points:
> 1) Should we populate IdentifiedAnnotation.severity() and bodylocationof()
> Directly in RelationExtractorAnnotator instead of the template filler?
> It would seem more intuitive and faster than iterating through the relations
> afterwards again.
> 2)Chase brought up a good point, should we add some of the commonly
> used components to the defaultpipeline?  (DrugNER, RelationExtractor,
> TemplateFiller)?  Seems easier to get onboard I think.
> 
> --Pei
> 
> 
> > -----Original Message-----
> > From: Chen, Pei
> > Sent: Wednesday, March 19, 2014 5:58 PM
> > To: dev@ctakes.apache.org
> > Subject: RE: getSeverity etc. for relation extractor
> >
> > Chase,
> > I am not sure why or the reasoning behind this, but it might explain
> > why Severity is null for your DiseaseDisorderMention example:
> > Line 319 in TemplateFillerAnnotator.java:
> >
> > If I'm reading this logic correctly, it will only populate severity for
> > SignSymptomMention....   Can't think of why not to populate it if it exists 
> > in
> > the BinaryTextRelations-
> > have you tried adding: ddm.setSeverity(degreeOfTextRelation); instead
> > of logging the error ???
> >
> >                             if (eventMention instanceof
> > DiseaseDisorderMention) {
> >                                     DiseaseDisorderMention ddm =
> > (DiseaseDisorderMention) eventMention;
> >                                     logger.error("Need to implement attr
> for " + relation + " for
> > DiseaseDisorderMention");
> >                             } else if (eventMention instanceof
> > SignSymptomMention) {
> >                                     SignSymptomMention ssm =
> > (SignSymptomMention) eventMention;
> >
> >     ssm.setSeverity(degreeOfTextRelation);
> >
> > Would you mind opening a Jira attach a patch/test if it works for you?
> > -Pei
> >
> > > -----Original Message-----
> > > From: Chase Master [mailto:chasemast...@gmail.com]
> > > Sent: Wednesday, March 19, 2014 4:09 PM
> > > To: dev@ctakes.apache.org
> > > Subject: Re: getSeverity etc. for relation extractor
> > >
> > > Thanks,
> > > I tried using the AggregateTemplateFiller.xml from the
> > > template-filler module, and I specified the relation extractor
> > > pipeline that I was using before from the relation-extractor project
> > > (there is also a different one in the template-filler project called
> > > "RelationExtractorAggregateWithoutOrangeBook").  However, I don't
> > > see a difference, the severity is still null.
> > >
> > > Just wondering - is there some reason that the TemplateFiller is not
> > > included by default?  It seems confusing that there are getters for
> > > properties that aren't set in general ...even when one runs the
> > > default clinical pipeline instead of the RelationExtractorAggregate,
> > > these getters are there, but there are no relations.
> > >
> > >
> > > Thanks
> > > Chase
> > >
> > >
> > > On Wed, Mar 19, 2014 at 1:04 PM, Chen, Pei
> > > <pei.c...@childrens.harvard.edu>wrote:
> > >
> > > > If I remember correctly, I think those attributes were set in
> > > > IdentifiedAnnotation via:
> > > > ctakes-template-filler/desc/analysis_engine/TemplateFillerAnnotator.
> > > > xm
> > > > l
> > > > One can look at the logic in:
> > > > org.apache.ctakes.template.filler.ae.TemplateFillerAnnotator [1]
> > > >
> > > > Have you tried added that to the pipeline?
> > > >
> > > > [1]
> > > > http://svn.apache.org/repos/asf/ctakes/trunk/ctakes-template-fille
> > > > r/
> > > > sr
> > > > c/main/java/org/apache/ctakes/template/filler/ae/TemplateFillerAnn
> > > > ot
> > > > at
> > > > or.java
> > > >
> > > > --Pei
> > > >
> > > > > -----Original Message-----
> > > > > From: Chase Master [mailto:chasemast...@gmail.com]
> > > > > Sent: Wednesday, March 19, 2014 1:56 PM
> > > > > To: dev@ctakes.apache.org
> > > > > Subject: getSeverity etc. for relation extractor
> > > > >
> > > > > Hi,
> > > > >
> > > > > I am trying to output the relations associated with
> > > > DiseaseDisorderMentions
> > > > > and other types.  But I want to start by iterating over
> > > > > DiseaseDisorderMention, not BinaryTextRelations since I want to
> > > > > be sure
> > > > to
> > > > > find them all, even if they have no associated relation.
> > > > >
> > > > > I always get null when using any of the getters like
> > > > > "getSeverity()".  I
> > > > am
> > > > > using the example text "He had a slight fracture in the proximal
> > > > > right
> > > > fibula".
> > > > > When I iterate over BinaryTextRelations, I see the following
> > > > > valid
> > > > values:
> > > > > BinaryTextRelation slightFracture = iterator.next();
> > > > > slightFracture.getArg1().getArgument().getCoveredText() is
> "fracture"
> > > > > slightFracture.getArg2().getArgument().getCoveredText() is "slight".
> > > > > However, for the "fracture" DiseaseDisorderMention,
> > > > > getSeverity() is
> > > > null.
> > > > >  If it wasn't, I would then grab
> > > > > disease.getSeverity().getArg1().getArgument().getCoveredText(),
> > > > > or for Arg2.
> > > > >
> > > > > Thanks,
> > > > > Chase
> > > >

Reply via email to