Named Entity Recognition › Entity Types
Language AI HandbookAll chapters Named Entity Recognition › Entity TypesOne section · Sections in this chapter2 / 17 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
NER systems classify entities into a predefined taxonomy of types. The categories chosen depend on the application domain, but a small set of core types recurs across virtually every NER benchmark and production system.
A named entity is a real-world object that can be referred to with a proper name: a specific person, place, organization, or other identifiable referent. The "named" qualifier distinguishes entities like "Apple Inc." (specific, nameable) from generic references like "the company" (anaphoric, not nameable). Proper names are the prototypical case, but NER systems also extract numerical and temporal expressions that refer to specific real-world quantities.
Core Entity Categories
The three foundational categories that appear in nearly every NER taxonomy are:
- PER (Person): Names of individual people, real or fictional. Examples include "Marie Curie", "Barack Obama", and "Sherlock Holmes". Titles attached to names ("Dr. Fauci", "President Lincoln") are typically included as part of the span.
- ORG (Organization): Companies, government agencies, universities, sports teams, and other collective entities. Examples include "NASA", "Google", "Harvard University", and "the World Health Organization".
- LOC (Location): Places, including countries, cities, regions, rivers, mountains, and physical addresses. Examples include "New York City", "the Amazon River", and "Mount Everest". Some tagsets split this further into GPE (geopolitical entities, like countries and cities) and LOC (pure geographic features, like mountains and rivers).
Extended taxonomies add categories for specific applications:
- DATE / TIME: Calendar dates and time expressions. Examples include "January 2024", "last Tuesday", and "3:00 PM EST".
- MONEY: Monetary amounts. Examples include "$50 million", "€200 billion", and "two hundred dollars".
- PERCENT: Percentage expressions. Examples include "7.5%", "a third", and "half".
- MISC (Miscellaneous): Entities that do not fit the above categories but are still proper nouns: nationality adjectives ("French", "Japanese"), product names, events, and works of art.
Domain-Specific Taxonomies
General-purpose tagsets are designed for broad applicability, but specialized domains benefit from finer-grained categories. Biomedical NER systems distinguish GENE, PROTEIN, DISEASE, CHEMICAL, SPECIES, and CELL_LINE. Legal NER systems label STATUTE, COURT, JUDGE, PLAINTIFF, and DEFENDANT. Financial NER systems need TICKER_SYMBOL, EXCHANGE, and FISCAL_PERIOD. These domain-specific systems are trained on annotated corpora from the target domain, because the distributional properties of entity mentions differ substantially from newswire text.
The choice of taxonomy is not purely a technical decision. It reflects assumptions about what information consumers of the extracted data need. A system designed to populate a corporate knowledge graph cares deeply about the distinction between a subsidiary (ORG) and its parent company (also ORG) in a way that a general news reader does not. Before designing or selecting a NER system for an application, it is worth asking: which entity types matter for downstream tasks, and at what granularity?
Let's load spaCy and inspect what entity types its general-purpose English model recognizes:
import spacy
# Load small English model
# Run once to install: python -m spacy download en_core_web_sm
nlp = spacy.load("en_core_web_sm")
text = (
"Elon Musk announced that Tesla will invest $3.5 billion to open "
"a new Gigafactory in Germany by March 2026. The project will employ "
"about 12,000 workers in Brandenburg."
)
doc = nlp(text)
entities = [
(ent.text, ent.label_, ent.start_char, ent.end_char) for ent in doc.ents
]Entity Label Chars ------------------------------------------------------------ Elon Musk PERSON 0–9 Tesla ORG 25–30 $3.5 billion MONEY 43–55 Germany GPE 85–92 March 2026 DATE 96–106 about 12,000 CARDINAL 132–144 Brandenburg GPE 156–167
The output shows each entity span, its type label, and its character offsets in the source string. spaCy's en_core_web_sm model uses an extended tagset that includes GPE (geo-political entity) as a distinct category from LOC. This reflects the CoNLL and OntoNotes annotation traditions. The character offsets are useful for highlighting entities in a UI or aligning predictions to the original text.
Entity Distribution by Domain
Different domains contain different mixes of entity types. Understanding the expected distribution helps when choosing a pre-trained model or designing a training corpus.
from collections import Counter
domains = {
"News": (
"President Biden met with Chancellor Scholz in Berlin. "
"The White House announced new climate policies. "
"Senator Warren criticized Wall Street banks."
),
"Financial": (
"Microsoft's Q3 revenue reached $52.9 billion, up 17% year-over-year. "
"The Nasdaq rose 2.5% following the Fed's decision. "
"Goldman Sachs raised their price target to $400."
),
"Biomedical": (
"Pfizer and Moderna both reported efficacy above 90% in Phase 3 trials. "
"The FDA approved remdesivir for use at Johns Hopkins Hospital. "
"Dr. Fauci cited data from the NIH study published in The Lancet."
),
}
domain_counts = {}
for domain_name, domain_text in domains.items():
doc = nlp(domain_text)
domain_counts[domain_name] = Counter(ent.label_ for ent in doc.ents)
all_types = sorted(set().union(*[c.keys() for c in domain_counts.values()]))
The chart confirms the intuition: financial text is dominated by MONEY and PERCENT entities, biomedical text mixes ORG and PERSON with product references, and news text skews heavily toward people and places. A model trained only on newswire will generalize poorly to financial filings, which is why domain adaptation or domain-specific training is important in practice.