Skip to content
advancedtext

Biomedical Named Entity Recognition (JNLPBA)

Named entity recognition for biomedical text based on the JNLPBA shared task. Annotate the five GENIA bio-entity classes (protein, DNA, RNA, cell line, cell type) in molecular-biology MEDLINE abstracts, following BioNLP community standards.

PERORGLOCPERORGLOCDATESelect text to annotate

Configuration Fileconfig.yaml

This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.

yaml
# Biomedical Named Entity Recognition (JNLPBA)
# Based on the JNLPBA 2004 Bio-Entity Recognition shared task
# (Collier et al., JNLPBA/BioNLP 2004), which annotates the GENIA
# corpus of molecular-biology MEDLINE abstracts.
#
# Entity Types (the five JNLPBA / GENIA bio-entity classes):
# - Protein:   proteins, protein families/complexes/subunits, receptors
#              (e.g., "NF-kappa B", "IL-2", "STAT1", "TNF-alpha")
# - DNA:       genes, gene families, DNA regions, promoters, binding sites
#              (e.g., "IL-2 gene", "kappa B site", "IL-2 promoter")
# - RNA:       RNA and mRNA (e.g., "IL-6 mRNA", "CD23 mRNA")
# - Cell_line: established cell lines (e.g., "Jurkat cells", "HeLa cells",
#              "HL-60 cells", "U937 cell line")
# - Cell_type: cell types (e.g., "T cells", "monocytes",
#              "peripheral blood lymphocytes", "B cells")
#
# Annotation Guidelines:
# 1. Annotate the full entity phrase, including modifiers
#    - "peripheral blood lymphocytes" not just "lymphocytes"
# 2. Include stand-alone abbreviations and symbols
#    - "IL-2", "NF-kappa B", "TNF-alpha"
# 3. Do NOT include articles (a, the) in the span
# 4. For nested entities, annotate the outermost (longest) mention
# 5. Annotate each mention, even if repeated
# 6. When the class is ambiguous, use surrounding context to decide
#    (e.g., "IL-2" as the protein vs. "IL-2 gene" as DNA)
#
# Difficult Cases:
# - "IL-2 gene" → DNA (whole phrase); "IL-2" alone → Protein
# - "IL-2 mRNA" → RNA (whole phrase)
# - "Jurkat cells" → Cell_line; "T cells" → Cell_type
# - "kappa B site" / "IL-2 promoter" → DNA (regulatory DNA regions)

annotation_task_name: "Biomedical Named Entity Recognition"
task_dir: "."

data_files:
  - sample-data.json
item_properties:
  id_key: "id"
  text_key: "text"

output_annotation_dir: "annotation_output/"
output_annotation_format: "json"

annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Highlight all bio-entities in the text using the five JNLPBA classes"
    labels:
      - "Protein"
      - "DNA"
      - "RNA"
      - "Cell_line"
      - "Cell_type"
    label_colors:
      "Protein": "#0891b2"
      "DNA": "#3b82f6"
      "RNA": "#8b5cf6"
      "Cell_line": "#ef4444"
      "Cell_type": "#22c55e"
    tooltips:
      "Protein": "Proteins, protein families/complexes/subunits, receptors, transcription factors (e.g., 'NF-kappa B', 'IL-2', 'STAT1', 'TNF-alpha')"
      "DNA": "Genes, gene families, DNA regions, promoters and binding sites (e.g., 'IL-2 gene', 'kappa B site', 'IL-2 promoter')"
      "RNA": "RNA and mRNA (e.g., 'IL-6 mRNA', 'CD23 mRNA')"
      "Cell_line": "Established cell lines (e.g., 'Jurkat cells', 'HeLa cells', 'HL-60 cells', 'U937 cell line')"
      "Cell_type": "Cell types (e.g., 'T cells', 'monocytes', 'peripheral blood lymphocytes', 'B cells')"
    allow_overlapping: false

allow_all_users: true
instances_per_annotator: 50
annotation_per_instance: 2
allow_skip: true
skip_reason_required: false

Sample Datasample-data.json

json
[
  {
    "id": "bio_001",
    "text": "Activation of the IL-2 gene in Jurkat T cells requires binding of NF-kappa B to the kappa B enhancer element."
  },
  {
    "id": "bio_002",
    "text": "Glucocorticoids repress transcription of the interleukin-2 gene by interfering with AP-1 and NF-AT in peripheral blood lymphocytes."
  }
]

// ... and 8 more items

Try it live — no install

Boot the real Potato server in your browser (WebAssembly) and annotate with this exact config. Nothing leaves your machine.

▶ Run live in your browser

Get This Design

View on GitHub

Clone or download from the repository

Quick start:

git clone https://github.com/davidjurgens/potato-showcase.git
cd potato-showcase/text/named-entity-recognition/biomedical-ner
potato start config.yaml

Dataset & paper

Collier et al., JNLPBA/BioNLP 2004

Citation (BibTeX)

bibtex
@inproceedings{collier-kim-2004-introduction,
    title = "Introduction to the Bio-entity Recognition Task at {JNLPBA}",
    author = "Collier, Nigel  and Ohta, Tomoko  and Tsuruoka, Yoshimasa  and Tateisi, Yuka  and Kim, Jin-Dong",
    editor = "Collier, Nigel  and Ruch, Patrick  and Nazarenko, Adeline",
    booktitle = "Proceedings of the International Joint Workshop on Natural Language Processing in Biomedicine and its Applications ({NLPBA}/{B}io{NLP})",
    month = aug,
    year = "2004",
    address = "Geneva, Switzerland",
    publisher = "COLING",
    url = "https://aclanthology.org/W04-1213/",
    pages = "73--78"
}

Details

Annotation Types

span

Domain

BiomedicalClinical NLPHealthcare

Use Cases

Named Entity RecognitionInformation ExtractionClinical Text Mining

Tags

biomedicalnerclinicalhealthcareentitiesjnlpbabionlp

Found an issue or want to improve this design?

Open an Issue