Wiki Markup |
---|
{scrollbar}
{section}
{column:width=65%}{panel:title=Contents of this Page}{toc:minLevel=2}{panel}{column}
{column}{include:Menu cTAKES 3.0 to Include}{column}
{section}
h2. Overview of NE Contexts
{note}As of cTAKES 2.5, NE Contexts is no longer a part of the default pipeline. Instead the newer [assertion|cTAKES 3.0 - Assertion] annotator is used to identify general attributes of EntityMentions (but not attributes specific to a single type of named entity such as the dosage attribute of a medication){note}
The context annotator provides a mechanism for examining the context of existing annotations, finding events of interest in the context, and acting on those events in some way. The negation and status annotators both take advantage of this infrastructure by examining the context of named entities (e.g. disorders and findings) to see if they should be considered as negated (e.g. "no chest pain") or if their status should be modified (e.g. "myocardial infarction" should have status "history of").
In fact, the "negation annotator" is really just the context annotator configured to deal with negations. Similarly, the "status annotator" is the context annotator configured to identify the status of named entities.
{tip}To better understand the context annotator code you should start by reading the Javadocs for the class |
Section | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Overview of NE Contexts
Note |
---|
As of cTAKES 2.5, NE Contexts is no longer a part of the default pipeline. Instead the newer assertion annotator is used to identify general attributes of EntityMentions (but not attributes specific to a single type of named entity such as the dosage attribute of a medication) |
The context annotator provides a mechanism for examining the context of existing annotations, finding events of interest in the context, and acting on those events in some way. The negation and status annotators both take advantage of this infrastructure by examining the context of named entities (e.g. disorders and findings) to see if they should be considered as negated (e.g. "no chest pain") or if their status should be modified (e.g. "myocardial infarction" should have status "history of").
In fact, the "negation annotator" is really just the context annotator configured to deal with negations. Similarly, the "status annotator" is the context annotator configured to identify the status of named entities.
Tip |
---|
To better understand the context annotator code you should start by reading the Javadocs for the class edu.mayo.bmi.uima.context.ContextAnnotator.java. It provides a conceptual overview of how the code works. {tip} h2. Negation annotator The negation detection annotator is a |
Negation annotator
The negation detection annotator is a pattern-based
...
(no
...
MaxEnt
...
models
...
required/used)
...
approach
...
that
...
uses
...
finite
...
state
...
machines
...
and
...
is
...
roughly
...
based
...
on
...
the
...
popular
...
...
...
...
...
...
...
...
...
...
introduced
...
by
...
...
...
...
...
...
What follows is an explanation of how negation is performed using the context annotator.
NegationAnnotator.xml
We will start by examining the descriptor file desc/NegationAnnotator.xml.
...
It
...
calls
...
edu.mayo.bmi.uima.context.ContextAnnotator,
...
instead
...
of
...
a
...
"NegationAnnotator".
...
In
...
fact,
...
there
...
is
...
no
...
"negation
...
annotator"
...
analysis
...
engine.
...
We
...
simply
...
configure
...
the
...
ContextAnnotator
...
for
...
the
...
task.
...
Next
...
we
...
will
...
discuss
...
each
...
of
...
the
...
parameter
...
settings
...
in
...
turn:
...
- MaxLeftScopeSize
...
- =
...
- 10
...
- -
...
- The
...
- maximum
...
- number
...
- of
...
- annotations
...
- that
...
- will
...
- make
...
- up
...
- the
...
- left-hand
...
- side
...
- context
...
- is
...
- ten.
...
- Increase
...
- or
...
- decrease
...
- this
...
- parameter
...
- setting
...
- to
...
- increase
...
- or
...
- decrease
...
- the
...
- left
...
- hand
...
- side
...
- context.
...
- MaxRightScopeSize
...
- =
...
- 10
...
- -
...
- The
...
- maximum
...
- number
...
- of
...
- annotations
...
- that
...
- will
...
- make
...
- up
...
- the
...
- right-hand
...
- side
...
- context
...
- is
...
- ten.
...
- Increase
...
- or
...
- decrease
...
- this
...
- parameter
...
- setting
...
- to
...
- increase
...
- or
...
- decrease
...
- the
...
- right-hand
...
- side
...
- context.
...
- ScopeOrder
...
- =
...
- LEFT,
...
- RIGHT
...
- -
...
- The
...
- context
...
- annotator
...
- will
...
- look
...
- for
...
- signs
...
- of
...
- negation
...
- on
...
- the
...
- left-hand
...
- side
...
- of
...
- a
...
- named
...
- entity
...
- first
...
- and
...
- then
...
- the
...
- right-hand
...
- side.
...
- ContextAnalyzerClass
...
- =
...
- edu.mayo.bmi.uima.context.negation.NegationContextAnalyzer
...
- -
...
- The
...
- context
...
- analyzer
...
- looks
...
- at
...
- the
...
- context
...
- (e.g.
...
- the
...
- 10
...
- words
...
- on
...
- the
...
- left
...
- or
...
- right
...
- of
...
- the
...
- named
...
- entity)
...
- and
...
- determines
...
- if
...
- the
...
- named
...
- entity
...
- should
...
- be
...
- negated.
...
- If
...
- it
...
- should,
...
- then
...
- the
...
- negation
...
- context
...
- analyzer
...
- will
...
- generate
...
- a
...
- context
...
- hit
...
- to
...
- be
...
- consumed
...
- by
...
- the
...
- context
...
- hit
...
- consumer
...
- (see
...
- ContextHitConsumerClass.)
...
- ContextHitConsumerClass
...
- =
...
- edu.mayo.bmi.uima.context.negation.NegationContextHitConsumer
...
- -
...
- The
...
- context
...
- hit
...
- consumer
...
- handles
...
- context
...
- hits
...
- generated
...
- by
...
- the
...
- context
...
- analyzer.
...
- In
...
- this
...
- case,
...
- the
...
- negation
...
- context
...
- hit
...
- consumer
...
- simply
...
- sets
...
- the
...
- certainty
...
- of
...
- a
...
- named
...
- entity
...
- to
...
- -1
...
- which
...
- indicates
...
- that
...
- it
...
- has
...
- been
...
- negated.
...
- WindowAnnotationClass
...
- =
...
- edu.mayo.bmi.uima.core.type.textspan.Sentence
...
- -
...
- When
...
- the
...
- context
...
- annotator
...
- collects
...
- the
...
- context
...
- annotations
...
- for
...
- a
...
- named
...
- entity,
...
- it
...
- will
...
- not
...
- look
...
- beyond
...
- the
...
- boundaries
...
- of
...
- the
...
- sentence
...
- that
...
- the
...
- named
...
- entity
...
- is
...
- found
...
- in.
...
- FocusAnnotationClass
...
- =
...
- edu.mayo.bmi.uima.core.type.textsem.IdentifiedAnnotation
...
- -
...
- The
...
- negation
...
- annotator
...
- is
...
- concerned
...
- with
...
- negating
...
- named
...
- entities
...
- and
...
- thus
...
- the
...
- focus
...
- annotation
...
- type
...
- (the
...
- annotations
...
- for
...
- which
...
- a
...
- context
...
- is
...
- generated
...
- and
...
- examined)
...
- specifies
...
- the
...
- parent
...
- of
...
- EventMention
...
- and
...
- of
...
- EntityMention
...
- classes.
...
- ContextAnnotationClass
...
- =
...
- edu.mayo.bmi.uima.common.type.BaseToken
...
- -
...
- The
...
- context
...
- of
...
- the
...
- named
...
- entities
...
- is
...
- a
...
- list
...
- of
...
- tokens.
...
- This
...
- is
...
- what
...
- the
...
- context
...
- analyzer
...
- is
...
- going
...
- to
...
- examine.
...
So,
...
the
...
work
...
of
...
negating
...
a
...
named
...
entity
...
is
...
done
...
by:
...
- finding
...
- negations
...
- by
...
- the
...
- NegationContextAnalyzer
...
- updating
...
- the
...
- status
...
- of
...
- NamedEntities
...
- by
...
- the
...
- NegationContextHitConsumer
...
The
...
former
...
is
...
a
...
pretty
...
lightweight
...
wrapper
...
around
...
another
...
class
...
which
...
has
...
all
...
of
...
the
...
negation
...
pattern
...
finding
...
logic,
...
edu.mayo.bmi.fsm.machine.NegationFSM.
...
If
...
you
...
want
...
to
...
update
...
the
...
pattern
...
matching
...
of
...
negation
...
detection,
...
then
...
you
...
would
...
do
...
it
...
in
...
that
...
class.
...
Updating
...
Negex
...
patterns
...
Updating
...
the
...
negation
...
detection
...
patterns
...
will
...
involve
...
either:
...
- trial
...
- and
...
- error
...
- experimentation.
...
- or
...
- understanding
...
- how
...
- the
...
- NegationFSM
...
- works
...
The
...
rules,
...
patterns,
...
words
...
that
...
identify
...
negation
...
are
...
hard-coded
...
into
...
the
...
class
...
edu.mayo.bmi.fsm.machine.NegationFSM
...
which
...
is
...
found
...
in
...
the
...
core
...
project.
...
We
...
would
...
suggest
...
starting
...
off
...
with
...
the
...
trial-and-error
...
approach.
...
For
...
example,
...
if
...
you
...
wanted
...
to
...
add
...
"impossible"
...
to
...
the
...
lexicon
...
of
...
negation
...
words,
...
then
...
you
...
could
...
try
...
adding
...
it
...
to
...
the
...
_negAdjectivesSet
...
and
...
test
...
the
...
behavior.
...
Status
...
annotator
...
The
...
way
...
the
...
status
...
annotator
...
works
...
mirrors
...
very
...
closely
...
how
...
the
...
negation
...
annotator
...
works.
...
You
...
are
...
encouraged
...
to
...
read the above section, "Negation
...
annotator"
...
,
...
examine
...
the
...
parameter
...
settings
...
given
...
for
...
desc/StatusAnnotator.xml,
...
and
...
look
...
at
...
edu.mayo.bmi.fsm.machine.StatusIndicatorFSM.