Running from trunk, I don't get any relations for "Rash on arm and leg" :(

If I change the text to "pain in arm and leg" I get one LocationOfTextRelation 
annotation
with arg1=SignSymptomMention (pain)
and arg2=AnatomicalSiteMention (arm)

Does the relation extractor support creating a 2nd relation involving pain - 
the one between pain and leg (is this just an unfortunate choice of example) or 
does the relation extractor need enhancement before it would create mutiple 
location_of for a single SignSymptomMention or DiseaseDisorderMention

BTW, I will have to debug the setting of bodyLocation in the code because even 
for "pain in arm", when running from trunk, the LocationOfTextRelation 
annotation is being created, but the bodyLocation within the SignSymptomMention 
is not being set because the code in TemplateFillerAnnotator expects arg1 and 
arg2 to be swapped from what they currently are. I'll take a look at what it 
was in cTAKES 3.1 and find out if this is a bug in TemplateFillerAnnotator or 
something else.

-- James

-----Original Message-----
From: Finan, Sean [mailto:sean.fi...@childrens.harvard.edu] 
Sent: Friday, March 21, 2014 12:30 PM
To: dev@ctakes.apache.org
Subject: RE: getSeverity etc. for relation extractor

> until we have a definite, well-defined need (from a user).

"Rash on arm and leg"

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

[Rash].getLocationRelation() > [Rash : Arm]
[Rash].getLocation() > [Arm]



-----Original Message-----
From: Masanz, James J. [mailto:masanz.ja...@mayo.edu] 
Sent: Friday, March 21, 2014 12:58 PM
To: 'dev@ctakes.apache.org'
Subject: RE: getSeverity etc. for relation extractor

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-fil
> > > > le
> > > > r/
> > > > sr
> > > > c/main/java/org/apache/ctakes/template/filler/ae/TemplateFillerA
> > > > nn
> > > > 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