I ran 3.1 against "pain in arm and leg" and I get just one location_of relation. And again no location_of relations for "rash on arm and leg"
Sean, what was the exact phrase you used with the incubator version? (or was that a while ago and lost) -----Original Message----- From: Finan, Sean [mailto:sean.fi...@childrens.harvard.edu] Sent: Friday, March 21, 2014 3:59 PM To: dev@ctakes.apache.org Subject: RE: getSeverity etc. for relation extractor Hi James, It is starting to resemble a row of falling dominoes ... I ran with an incubator version of the "location of" extractor and it did seem to find multiple locations for a single d/d. Functionality may have changed since then. Thanks for all of your attention to this topic. Sean -----Original Message----- From: Masanz, James J. [mailto:masanz.ja...@mayo.edu] Sent: Friday, March 21, 2014 4:34 PM To: 'dev@ctakes.apache.org' Subject: RE: getSeverity etc. for relation extractor 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 > > > >