Dall’ultimo post è passato un po’ di tempo, ma nel mentre un paio di progettini interessanti sono nati1
Fra una bozza di ricettario creato per organizzare alcune mie note ed il calcolo del baricentro della Sardegna (improvvisato rientrando dalle vacanze), girando su Wikipedia a leggere voci su cucine straniere mi sono chiesto:
Qual è la cucina più "famosa" del mondo (su Wikipedia)? 2 3
Posta così è una domanda vaga. Entrando nel dettaglio:
- Cucina: intendo cucina nazionale, quindi escludendo quelle regionali
- Famosa: è difficile quantificare quanto una pagina su Wikipedia sia “famosa”4. Ho usato come metro di giudizio la lunghezza della pagina in caratteri5
- Wikipedia: esistono ben 303 edizioni linguistiche di Wikipedia attive. La stessa pagina, lunghissima in una lingua, potrebbe essere solamente uno stub (un abbozzo) in un’altra
In parole povere, per ogni cucina nazionale ho misurato la lunghezza della pagina in ogni sua edizione linguistica, producendo grafici intuitivi e facili da consultare
Prima di parlare dell’aspetto tecnico vediamo direttamente i risultati! :)
(Ogni grafico è disponibile anche in versione interattiva, tramite l’apposito link. Ne è consigliata la visione da PC)
Heatmap (matrice di correlazione) delle cucine su Wikipedia
↬ Link alla versione interattiva ↫
Ci sono un sacco di cose da dire su questo grafico! Prima di spiegare come è stato realizzato, vediamo come leggerlo e cosa rappresenta!
- Ogni colonna rappresenta la cucina di uno stato6
- Ogni riga indica una lingua (in cui un’edizione di Wikipedia esiste)6
- Ogni cella corrisponde alla pagina di Wikipedia sulla cucina indicata dalla colonna, scritta nella lingua indicata dalla riga (la “cucina italiana in inglese” indica la voce sulla cucina italiana presente nella Wikipedia in lingua inglese)
- Il colore di ogni cella rappresenta la lunghezza della pagina (la barra colorata a destra è la legenda)
- I pallini bianchi in alcune celle evidenziano ciò che in una matrice di correlazione pura (1:1) sarebbe la diagonale: sono infatti le celle che rappresentano la pagina di una cucina di una certa nazione X scritta nella lingua ufficiale di X7
Si consideri una porzione di matrice (ottenuta ingrandendo la versione interattiva):
Alcune cose interessanti che si possono notare solo dal colore: la pagina sulla cucina italiana in coreano è decisamente lunga, così come la pagina sulla cucina israeliana in indonesiano!
Cucine famose inaspettate
Esplorando la matrice si possono trovare strane combinazioni e cucine inaspettatamente “note e ben documentate” in altre lingue. Ne elenco alcune:
- La pagina della cucina greca in greco (una cella sulla “diagonale”) è lunga circa 25000 caratteri (circa 7 fogli A4 stampati con font 12), ma la pagina sulla cucina tedesca in greco è lunga ben 93000 caratteri! Forse i greci adorano così tanto la cucina tedesca da non essere interessati alla loro?8
¯\_(ツ)_/¯
- La pagina sulla cucina olandese in polacco è estremamente lunga (130000 caratteri)!
- La pagina sulla cucina statunitense in francese (218000 caratteri) è lunga il triplo della pagina sulla cucina francese in francese (70000 caratteri)!
Osservazioni e disclaimer
- È superfluo dire che la lunghezza di una pagina su Wikipedia non rappresenta il sentimento di un’intera nazione nei confronti di una cucina straniera. Quest’analisi è chiaramente circoscritta a Wikipedia. Ci sono inoltre alcuni fattori da tenere in considerazione:
- Alcune edizioni di Wikipedia sono più attive di altre ed hanno mediamente articoli più lunghi
- Alcune delle voci analizzate contengono solamente elenchi di piatti tipici, casi rappresentativi di come la lunghezza non sia un metro di giudizio così efficace
- Raffinando ulteriormente questa analisi, il numero di caratteri potrebbero essere normalizzati sulla lunghezza media di una voce per ogni specifica edizione di Wikipedia. Tuttavia, per avere “a colpo d’occhio” un’idea di “quanto è lunga la voce di una determinata cucina”, ritengo la normalizzazione superflua e la lascio implementare a chi fosse curioso od interessato
- Le cucine nazionali totali9 sono 167, mentre i linguaggi sono 11910. La matrice presentata sopra è una versione filtrata (53×36)11. La matrice di correlazione intera è esteticamente interessante ma non molto leggibile. Per chi fosse curioso, la matrice completa (167×119) è le seguente:
↬ Link alla versione interattiva (con assi etichettati) ↫12
Statistiche e podio 🏆
Le statistiche presentate di seguito sono state calcolate utilizzando la versione completa del dataset, senza escludere voci o linguaggi nazionali (lingue regionali e dialetti locali sono stati ignorati)13
Le cucine più “famose” del mondo (somma su tutte le lingue)
↬ Link alla versione interattiva ↫
Sommando per ogni cucina la lunghezza delle pagine in tutte le lingue considerate, si ottiene la seguente classifica:
Cucina | Lunghezza | |
---|---|---|
1 🥇 | 🇮🇹 Italiana | 1263679 |
2 🥈 | 🇩🇪 Tedesca | 1016720 |
3 🥉 | 🇯🇵 Giapponese | 981386 |
4 | 🇰🇷 Coreana | 912384 |
5 | 🇺🇸 Americana | 893520 |
6 | 🇫🇷 Francese | 874603 |
7 | 🇮🇩 Indonesiana | 832875 |
8 | 🇷🇺 Russa | 793379 |
9 | 🇮🇳 Indiana | 778534 |
10 | 🇳🇱 Olandese | 681041 |
Al primo posto, la cucina italiana, con un totale complessivo di 1,26 milioni di caratteri!
Le pagine più lunghe (indipendentemente dalla lingua)
La top 10 delle cucine più lunghe in assoluto (su tutte le edizioni di Wikipedia considerate) è la seguente:
Cucina e lingua | Titolo in lingua originale | Lunghezza | |
---|---|---|---|
1 🥇 | 🇷🇺 Russa in polacco | Kuchnia rosyjska | 363864 |
2 🥈 | 🇩🇪 Tedesca in russo | Немецкая кухня | 279328 |
3 🥉 | 🇦🇷 Argentina in italiano | Cucina argentina | 227606 |
4 | 🇺🇸 Americana in francese | Cuisine des États-Unis | 218192 |
5 | 🇺🇸 Americana in giapponese | アメリカ料理 | 190920 |
6 | 🇺🇸 Americana in inglese | American cuisine | 181443 |
7 | 🇮🇩 Indonesiana in russo | Индонезийская кухня | 175120 |
8 | 🇲🇾 Malese in inglese | Malaysian cuisine | 162794 |
9 | 🇮🇹 Italiana in kannada | ಇಟ್ಯಾಲಿಯನ್ ಪಾಕಪದ್ಧತಿ | 152911 |
10 | 🇦🇷 Argentina in spagnolo | Gastronomía de Argentina | 140174 |
Al primo posto, la cucina nazionale più lunga in assoluto: la pagina sulla cucina russa (scritta in polacco) con ben 363864 caratteri!
Curiosità sul 9° posto
Non conoscevo l’esistenza della lingua kannada (una lingua parlata nel sud dell’India) ma a quanto pare sono molto interessati alla cucina italiana (ಇಟ್ಯಾಲಿಯನ್ ಪಾಕಪದ್ಧತಿ). Trovo stupendo leggere una pagina scritta in un alfabeto completamente diverso dal nostro e trovare immagini di caffettiere, focacce e tiramisù:
Mi fanno notare che la parte sul bicerin di Torino sembra intraducibile (“penso esista una parola per dire latte in Kannada”). Ma le traduzioni incomplete ci sono un po’ ovunque su Wikipedia, nulla di troppo strano! :)
Le lingue con più voci di cucina
↬ Link alla versione interattiva ↫
Nessuna sorpresa, l’edizione linguistica di Wikipedia con più voci di cucina è la Wikipedia in lingua inglese 🇬🇧
Com’è stata fatta questa analisi?
Per evitare una lunga digressione sull’implementazione, citerò le librerie utilizzate e riassumerò a grandi linee il processo di raccolta ed analisi dati, rimandando direttamente chi è interessato ad approfondire alla repository del progetto su GitHub
Librerie utilizzate
L’intero progetto è stato sviluppato in Python. Le principali librerie utilizzate (gestite con Poetry) sono le seguenti:
Libreria | PyPi link | Descrizione |
---|---|---|
beautifulsoup4 |
🔗 | Manipolazione a basso livello di pagine HTML14 |
pandas |
🔗 | Insostituibile, per salvataggio ed analisi dati |
emoji |
🔗 | Per inserire emoji, utilizzata per le bandiere nazionali |
plotly |
🔗 | Un’ottima libreria grafica per creare visualizzazioni15 |
Download ed elaborazione dei dati
Ci sono 4 step di preparazione dei dati. Ad ogni step la stessa struttura dati viene arricchita con sempre più informazioni.
Le funzioni (che corrispondono agli step) sono le seguenti:
-
step1_prepare_cuisines_data
L’elenco di “tutte le possibili cucine” viene ottenuto a partire da questo template della Wikipedia inglese. I redirect vengono ignorati e solamente le cucine nazionali vengono considerate. Insieme alle cucine vengono salvati anche gli ID che identificano le singole pagine su Wikipedia -
step2_populate_other_languages
Per ogni cucina nell’elenco vengono identificate le traduzioni in altre lingue (diverse dall’inglese) della pagina in questione. Titoli ed URL vengono salvati -
step3_fill_lengths
Tramite delle chiamate alle varie API, si ottengono le lunghezze di ogni pagina da analizzare -
step4_preprocess_data_frame
La struttura viene convertita da dizionario apandas.DataFrame
. In questo step viene effettuato un filtraggio per ridurre la quantità dei dati, che vengono infine salvati in due versioni:table_dataframe.dat
(versione ridotta) etable_dataframe_full.dat
(versione completa, per il calcolo delle statistiche assolute)
Visualizzazione e grafici
Un ultimo step (step5_create_plots
, in visualization.py
) utilizza le strutture dati ottenute in precedenza per creare grafici, tabelle e statistiche che vengono salvate in immagini, HTML e Markdown
Conclusioni
Quest’analisi è stata effettuata just for fun, per curiosità e per fare qualcosa di nuovo. Detto ciò, sono soddisfatto del risultato ottenuto! È molto interessante cercare strane correlazioni nella heatmap e scoprire cucine e lingue che non conoscevo!
Se trovate qualcosa di curioso o volete provare a creare statistiche simili con una categoria differente di Wikipedia, fatemelo sapere o provate direttamente voi (il codice è come sempre open-source (repository su GitHub) e rilasciato con licenza MIT)
Cose (ancora) da fare
Da quando ho iniziato la stesura di quest’articolo ho pensato ad alcuni miglioramenti da fare e a nuovi grafici da produrre. Sono soddisfatto dello stato attuale, ma vorrei implementare in futuro (in ordine di importanza):
- Automatizzare il processo di analisi/pubblicazione dei grafici16. Le voci su Wikipedia cambiano decisamente spesso, quest’analisi potrebbe già essere obsoleta nel giro di qualche mese17
- Aggiungere statistiche che evidenzino le cucine più famose per ogni lingua, escludendo le celle diagonali
- Provare a normalizzare le lunghezze in modo da “far spiccare” le pagine in relazione alla lunghezza media di ogni edizione di Wikipedia
- Considerare anche linguaggi locali, magari provare a creare una versione dedicata ai dialetti italiani18
Grazie per l’attenzione, alla prossima! :)
-
Restringere il campo a Wikipedia semplifica di molto il lavoro! ↩
-
Dovendo indovinare, avevo già un’idea della risposta, ma non potevo dimostrarlo (non ancora, almeno) ↩
-
Un posto che raccoglie voci notevoli è la vetrina, ma è solamente un’indicazione binaria ↩
-
Come spiegato più avanti, so che la lunghezza di una pagina non è un’indicazione certa di quanto una voce sia “famosa”. Inoltre mi è stato fatto notare che diversi linguaggi hanno diversa densità di informazione ↩
-
Ok, lo so, mancano un sacco di nazioni ed un sacco di lingue, più avanti spiego perché ↩ ↩2
-
Si noti infatti che su alcune righe compaiono più pallini, ad indicare tutti gli stati in cui quella lingua è la più parlata. A questo proposito: in alcuni stati vengono parlate più lingue (Svizzera, Lussemburgo, Belgio…), quindi si dovrebbero vedere colonne con più pallini. Quest’ulteriore livello di dettaglio non è (ancora) implementato ↩
-
Un mio carissimo amico (che adora la cucina greca) ha commentato: “c’è veramente poco da dire sulla loro cucina, è riassumibile in: feta, moussaka, gyros, i cosi con la vite, olive. Stop.” ↩
-
Ovvero tutte le cucine nazionali che sono presenti anche sulla Wikipedia in inglese ↩
-
Ovvero tutti i linguaggi che hanno almeno una voce che parla di una delle cucine nazionali considerate ↩
-
Ho ignorato le voci più corte di 4000 caratteri, le cucine che compaiono in meno di 13 lingue, i linguaggi con meno di 14 pagine riguardanti cucine nazionali e tutte le edizioni di Wikipedia nei vari dialetti locali ↩
-
La versione interattiva ha sull’asse dei linguaggi alcuni prefissi di lingue non convertiti in linguaggi estesi. È comunque interessante da vedere! ↩
-
Statistiche e grafici basate sulla situazione al 04/10/2020 ↩
-
Inizialmente contavo di fare quasi tutto con la libreria
wikipedia
(🔗), ma allo stato attuale è incompleta e non molto ottimizzata. Per questo ho ripiegato sull’approccio di basso livello usandobeautifulsoup
↩ -
Diciamocelo,
matplotlib
è un po’ una zavorra, ci sono alternative comeplotly
che sono leggere e rendono facile produrre visualizzazioni interattive. Devo ancora provareseaborn
(sito web), ho letto belle cose ↩ -
Magari provando ad utilizzare direttamente GitHub Actions (non so quanto sia fattibile, ma volevo metterci mano prima o poi) ↩
-
Da quando ho iniziato a scrivere questo post c’è già stato un sorpasso nella classifica delle cucine: la cucina tedesca ha sorpassato quella giapponese, passando al secondo posto, in seguito ad un massiccio ampliamento della voce sulla cucina tedesca in russo a fine settembre ↩
-
Anche se le edizioni di Wikipedia nei vari dialetti sono abbastanza scarne, non penso abbiano moltissime informazioni sulle cucine delle altre regioni ↩