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.
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 browserGet This Design
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.yamlConfiguration File
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# 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 Data
[
{
"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 itemsTry 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 browserGet This Design
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.yamlDataset & paper
Collier et al., JNLPBA/BioNLP 2004
Citation (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
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an Issue(opens in a new tab)Related Designs
Analysis of Clinical Text: Disorder Identification and Normalization
Identify disorder mentions and their attributes in clinical discharge summaries, based on SemEval-2015 Task 14 (Elhadad et al.). Annotators mark disorder spans, body locations, severity indicators, and classify the assertion status of each disorder.
Chemical-Disease Relation Extraction (BC5CDR)
Extract chemical-disease relations from biomedical literature. Based on BioCreative V CDR task. Identify chemical and disease entities, then annotate causal relationships between them (chemical induces disease).
Social Determinants of Health (SDOH) Extraction
Event-based extraction of social determinants of health from clinical notes based on the n2c2 2022 Track 2 shared task and SHAC corpus. Annotates substance use (alcohol, drug, tobacco), employment, and living status with temporal and status attributes.