← All methodologies

correspondence-analysis — declared by cat-harness — source held

Applies when. The same question as lsi — which units of a prose graph are close in what they are about — when the answer must not be dominated by how LONG a unit is or how COMMON a term is. CA removes those margins by construction, so it is the method to reach for when LSI’s first dimensions are margins (a first dimension with no negative pole) or when the question is which units are UNUSUAL — outlier pages, specimen text, a list among prose. It answers which units have similar term profiles, relative to independence. Like lsi, every output is a PROPOSAL. Not for choosing between the two methods by blending them (methodology-adoption §”Parallel, not composable”), not for a controlled vocabulary (skill-pipeline-subject-indexing), and not for any decision.

Origin. Correspondence analysis is Jean-Paul Benzécri’s (L’Analyse des Données, 1973) and is set out in Michael Greenacre, Theory and Applications of Correspondence Analysis (Academic Press, 1984) and Correspondence Analysis in Practice (3rd ed., 2017). Its application to information retrieval, and the comparison with latent semantic analysis this node rests on, is Qianqian Qi, David J. Hessen and Peter G. M. van der Heijden, “Improving information retrieval through correspondence analysis instead of latent semantic analysis”, Journal of Intelligent Information Systems (2023), doi:10.1007/s10844-023-00815-y — open access, ingested whole and read.

Ingested sources:

  • library/qi-hessen-vanderheijden-2023-ca-vs-lsa

Node file: correspondence-analysis.md


Correspondence analysis: the SVD of the standardised residuals

Adopted 2026-09-29 (bean ansc, issue #1482), as option G of the LSI work, and measured against LSI on this repository’s one ground truth before being adopted.

Its sources: what is held

source held what this node takes from it
Qi, Hessen & van der Heijden 2023 ✅ library/qi-hessen-vanderheijden-2023-ca-vs-lsa the definition (§2.2), the retrieval use and the transition formula, the weighting and α variants (§3), the worked example the engine is tested on (Table 1, Fig. 1)
Greenacre 1984 / 2017 ❌ not held cited by Qi et al. for the method; nothing here depends on it beyond what Qi et al. restate
Benzécri 1973 ❌ not held the origin, for attribution only

The load-bearing idea, in the paper’s words

“the solution of LSA is a mix of the associations between documents and terms, and marginal effects arising from the lengths of documents and marginal frequencies of terms” — and “CA ignores the information on marginal frequency differences between documents and between terms from the solution by preprocessing the data, and it only focuses on the relationships between documents and terms” (§2.1).

The method, as Qi et al. define it (§2.2)

# step definition
1 proportions P = F / N for the document × term count matrix F; row masses r = P1, column masses c = Pᵀ1
2 residuals S = D_r^{-½}(P − E)D_c^{-½} with E = rcᵀ, the expected proportions under independence. ‖S‖² is the total inertia, “the Pearson χ² statistic divided by sample size”
3 SVD S = UΣVᵀ; keep k
4 coordinates standard Φ = D_r^{-½}U, Γ = D_c^{-½}V; documents at ΦΣ, terms at ΓΣ. “Euclidean distances between the rows of ΦkΣk … approximate χ²-distances between the rows … of F”
5 margins removed Σ_i r_i φ_ik = 0 = Σ_j c_j γ_jk — every dimension is orthogonal to the margins
6 new document the transition formula (eq. 8): “a new document d … can be projected onto the k-dimensional subspace by placing it in the weighted average of the column points using (d / Σ d_j) Γk”
7 variants weighting the raw matrix before CA (§3.1) and a singular-value exponent α (§3.2): coordinates ΦΣ^α

What the paper found: on four datasets, “CA always performs better than LSA” in mean average precision, under each of four feature extractions; weighting the input “can improve CA; however, it is data dependent and the improvement is small”; α “often improves the performance of CA; however, the extent of the improvement depends on the dataset and the number of dimensions”; and “cosine similarity performs better than the Euclidean distance and dot similarity” (§6).

Measured here, 2026-09-29

On the one ground truth this repository has — the epics 250 open beans were already filed under, leave-one-out over 21 epics, on the bean store as it stood before the LSI-driven re-filing (after it, LSI would be scored against its own proposals):

method agree paired with only this one only the other exact McNemar
CA, raw, k=100 146 LSI, raw, k=100 (136) 27 17 p = 0.17
CA, raw, k=100 146 LSI, log-entropy, k=100 (149) 13 16 p = 0.71
CA, raw, k=200 157 LSI, log-entropy, k=200 (153) 19 15 p = 0.61

The direction agrees with Qi et al. on the same feature extraction (CA over raw-count LSA); the size is not significant at n = 250; and weighted LSI closes the gap. Neither method is shown better at filing beans, so the filing default stays lsi and this node is a parallel track, not a replacement.

Two observations on the IRIS replica library (342 sections), recorded as observed here, not as claims from a held source:

  • LSI’s dimension 1 places all 342 sections on one side — a margin, as Qi et al. describe. CA’s dimension 1 splits them 46 / 296 — a contrast. The paper’s central claim holds on this corpus.
  • CA’s leading dimensions are carried by the most distinctive profiles: the style manual’s list of place names, and the Lorem-ipsum and font-specimen pages. The χ² metric weights a rare profile heavily. That makes CA the sharper instrument for finding outlier pages, and a noisier one for reading themes.

What this platform adopts, and what it refuses

Adopted: steps 1–6 on the RAW counts (the paper: processing the raw matrix “is considered an integral part of CA”); cosine for comparison; α and a weighted input available as options, off by default, because the paper finds their gain data-dependent and this repository measured none that is significant.

Refused, for the same reasons as lsi and with the same numbering: a CA cosine is never merged with a lexical match (1); a dimension is not a topic until a person names it (2); CA output never writes a relation (3); it is never evidence for a claim in content (4). And one of its own:

  1. A unit with no indexed term is not placed. Its profile is undefined, so its row is taken as zero — it is dropped from the analysis and scores 0 against everything, rather than being given a made-up position.

How it is performed here

pipeline/ca.ts, sharing lsi.ts’s term matrix and randomized SVD (Halko et al.) so that a comparison is between decompositions and not between vocabularies. The residual matrix is never formed: products with S and Sᵀ are one sparse product plus a rank-one correction each. ca.test.ts checks it against the paper’s Table 1: the first two principal inertias (0.475, 93.2 %; 0.017, 3.4 %), their sum equal to χ²/N, jaguar between the cat and car terms, every dimension centred on the masses, and the transition formula returning each document to its own coordinates. bun run cat lsi:epics --method ca runs it on the bean store; the skill is lsi-indexing.