Algorithm Used in ERGO Annotation Paper

A. For simple criterion

1. If only one NP instance in the preferred parser or majority of parse outputs, then

  • 1.1 If we have multiple CUI matches we want to take the right-most longest string match constructed according to 1.2 or 1.3
  • 1.2 else, if there is one CUI match, find the maximally specific (longest-matched term, most specific) UMLS match N, return [N, modifier*] (where modifier* is any adjective or noun modifying N) or some Protege equivalent
  • 1.3. else If there is no UMLS match, then return [m1-m2-..NN], where NN is the right-most, innermost noun, and m1, m2, ... are adjectives or nouns modifying N)

2. If >1 NP, then drop any that involves time and "other secondary restriction type," (need to enumerate) and go to 1 or 3, depending whether >1 NP

3.If >1 NP, then

  • 3.1 Find the maximally specific (longest-matched term, most specific) UMLS match for each NP, and check whether the NPs are connected by terminological AND, OR, or Excluding. If they are, then form the ERGO annotation by adding the terminological connectives to the noun phrases.
  • 3.2 If not, then use the NP that has a CUI with the following preference ordering of semantic type:
    - Disease or Clinical_Attribute or "organ or tissue function"
    - Medication
    - Procedure
    - Finding (such as lab test result)
    Use 1.1 and 1.2 to construct the returned annotation
    Ignore NPs that have other semantic types and that are not annotated to any CUI).
  • 3.3 If none of the UMLS matches has the above semantic types, return left-most noun-phrase
  • 3.4 If there is no UMLS match for any NP, return left-most noun-phrase

B. For comparison criterion

(assume the criterion is rewritten in the form NP =|<|>|<=|>= Quantity

  1. Take the first NP in the parse, and apply 1.1 and 1.2 to get the NP annotation
  2. Pick out the comparison operator
  3. Try to recognize "value unit" in Quantity, return [NP, comparison operator, (value, unit)] or some Protege instance equivalent
  4. If cannot recognize "value unit", return [NP, comparison operator, QuantityAsAString] or some Protege instance equivalent

At the end of the parse, we expect

  • a. [N, modifier*], or
  • b. [m1-m2-...NN], or
  • c. [a or b, comparison operator, (value, unit)] or
  • d.  [a or b, comparison operator, QuantityAsString]
  • where N has an associated UMLS CUI.

If N has more than one UMLS matches, use the preference ordering
- Disease or clinical attribute or "organ or tissue function"
- Medication
- Procedure
- Lab test

| ERGO | Contact Us |