Nationality tells you little about how food tastes. Ingredients tell you almost everything.
Every recipe site on earth — including our own /cuisines page — organizes food by nationality first. We measured what those words are actually worth on our own corpus, and the answer is: for most of them, very little. The words that carry real flavor information name an ingredient or a preparation.
Method in one breath: 2,345 dishes, each with an 18-dimension flavor vector computed from its ingredients and their masses (no model was asked an opinion for any number on this page). For each word appearing in at least six titles (236 words), we scored how similar its dishes are — mean pairwise cosine after z-scoring every dimension against the corpus. Near 1: the word names one flavor experience. Near 0: it tells you nothing. Random groups score 0.00 on average.
The two ends of the table
The most coherent words are ingredients and preparations; the least coherent are formats, staples, and most nationalities. Groups this small carry wide chance bands — n is stated on every row, and the chart above draws chance next to each value.
| word | coherence | n | word | coherence | n | |
|---|---|---|---|---|---|---|
| bulgogi | 0.755 | 6 | french | -0.025 | 6 | |
| lemongrass | 0.744 | 8 | eggs | -0.008 | 9 | |
| fajita | 0.731 | 6 | three | 0.000 | 7 | |
| catfish | 0.710 | 8 | sauce | 0.015 | 57 | |
| pesto | 0.705 | 8 | milk | 0.021 | 10 | |
| souvlaki | 0.692 | 9 | rice | 0.026 | 132 | |
| chipotle | 0.671 | 10 | greens | 0.027 | 8 | |
| gochujang | 0.657 | 9 | polish | 0.036 | 6 |
“French” deserves a sentence. Its six dishes score −0.025 — below zero: dishes labeled French are, if anything, slightly less alike than six dishes drawn at random. Partly that is the crudeness of grouping by words (the group catches French onion soup alongside French toast — a fair miniature of the problem with the label itself), and partly the honest truth that “French” spans beef bourguignon and crème brûlée.
The honest complication: some nationality words do work
We expected all the nationality words at the bottom. They aren’t, and reporting only the convenient half would be cherry-picking:
| nationality word | coherence | n | chance p95 at that n |
|---|---|---|---|
| korean | 0.506 | 19 | 0.048 |
| thai | 0.504 | 49 | 0.022 |
| vietnamese | 0.361 | 25 | 0.032 |
| cajun | 0.267 | 29 | 0.036 |
| greek | 0.262 | 52 | 0.019 |
| mediterranean | 0.241 | 13 | 0.061 |
| italian | 0.216 | 8 | 0.117 |
| moroccan | 0.153 | 20 | 0.044 |
| spanish | 0.136 | 6 | 0.130 |
| german | 0.108 | 7 | 0.109 |
| southern | 0.098 | 10 | 0.078 |
| filipino | 0.067 | 7 | 0.109 |
| hungarian | 0.054 | 7 | 0.109 |
| ethiopian | 0.048 | 8 | 0.117 |
| turkish | 0.048 | 9 | 0.091 |
| chinese | 0.044 | 8 | 0.117 |
| cuban | 0.040 | 8 | 0.117 |
| polish | 0.036 | 6 | 0.130 |
| french | -0.025 | 6 | 0.130 |
“Korean” and “Thai” beat chance by an order of magnitude. Look at what tops the whole table: bulgogi, gochujang, lemongrass. A cuisine word predicts flavor exactly to the degree that the cuisine has a pantry — and fails to the degree that it is a technique. “French” is a claim about method; “Korean,” in practice, is a claim about ingredients. Only one of those is visible in how food tastes. The right headline is not “nationality means nothing” — it is that an ingredient word is worth five to ten nationality words, and the nationality words that work are the ones that smuggle a pantry in.
What people actually mean by “chili”
For contested words, each panel below plots that word’s dishes against the whole corpus on its two strongest flavor axes. “Chili” (n=33) spans Texas beef chili, chili crisp and sweet chili sauce. “Curry” (n=65) spreads across two continents of meaning. “Stew” and “soup” are barely groupings at all — they name a format, not a flavor.
Honest limitations
- ~40% of this corpus is project-authored. 934 of the 2,345 dishes were written for Palate against a fixed schema; the rest come from published recipe collections. Authored recipes may be more internally consistent than recipes in the wild, which could flatter coherence scores generally.
- This measures label informativeness within this corpus, not a universal truth about cuisines. A corpus with 500 French dishes might resolve real structure inside “French.”
- Word-grouping is lexical and crude. “French” catches “French toast”; “sweet” catches “sweet potato.” We kept the method dumb on purpose — a smarter grouper would smuggle in exactly the human judgment we are trying to measure.
- The flavor vectors are a composition model — computed from ingredients, masses, and curated per-ingredient flavor labels. No human palate has ever validated one of these vectors against tasting the actual dish.
- Small groups are noisy. Every statistic states its n, and the chart draws the 95th percentile of chance at each group’s size next to its value.
Reproduce this
Deterministic, offline, no model calls. Every number on this page is read from the script’s results file — the page cannot state a number the script didn’t produce.
python analysis/instrument_room/scripts/piece1_label_coherence.py python analysis/instrument_room/scripts/piece1_figures.py
Input: prototype/web/src/data/sample_corpus_v17.json (read-only). Every number on this page is in analysis/instrument_room/results/piece1_label_coherence.json.