Re: Relating MeasurementAnnotations to other IdentifiedAnnotations

2019-08-23 Thread Jeffrey Miller
Thank you Peter and Tim, your responses were very helpful.

On Tue, Aug 20, 2019, 5:01 PM Peter Abramowitsch 
wrote:

> Hi Jeff
>
> I've experimented with three approaches.
>
> One is with the LabValueFinder which is included in the cTakes release -
> that looks specifically for values associated with LabMentions.  It also
> has an "eager" mode where it converts some MedicationMentions into
> LabMentions, when the context seems right.  O2, Sodium etc.   I can't say
> it works all that well and it is not capable of many different semantic
> forms of the Name/Value association.  It is also too eager.. sometimes
> creating LabMentions out of Medications when it shouldn't.
>
> Another approach was to use something like Stanford's TokensRegex, that
> allows you to construct regex-like rules where the segments are not strings
> but Tokens, where you can query the attributes like POS, and NER .   For
> Ctakes I had to adapt a UIMA package that must have been someone's thesis
> project from the university of Nantes.
>
> Copyright 2015 - CNRS (Centre National de Recherche Scientifique)
> package fr.univnantes.lina.uima.tkregex
>
> What I have is not ready for prime time and is still very rough.  It works
> well but only for a limited set of rules
>
> I used it to create a vitals detector.  Here's a snippet of the rules that
> this package loads in at runtime, that creates an annotation called WGT
> given these matchers
> matcher NUM: [ postag == "CD" ];
> matcher BE: [ lemma == "be" | lemma == "at"];
> matcher WT: /(?i)^wt|^weight/;
> matcher WUOM: /(?i)^kg|^lb|^pounds/;
> term "WGT": WT BE? SYM? NUM WUOM;
>
> The last approach was a home-built mechanism using the ConllDependencyNode
> collection and the RelationArguments to detect the same connection between
> certain typed pairs of Identified annotations.
>
> Problem is. I've always been in prototyping mode and never had time to push
> these methods to production ready status
>
> Peter
>
> On Tue, Aug 20, 2019 at 1:15 PM Jeffrey Miller  wrote:
>
> > Hi,
> >
> > Is there any configuration or component in cTAKES that can be used to
> > attribute a measurement annotation to another annotation that it applies
> > to? For example, for "2 mm incision" where we relate "2 mm" to
> "incision"?
> > It looks like there might be a roundabout way to find the head of the
> span
> > of the MeasurementAnnotation in the output of the dependency parser, but
> I
> > was wondering if this has been explored before? Perhaps the
> > RelationExtractor component?
> >
> > I also have another more general question if anyone can help- how does
> the
> > structure of the cTAKES type system effect how cTAKES works? I am looking
> > for a general intuition of how the structure of the typesystem drives the
> > larger cTAKES architecture?
> >
> > Thanks!
> > Jeff
> >
>


Re: Relating MeasurementAnnotations to other IdentifiedAnnotations

2019-08-20 Thread Peter Abramowitsch
Hi Jeff

I've experimented with three approaches.

One is with the LabValueFinder which is included in the cTakes release -
that looks specifically for values associated with LabMentions.  It also
has an "eager" mode where it converts some MedicationMentions into
LabMentions, when the context seems right.  O2, Sodium etc.   I can't say
it works all that well and it is not capable of many different semantic
forms of the Name/Value association.  It is also too eager.. sometimes
creating LabMentions out of Medications when it shouldn't.

Another approach was to use something like Stanford's TokensRegex, that
allows you to construct regex-like rules where the segments are not strings
but Tokens, where you can query the attributes like POS, and NER .   For
Ctakes I had to adapt a UIMA package that must have been someone's thesis
project from the university of Nantes.

Copyright 2015 - CNRS (Centre National de Recherche Scientifique)
package fr.univnantes.lina.uima.tkregex

What I have is not ready for prime time and is still very rough.  It works
well but only for a limited set of rules

I used it to create a vitals detector.  Here's a snippet of the rules that
this package loads in at runtime, that creates an annotation called WGT
given these matchers
matcher NUM: [ postag == "CD" ];
matcher BE: [ lemma == "be" | lemma == "at"];
matcher WT: /(?i)^wt|^weight/;
matcher WUOM: /(?i)^kg|^lb|^pounds/;
term "WGT": WT BE? SYM? NUM WUOM;

The last approach was a home-built mechanism using the ConllDependencyNode
collection and the RelationArguments to detect the same connection between
certain typed pairs of Identified annotations.

Problem is. I've always been in prototyping mode and never had time to push
these methods to production ready status

Peter

On Tue, Aug 20, 2019 at 1:15 PM Jeffrey Miller  wrote:

> Hi,
>
> Is there any configuration or component in cTAKES that can be used to
> attribute a measurement annotation to another annotation that it applies
> to? For example, for "2 mm incision" where we relate "2 mm" to "incision"?
> It looks like there might be a roundabout way to find the head of the span
> of the MeasurementAnnotation in the output of the dependency parser, but I
> was wondering if this has been explored before? Perhaps the
> RelationExtractor component?
>
> I also have another more general question if anyone can help- how does the
> structure of the cTAKES type system effect how cTAKES works? I am looking
> for a general intuition of how the structure of the typesystem drives the
> larger cTAKES architecture?
>
> Thanks!
> Jeff
>


Relating MeasurementAnnotations to other IdentifiedAnnotations

2019-08-20 Thread Jeffrey Miller
Hi,

Is there any configuration or component in cTAKES that can be used to
attribute a measurement annotation to another annotation that it applies
to? For example, for "2 mm incision" where we relate "2 mm" to "incision"?
It looks like there might be a roundabout way to find the head of the span
of the MeasurementAnnotation in the output of the dependency parser, but I
was wondering if this has been explored before? Perhaps the
RelationExtractor component?

I also have another more general question if anyone can help- how does the
structure of the cTAKES type system effect how cTAKES works? I am looking
for a general intuition of how the structure of the typesystem drives the
larger cTAKES architecture?

Thanks!
Jeff