NLU vs NLG: Understanding vs Generating Language
Two halves of the same field
For decades, natural language processing (NLP) was conventionally split into two broad halves. Natural Language Understanding (NLU) covers tasks where a model takes text in and produces a structured interpretation of it — a label, a parse, an extracted fact. Natural Language Generation (NLG) covers tasks where a model produces fluent text as output, whether from scratch, from structured data, or as a transformation of other text. The split maps roughly onto the difference between reading comprehension and writing: one is about extracting meaning, the other about producing it.
What counts as NLU
NLU tasks typically compress unstructured text down to something smaller and structured: a sentiment score, an intent label, a set of named entities, a syntactic parse tree, a boolean entailment judgment. The output is usually much shorter than the input, and success is measured by correctness against a ground truth label.
Classic examples: sentiment analysis (is this review positive or negative?), named entity recognition (which spans are people, places, organizations?), intent classification (does this user want to book a flight or cancel one?), natural language inference (does sentence A entail, contradict, or say nothing about sentence B?), and question answering where the answer is a short span extracted from a passage.
What counts as NLG
NLG tasks go the other direction: they expand a smaller or structured input into fluent, often lengthy natural language output. The output's correctness is harder to pin down numerically — fluency, coherence, and relevance all matter, not just a single right answer.
Classic examples: machine translation (source sentence to target-language sentence), summarization (long document to short summary), dialogue response generation (conversation history to a reply), data-to-text generation (a table of weather statistics to a forecast paragraph), and open-ended text generation (a prompt to a continuation).
NLU vs NLG side by side
| Dimension | NLU | NLG |
|---|---|---|
| Direction | Text in -> structured meaning out | Structured input (or text) in -> fluent text out |
| Typical output size | Small (label, span, score) | Large (sentences, paragraphs) |
| Evaluation | Accuracy, F1, exact match against ground truth | BLEU/ROUGE, human judgment, LLM-as-judge, fluency |
| Classic architecture | Encoder-only (e.g. BERT) | Decoder-only or encoder-decoder (e.g. GPT, T5) |
| Example task | Sentiment classification, NER, intent detection | Translation, summarization, dialogue generation |
| Failure mode | Misclassification, wrong label | Hallucination, incoherence, repetition |
Note
Why the split still matters
Even though one model can now do both, the distinction remains useful for three practical reasons:
1. Evaluation design. NLU tasks have unambiguous correct answers you can score automatically. NLG tasks often don't — "a good summary" has many valid phrasings — so evaluation tooling differs substantially (exact-match metrics versus reference-based metrics like ROUGE, or human/LLM judges).
2. Failure modes differ. An NLU system fails by picking the wrong label — a clean, bounded error. An NLG system can fail by being fluent and confident while being factually wrong (hallucination), which is a qualitatively different and often harder problem to detect.
3. System design. Latency- and cost-sensitive production pipelines sometimes still favor a dedicated small encoder model for a pure classification step (fast, cheap, deterministic) rather than routing it through a large generative model, even when the big model could technically do the job.
Note
What's next
The NLU/NLG split is a task-level lens on NLP. To see how the field actually arrived at unified models that handle both, it helps to trace the architectural history that preceded today's LLMs — starting with the pre-transformer embedding era: ELMo, ULMFit, and BERT.
I build these systems professionally.
Whether it's a RAG pipeline, analytics migration, or AI workflow — let's talk.