At a glance it looks simple: read the names, count them and make a ranking. Anyone could do it with a spreadsheet.
But the names of the Children’s Tamborrada have been published over the years, on different pages, and each list was written by a different hand. Between the list and the number lies a road full of traps.
How do you turn a great many names, written in many ways and spread across many pages, into statistics you can trust?
- The order of names and surnames changes
- A word can be a given name and a surname
- A school appears under several names
- The original contains errors
- Some years have incomplete information
- An update can fail halfway
- Automatic text can get things wrong
This article explains how Tamborradata deals with each of them, and also what it still cannot guarantee.
Three words and no labels
For a person, “Aitor Goikoetxea Lasa” holds no mystery: Aitor is the given name, and Goikoetxea and Lasa are the surnames. It is an invented name, only for the example.
- Aitorgiven name
- Goikoetxeasurname
- Lasasurname
For a program, though, they are three loose words. Nobody has told it which is which.
- Aitor?
- Goikoetxea?
- Lasa?
And this is the easy case. Some words work as both: Martin is a given name and it is a surname. Some lists reverse the order (“Goikoetxea Lasa, Aitor”). Some people have two given names, or a compound surname such as “de la Fuente”. Of the 12,466 different words that appear in the names, 1,611 (12.9%) have been seen as a given name and also as a surname.
Tamborradata does not use a dictionary of names. It solves this by counting. Each time it reads a full name, it notes the position of each word: the first counts as a given-name signal (and counts 3 times), the others as surname signals. After reading the 71,624 records, each word has its own track record, and that track record becomes a probability.
In technical terms, this is natural language processing (NLP): programs that interpret text written by people, here given names and surnames. And one of the simplest kinds: probabilistic, with no neural networks. If you want to call it artificial intelligence, it is a very small one: it learns from the data the system itself stores, but it is not a language model like ChatGPT, and its rules were set by a person.
Aitor almost always comes first: it is a given name. Goikoetxea has never appeared as a given name: it is always a surname. José comes almost always in first position or in the middle, which is why it works as a second given name. With Martin the story is different: it accumulates 1,611 points as a given name and 1,020 as a surname, and it appears in every position. It is in no man’s land, and the system knows it: to accept a middle word as a second given name, it requires the word’s record to support that clearly (65%). It was set at that value rather than at 50% precisely because of cases like Martin, which used to slip in as a second given name by mistake.
The system is also cautious with what it has seen little. A word that has appeared only once is not taken as certain: it starts from 50/50 and moves away from it only as it is repeated.
To decide the order it compares only the first and the last word: if “given name first, surname after” turns out to be clearly more likely than the opposite (with a fixed bar of 85%), it accepts it. The rest are simple rules: “de”, “del” or “la” attach to the next surname, and the form with a comma (“Goikoetxea Lasa, Aitor”) is turned around before starting.
The result, for each participant, is a small record stored in the database. This is how a name with two given names would look, “Aitor José Goikoetxea Lasa”, also invented.
Thanks to this separation, statistics that are impossible with a simple split of words can be calculated, such as the ranking of second names or the number of participants with a compound name. In the database there are 2,291 participants with two given names and 24 with three.
When there is no way to separate given name and surnames with confidence, the system does not guess. It marks the record as ambiguous and leaves it out of the name statistics. That is 279 of 71,624 records: 0.39%.
It learns in a very specific sense: its counting grows with the data the system itself stores. But its rules and thresholds do not change on their own, and records that have already been interpreted are not evaluated again when the counting improves.
One school, many names
Each list of the Children’s Tamborrada lives on a web page, and the school it belongs to is known only from two texts: the title of the page and its address. Those texts change from one year to the next. La Salle may appear as “La Salle”, “Lasalle” or “Salle”. If the system treated each form as a different school, La Salle’s history would be cut into pieces and the statistics by school would be worth nothing.
La Salle
12 forms- La Salle
- La Salle 1 Compania
- La Salle 2
- La Salle 2 Compania
- La Salle Compania 1
- La Salle Compania 2
- La Salle Ikastetxea
- Lasalle Compania
- Lasalle Compania 1
- Lasalle Compania 2
- Lasalle Ikastetxea
- Salle Ikastetxea
Karmelo
11 forms- Carmelo
- Colegio Carmelo Ikastetxea
- Colegio Nino Jesus
- El Carmelo
- Karmelo
- Karmelo Ikastetxea
- Nino Jesus De Praga Karmelo
- Scentia Karmelo
- Scentia Karmelo Ikastetxea
- Scientia Karmelo
- Scientia Karmelo Ikastetxea
Santo Tomas Lizeoa
7 forms- Santo Tomas Lizeoa
- Santo Tomas Lizeoa 2
- Santo Tomas Lizeoa 2 Compania
- Santo Tomas Lizeoa Compania
- Santo Tomas Lizeoa Compania 1
- Santo Tomas Lizeoa Compania 2
- Santo Tomas Lizeoa Ikastola
Orixe
2 forms- Orixe
- Orixe Ikastola
Tamborradata follows an order. First it cleans the text: it removes the words that do not tell one school from another (“colegio”, “ikastola”, “infantil”, “tamborrada”) and the company numbers, as in “compañía 2”. Then it looks the result up in a dictionary of known forms. If it does not find it, it compares by words, not by letters: it joins two names only if they share almost all their words. And if that does not work either, it registers a new school.
The important thing is that the dictionary grows on its own. Every page that is successfully recognised contributes all its forms, the one from the title and the one from the address, so next year’s page, even if it introduces a new name, is recognised if it keeps any form already known. In the database, forms as different as “Carmelo”, “Colegio Nino Jesus” and “Scientia Karmelo” are listed under the same school.
It has clear limits. It does not correct typos: “Arantzazuko” and “Arantzatzuko” are two different words to the system, and the typos in the dictionary got there because the other form of the same page did match. When in doubt, it creates a separate school instead of joining two different ones: that is why La Salle and San Luis La Salle, or Jesuitas and Jesuitinas, are different schools. And there is no human review step: if a merge goes wrong, it is only discovered by looking at the data.
In the database we work with there are 53 schools that gather 251 written forms. 49 of them have more than one form, up to 14 in the case with the most.
From an old page to a published statistic
With those two pieces we can follow the whole journey of a piece of data, from a page published years ago to the statistic you see on the website.
Find the pages
It looks for the lists in three ways at once: the newspaper’s own listing, a search engine and the internet’s historical archive. None is enough alone: newly published pages are not yet in the search engines or the archive, which is why the newspaper’s listing is the first to know.
Wait until there is something to read
The process runs every night from 15 to 22 January and does nothing until the newspaper has published a minimum number of lists: at least 20 pages, and half of those of the year, coming from its own listing.
Detect what has changed
It only looks again at the pages of the current year, and it does so by asking each one when it was last modified. If the date has not changed, it leaves the page as it is. It is a cheap check that relies on the date the page itself declares.
Read and filter
It discards what is not a person (titles, addresses, roles such as “abanderada” or “tambor”) using hand-written lists: about 280 role words and about 80 phrases, in Spanish and Basque. And it repairs names that the newspaper joined without a space, only when it is clear.
Recognise the school
It cleans the title and the address of the page and looks them up in the dictionary of forms.
Interpret each name
It separates given name and surnames by counting evidence. If there is no way to do it with confidence, the record is left as ambiguous.
Calculate the statistics
It recalculates only the years whose data have changed, from the names that were well interpreted.
Publish a complete version
The new version is prepared separately and the website switches to it all at once.
And there is a watchman that works once a week. It is called Canary and, like the canary in the mines, it fixes nothing: it warns. Every Monday it reads 25 already stored pages again (5 always the same and 20 chosen at random) and checks that the names that come out today are the same ones we stored. If the structure of the newspaper’s pages has changed and reading fails, or if the names differ on 3 pages or more (or on more than 10% of those checked), it sends a warning by email. It is meant for the months when nobody is looking, so that 20 January is not the first day anyone finds out something broke.
From thousands of rows to a ranking
With the names well interpreted, the system calculates 47 categories of statistics: the most common name, names that debut or disappear, the evolution of each school, among others. For the most common name it is enough to count how many times each first name appears among the well-interpreted records and sort them; if there is a tie, alphabetically, so that the result is always the same.
Some statistics depend on the whole history. A name is “new” only if it had not appeared in any earlier edition, and a school is “veteran” if it has taken part in almost all the recent editions. That is why, if a piece of data from 2013 is corrected, everything has to be recalculated from 2013 to today, and also the statistic for all the years together.
To avoid repeating work, each change in the data adds one to a counter for the affected year, and the system only recalculates the years whose counter does not match the one from the last publication. The others are not touched: their published version keeps being served. Those that change are recalculated in full, from scratch; they are not patched.
There are also deliberate gaps. The first edition has no “new names”, because everything would be new, and five editions of history are needed to talk about veteran schools. Of the 47 categories, a year publishes between 20 and 29 depending on the history available, and the set of all the years publishes 37. A missing category means “it cannot be calculated with confidence”; an empty category means “calculated, and there is nothing to count”.
So that it is never seen half done
Imagine that the system starts recalculating all the statistics and stops when only part of them is finished. If the website showed each result as it was calculated, a visitor would see new figures and old figures at the same time: today’s ranking of names next to last week’s list of schools.
The ranking of names is recalculated
PublishedThe list of schools is recalculated
PublishedThe calculation of the evolution by year fails
ErrorThe website shows new figures next to old figures
Half doneNobody knows which part of the page is from today and which from last week.
A new version is calculated, off to one side
Meanwhile, the previous version is still the only one visible.
It is checked that it is ready
That the calculation finished without errors and that the data have not changed in the meantime.
The website switches to the new version, all at once
PublishedIt is a single change. The previous version is archived; it is not deleted.
If something fails before that, nothing changes
No effectThe visitor keeps seeing the previous version, complete and consistent.
It is like printing a new edition of a book alongside the previous one and, when it is finished and checked, swapping the copy the library puts on the shelf. Nobody ever sees a half-printed book.
The check is more modest than it sounds. The system verifies that the calculation finished without errors and that the data did not change while it was being calculated (if they did, it rejects the publication). It does not compare the result with a list of what “should” be there, nor look for odd figures: integrity comes from the fact that any error stops the calculation.
And there is a second lock in the database itself: the website can only read the published version of each period, even if the website’s code failed.
A limit worth knowing: publication is done one period at a time, not for the whole site at once. If an old piece of data is corrected and several periods have to be recalculated, for a while the website may show some years already updated and others not yet. And if a calculation fails, the website keeps serving the previous version while it is retried on the next scheduled run.
In the database we work with there are 17 periods (16 editions and the set of all of them), each with a published version and none pending.
When the numbers also have to be explained
Calculating a number is not the same as making it understandable. That is why Tamborradata accompanies the statistics with short summaries written by a language model: this time, yes, a generative artificial intelligence, from a different family than the names system. It calculates nothing, it only writes. And here a new problem appears: it can confidently write something that is not accurate.
The model does not receive a spreadsheet. It requests each statistic through a tool, only those of its section, and the numbers reach it already written exactly as they must appear, so that it copies them instead of calculating them. The direction of a trend (up, down or steady) is decided by the program, not the model: it is considered steady if the change is below 5%.
There is a detail that avoids many problems: the model never writes the name of a school. It writes an internal reference, and it is the website that replaces it with the current name when someone opens the page. It is like a form letter (“Dear…”) in which the person writing it never sees the address book.
That has three practical advantages. The model cannot misspell a school’s name or mix it up with another. The translation keeps the reference intact (it is checked that they are the same and in the same order). And if a school’s name changes, the text is still valid, because the name is looked up at the moment it is displayed. If a reference cannot be resolved, that summary is not shown and the page keeps working without it.
The summaries are written first in English. The Spanish and Basque versions come from that already validated text.
It is worth knowing what is checked and what is not. The system verifies that the text does not repeat the year where it should not, that each reference points to a school that exists and that the translations keep the same references. It does not verify that each figure in the text matches the data, nor that the format is correct, nor that the translation respects proper names. Nor is there a human review step before they are published.
There are real examples of what that lack of control lets through: a summary from 2026 has an unclosed emphasis (the same in all three languages), and in one translation “Inigo” became “Íñigo”.
If the generation of a summary fails, it does not block the publication of the statistics: the page comes out without that text, and at the start of each run a repair process tries again those that failed.
In the database we work with there are 390 published summaries (130 per language), none failed or pending. In each language, 28 include references to schools: 66 references pointing to 18 different schools, all resolved.
How good are the data?
Everything above is controls. The honest question is what they say about the real quality of the data. This is what we can state with the database in front of us.
71,345 of 71,624 records: the system was able to separate the given name from the surnames.
The database holds no manual review, so we cannot give an accuracy, only a resolution rate.
It is best not to confuse them. A record being listed as “resolved” means the system found a possible separation, not that anyone has checked that it is the right one. And the “confidence” the system stores measures how far each word leans to one side, not the probability of being right.
The coverage has gaps too. There is no data for 2009 or 2010, and in 2021 there was no Tamborrada. The 2012 and 2022 lists include about 25 schools, compared with between 40 and 45 in the neighbouring editions: they are incomplete editions.
And not all public data is clean. Some things cannot be calculated because they come that way from the source, and there is no algorithm that detects them on its own. In the 2026 lists there are words such as “Lbai” or “Lrati”, which are probably typos of “Ibai” and “Irati”. To the system they are little-seen names, and it counts them as such.
There are 578 full names repeated within the same edition, always in different schools: 0.82% extra rows. We do not know whether they are namesakes, children signed up on two lists or duplicates from the source.
What does come out clean: the integrity checks we have run find no orphan rows, no schools without participants and no unexplained gaps in the published statistics.
Data quality does not mean promising perfection. It means knowing where the errors may be, putting controls where possible and saying clearly what cannot yet be guaranteed.
A list of names is not a statistic
Between a list of names and a statistic there is a long road: separating given names from surnames, recognising schools with many names, not recalculating what has not changed, not publishing half done and explaining the numbers without inventing them. None of those steps is perfect, and almost all of them have a limit worth knowing.
There is an idea that runs through the whole article: a list of participants is much more than a list. It contains names, years, schools… And that data serves two purposes at once. On one hand, it enriches the system itself: from the list, Tamborradata builds a probabilistic model that keeps accumulating evidence to interpret given names and surnames. On the other, that same list feeds the statistics that tell the story of those who have marched in the Children’s Tamborrada.
A reliable statistic is not one that is never wrong, but one that knows where it can be wrong.