Indo-European Languages - Cognate Map

160 languageslinguisticsphylogeneticsjaccard

A TMAP of 160 Indo-European languages from the IE-CoR cognate dataset (Heggarty et al. 2023, Science), where each language is represented as a Jaccard-shingled set of concept::cognate-class tokens - two languages are similar if they share cognate vocabulary for the same concepts. The tree recovers the 10 traditional top-level families (Germanic, Italic, Balto-Slavic, Indo-Iranic, Hellenic, Celtic, Armenian, Albanian, Anatolian, Tocharian) almost perfectly: 91.2% of edges connect languages from the same family, versus a 19.4% baseline for random language pairs - a 4.7x enrichment purely from cognate-sharing, with no phylogenetic model involved.

Indo-European Languages - Cognate MapOpen full page
Loading interactive demo…

How it was made

generate.pypython
from tmap import TMAP

# Each language -> set of "concept_id::cognate_class" tokens
cognate_sets = build_cognate_sets(iecor_cldf_tables)

model = TMAP(
    metric="jaccard",
    n_neighbors=15,
    n_permutations=512,
    seed=42,
).fit(cognate_sets)

viz = model.to_tmapviz()
viz.add_label("language", language_names)
viz.add_color_layout("family", top_level_families, categorical=True, color="tab10")
viz.write_html("ie_languages.html")