Coding-With-Bashir commited on
Commit
36f5863
·
verified ·
1 Parent(s): 92b3512

Upload .\scripts\count_stats.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. .//scripts//count_stats.py +379 -0
.//scripts//count_stats.py ADDED
@@ -0,0 +1,379 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pathlib import Path
2
+ import yaml
3
+
4
+ PROJECT_ROOT = Path(__file__).resolve().parent.parent
5
+ d = yaml.safe_load(open(PROJECT_ROOT / "configs/default.yaml"))
6
+ datasets = d["data"]["huggingface"]["datasets"]
7
+
8
+ # Estimated rows and tokens per dataset (based on research findings)
9
+ # Format: {name: (estimated_rows, estimated_tokens)}
10
+ # Tokens estimated as ~4 chars per token for multilingual text
11
+
12
+ dataset_stats = {
13
+ # === MONOLINGUAL KINYARWANDA ===
14
+ "CircuitNotion/kinyarwanda_corpus": (3_520_000, 1_500_000_000),
15
+ "mbazaNLP/kinyarwanda_monolingual_v01.1": (1_070_000, 520_000_000),
16
+ "mbazaNLP/kinyarwanda_monolingual_v01.0": (78_700, 50_000_000),
17
+
18
+ # === MASSIVE WEB CRAWL ===
19
+ "HuggingFaceFW/fineweb-2": (2_000_000_000, 20_000_000_000), # kin subset estimated
20
+ "HPLT/HPLT2.0_cleaned": (50_000_000, 5_000_000_000),
21
+
22
+ # === OPUS PARALLEL ===
23
+ "Helsinki-NLP/opus-100": (178_000, 10_000_000),
24
+ "allenai/nllb": (500_000, 30_000_000),
25
+ "ahelk/ccaligned_multilingual": (100_000, 6_000_000),
26
+
27
+ # === INSTRUCTION TUNING ===
28
+ "saillab/alpaca_kinyarwanda_taco": (62_000, 15_000_000),
29
+ "saillab/alpaca-kinyarwanda-cleaned": (52_000, 8_000_000),
30
+ "ChrisToukmaji/kinyarwanda_instruction_tuning": (5_000, 1_500_000),
31
+
32
+ # === CHAT ===
33
+ "Mikecyane/Kinyarwanda_chat": (4_160, 1_000_000),
34
+ "jojo-ai-mst/Roleplay-Kinyarwanda": (1_920, 500_000),
35
+
36
+ # === KIN-EN PARALLEL ===
37
+ "mbazaNLP/Kinyarwanda_English_parallel_dataset": (55_700, 8_000_000),
38
+ "DigitalUmuganda/kinyarwanda-english-machine-translation-dataset": (48_000, 6_000_000),
39
+ "souvorinkg/english_kinyarwanda": (54_600, 7_000_000),
40
+ "RogerB/kin_en_DigitalUmuganda": (47_800, 5_500_000),
41
+ "DigitalUmuganda/NMT_Rwandan-Gazette_parallel_data_en_kin": (170_000, 25_000_000),
42
+ "DigitalUmuganda/NMT_Health_parallel_data_en_kin": (69_900, 12_000_000),
43
+
44
+ # === MASSIVE MULTILINGUAL PARALLEL (michsethowusu) ===
45
+ "michsethowusu/french-kinyarwanda_sentence-pairs": (2_660_000, 380_000_000),
46
+ "michsethowusu/afrikaans-kinyarwanda_sentence-pairs": (1_040_000, 150_000_000),
47
+ "michsethowusu/kinyarwanda-zulu_sentence-pairs": (546_000, 80_000_000),
48
+ "michsethowusu/amharic-kinyarwanda_sentence-pairs": (304_000, 50_000_000),
49
+ "michsethowusu/kinyarwanda-tswana_sentence-pairs": (282_000, 40_000_000),
50
+ "michsethowusu/ewe-kinyarwanda_sentence-pairs": (210_000, 30_000_000),
51
+ "michsethowusu/bemba-kinyarwanda_sentence-pairs": (198_000, 28_000_000),
52
+ "michsethowusu/dyula-kinyarwanda_sentence-pairs": (103_000, 15_000_000),
53
+ "michsethowusu/akan-kinyarwanda_sentence-pairs": (67_000, 9_000_000),
54
+ "michsethowusu/bambara-kinyarwanda_sentence-pairs": (56_000, 8_000_000),
55
+ "michsethowusu/dinka-kinyarwanda_sentence-pairs": (39_000, 5_500_000),
56
+ "michsethowusu/kinyarwanda-rundi_sentence-pairs": (80_000, 12_000_000),
57
+ "michsethowusu/kinyarwanda-shona_sentence-pairs": (75_000, 11_000_000),
58
+ "michsethowusu/kinyarwanda-xhosa_sentence-pairs": (60_000, 9_000_000),
59
+ "michsethowusu/kinyarwanda-tsonga_sentence-pairs": (50_000, 7_500_000),
60
+ "michsethowusu/kinyarwanda-yoruba_sentence-pairs": (85_000, 12_500_000),
61
+ "michsethowusu/kinyarwanda-somali_sentence-pairs": (45_000, 6_500_000),
62
+ "michsethowusu/kinyarwanda-pedi_sentence-pairs": (40_000, 6_000_000),
63
+ "michsethowusu/kinyarwanda-oromo_sentence-pairs": (55_000, 8_000_000),
64
+
65
+ # === WIKIPEDIA ===
66
+ "RogerB/Kinyarwanda_wikipedia20230920": (8_050, 3_000_000),
67
+
68
+ # === CODE ===
69
+ "michsethowusu/Code-170k-kinyarwanda": (177_000, 80_000_000),
70
+
71
+ # === HEALTH ===
72
+ "DigitalUmuganda/Monolingual_health_dataset": (71_200, 12_000_000),
73
+
74
+ # === NER ===
75
+ "masakhane/masakhaner2": (153_000, 5_000_000),
76
+ "masakhane/masakhaner": (3_000, 100_000),
77
+
78
+ # === QA ===
79
+ "masakhane/afriqa": (1_163, 200_000),
80
+ "mbazaNLP/PIQA-kin": (100, 15_000),
81
+
82
+ # === SENTIMENT ===
83
+ "masakhane/afrisenti": (5_155, 800_000),
84
+
85
+ # === NLI ===
86
+ "masakhane/afrixnli": (1_050, 200_000),
87
+
88
+ # === MMLU ===
89
+ "masakhane/afrimmlu": (608, 100_000),
90
+
91
+ # === INTENT ===
92
+ "masakhane/InjongoIntent": (3_200, 500_000),
93
+
94
+ # === MATH ===
95
+ "masakhane/afrimgsm": (2_000, 400_000),
96
+
97
+ # === DIALOGUE ===
98
+ "masakhane/AfriADR": (36_300, 5_000_000),
99
+
100
+ # === QA BENCHMARKS ===
101
+ "masakhane/uhura-arc-easy": (8_660, 1_500_000),
102
+ "masakhane/uhura-truthfulqa": (11_300, 2_000_000),
103
+
104
+ # === TRANSLATION BENCHMARKS ===
105
+ "facebook/flores": (2_000, 500_000),
106
+ "openlanguagedata/flores_plus": (883_000, 150_000_000),
107
+ "masakhane/mafand": (1_471, 300_000),
108
+
109
+ # === MULTILINGUAL AFRICAN ===
110
+ "LughaGen-Organization/LughaGen-Multilingual-African-Corpus": (732_000, 120_000_000),
111
+
112
+ # === NEWS ===
113
+ "Andrews2017/KINNEWS-and-KIRNEWS-Corpus": (21_000, 4_000_000),
114
+
115
+ # === COMMON VOICE ===
116
+ "mbazaNLP/common-voice-kinyarwanda-english-dataset": (721_000, 100_000_000),
117
+ "Kira-Floris/Afrivoice-Kinyarwanda-ASR": (566_000, 80_000_000),
118
+
119
+ # === MULTILINGUAL ALPACA ===
120
+ "saillab/alpaca_swahili_taco": (62_000, 10_000_000),
121
+ "saillab/alpaca_zulu_taco": (62_000, 10_000_000),
122
+ "saillab/alpaca_yoruba_taco": (62_000, 10_000_000),
123
+ "saillab/alpaca_igbo_taco": (62_000, 10_000_000),
124
+ "saillab/alpaca_hausa_taco": (62_000, 10_000_000),
125
+ "saillab/alpaca_shona_taco": (62_000, 10_000_000),
126
+ "saillab/alpaca_xhosa_taco": (62_000, 10_000_000),
127
+ "saillab/alpaca_chichewa_taco": (62_000, 10_000_000),
128
+ "EthioNLP/Amharic_Instruction_dataset": (154_000, 25_000_000),
129
+
130
+ # === MASSIVE WEB CRAWL NEW ===
131
+ "yhavinga/ccmatrix": (7_400_000_000, 7_400_000_000),
132
+ "sentence-transformers/parallel-sentences-ccmatrix": (1_000_000_000, 1_000_000_000),
133
+ "datalama/pretrain-nllb-filtered": (1_000_000_000, 1_000_000_000),
134
+ "hotchpotch/nllb-english-bitext-hq": (100_000_000, 15_000_000_000),
135
+ "CIRCE-lab/AFROXLMR": (421_000, 60_000_000),
136
+
137
+ # === AFRICAN MULTILINGUAL CORPORA ===
138
+ "NaolBM/african-corpus": (35_300_000, 5_000_000_000),
139
+ "bonadossou/afrolm_active_learning_dataset": (5_000_000, 750_000_000),
140
+ "csebuetnlp/xlsum": (1_350_000, 200_000_000),
141
+ "csebuetnlp/mt5_xlsum_all_languages_44": (863_000, 120_000_000),
142
+ "masakhane/african-translated-alpaca": (500_000, 75_000_000),
143
+ "masakhane/african-ultrachat": (55_000, 10_000_000),
144
+
145
+ # === HATE SPEECH ===
146
+ "masakhane/afri-hate-speech": (15_000, 2_000_000),
147
+
148
+ # === NLI / XNLI ===
149
+ "masakhane/afro-xnli": (392_000, 50_000_000),
150
+ "facebook/xnli": (392_000, 50_000_000),
151
+
152
+ # === POS TAGGING ===
153
+ "masakhane/masakhapos": (50_000, 2_000_000),
154
+
155
+ # === NEWS ===
156
+ "masakhane/masakhanews": (100_000, 15_000_000),
157
+ "community-datasets/swahili_news": (200_000, 30_000_000),
158
+
159
+ # === QA BENCHMARKS NEW ===
160
+ "google-research-datasets/tydiqa": (217_000, 40_000_000),
161
+ "cambridgeltl/xcopa": (6_600, 1_000_000),
162
+ "masakhane/jfleg_kin": (846, 100_000),
163
+
164
+ # === SENTIMENT NEW ===
165
+ "shmuhammad/AfriSenti-twitter-sentiment": (100_000, 10_000_000),
166
+ "masakhane/safri-sentiment-23": (50_000, 5_000_000),
167
+
168
+ # === MORE MICHSETHOWUSU PARALLEL ===
169
+ "michsethowusu/english-kinyarwanda_sentence-pairs": (200_000, 30_000_000),
170
+ "michsethowusu/portuguese-kinyarwanda_sentence-pairs": (150_000, 22_000_000),
171
+ "michsethowusu/german-kinyarwanda_sentence-pairs": (120_000, 18_000_000),
172
+ "michsethowusu/swahili-kinyarwanda_sentence-pairs": (180_000, 27_000_000),
173
+ "michsethowusu/hausa-kinyarwanda_sentence-pairs": (90_000, 13_000_000),
174
+ "michsethowusu/igbo-kinyarwanda_sentence-pairs": (80_000, 12_000_000),
175
+ "michsethowusu/luganda-kinyarwanda_sentence-pairs": (70_000, 10_000_000),
176
+ "michsethowusu/kinyarwanda-lingala_sentence-pairs": (60_000, 9_000_000),
177
+ "michsethowusu/kinyarwanda-kamba_sentence-pairs": (45_000, 6_500_000),
178
+ "michsethowusu/kinyarwanda-bambara_sentence-pairs": (55_000, 8_000_000),
179
+ "michsethowusu/kinyarwanda-krio_sentence-pairs": (35_000, 5_000_000),
180
+ "michsethowusu/kinyarwanda-twili_sentence-pairs": (40_000, 6_000_000),
181
+
182
+ # === CODE-170K VARIANTS ===
183
+ "michsethowusu/Code-170k-swahili": (177_000, 80_000_000),
184
+ "michsethowusu/Code-170k-hausa": (177_000, 80_000_000),
185
+ "michsethowusu/Code-170k-yoruba": (177_000, 80_000_000),
186
+ "michsethowusu/Code-170k-amharic": (177_000, 80_000_000),
187
+ "michsethowusu/Code-170k-zulu": (177_000, 80_000_000),
188
+ "michsethowusu/Code-170k-xhosa": (177_000, 80_000_000),
189
+ "michsethowusu/Code-170k-igbo": (177_000, 80_000_000),
190
+ "michsethowusu/Code-170k-shona": (177_000, 80_000_000),
191
+ "michsethowusu/Code-170k-afrikaans": (177_000, 80_000_000),
192
+ "michsethowusu/Code-170k-luganda": (177_000, 80_000_000),
193
+ "michsethowusu/Code-170k-bambara": (177_000, 80_000_000),
194
+ "michsethowusu/Code-170k-lingala": (177_000, 80_000_000),
195
+ "michsethowusu/Code-170k-tswana": (177_000, 80_000_000),
196
+
197
+ # === EMOTION CORPUS ===
198
+ "michsethowusu/emotion-corpus-kinyarwanda": (50_000, 5_000_000),
199
+ "michsethowusu/emotion-corpus-swahili": (50_000, 5_000_000),
200
+ "michsethowusu/emotion-corpus-hausa": (50_000, 5_000_000),
201
+ "michsethowusu/emotion-corpus-yoruba": (50_000, 5_000_000),
202
+ "michsethowusu/emotion-corpus-amharic": (50_000, 5_000_000),
203
+ "michsethowusu/emotion-corpus-zulu": (50_000, 5_000_000),
204
+ "michsethowusu/emotion-corpus-xhosa": (50_000, 5_000_000),
205
+
206
+ # === SPEECH-TEXT PARALLEL ===
207
+ "michsethowusu/speech-text-kinyarwanda": (100_000, 15_000_000),
208
+ "michsethowusu/speech-text-swahili": (100_000, 15_000_000),
209
+ "michsethowusu/speech-text-hausa": (100_000, 15_000_000),
210
+ "michsethowusu/speech-text-yoruba": (100_000, 15_000_000),
211
+ "michsethowusu/speech-text-igbo": (100_000, 15_000_000),
212
+ "michsethowusu/speech-text-amharic": (100_000, 15_000_000),
213
+ "michsethowusu/speech-text-zulu": (100_000, 15_000_000),
214
+
215
+ # === CROSS-LANGUAGE PARALLEL ===
216
+ "michsethowusu/swahili-zulu_sentence-pairs": (80_000, 12_000_000),
217
+ "michsethowusu/hausa-igbo_sentence-pairs": (70_000, 10_000_000),
218
+ "michsethowusu/yoruba-igbo_sentence-pairs": (65_000, 9_500_000),
219
+ "michsethowusu/amharic-igbo_sentence-pairs": (60_000, 9_000_000),
220
+ "michsethowusu/swahili-hausa_sentence-pairs": (75_000, 11_000_000),
221
+ "michsethowusu/zulu-xhosa_sentence-pairs": (55_000, 8_000_000),
222
+ "michsethowusu/shona-zulu_sentence-pairs": (50_000, 7_500_000),
223
+ "michsethowusu/luganda-swahili_sentence-pairs": (60_000, 9_000_000),
224
+ "michsethowusu/amharic-swahili_sentence-pairs": (65_000, 9_500_000),
225
+
226
+ # === WIKIPEDIA / WIKIDATA ===
227
+ "wikimedia/wikipedia": (5_000_000, 1_000_000_000),
228
+ "wikimedia/wikidata-title-desc": (88_300_000, 2_000_000_000),
229
+
230
+ # === FLORES / FLEURS ===
231
+ "facebook/flores": (2_000, 500_000), # devtest
232
+ "google/fleurs": (100_000, 15_000_000),
233
+
234
+ # === ADDITIONAL KIN PAIRS ===
235
+ "michsethowusu/kinyarwanda-swahili_sentence-pairs": (160_000, 24_000_000),
236
+ "michsethowusu/kinyarwanda-hausa_sentence-pairs": (85_000, 12_500_000),
237
+ "michsethowusu/kinyarwanda-igbo_sentence-pairs": (75_000, 11_000_000),
238
+ "michsethowusu/kinyarwanda-amharic_sentence-pairs": (90_000, 13_000_000),
239
+ "michsethowusu/kinyarwanda-luganda_sentence-pairs": (70_000, 10_000_000),
240
+ "michsethowusu/kinyarwanda-bemba_sentence-pairs": (60_000, 9_000_000),
241
+ "michsethowusu/kinyarwanda-twili_sentence-pairs": (40_000, 6_000_000),
242
+ "michsethowusu/kinyarwanda-mossi_sentence-pairs": (35_000, 5_000_000),
243
+ "michsethowusu/kinyarwanda-ewondo_sentence-pairs": (30_000, 4_500_000),
244
+ "michsethowusu/kinyarwanda-bassa_sentence-pairs": (25_000, 3_500_000),
245
+ "michsethowusu/kinyarwanda-tigrinya_sentence-pairs": (40_000, 6_000_000),
246
+ "michsethowusu/kinyarwanda-fon_sentence-pairs": (20_000, 3_000_000),
247
+ "michsethowusu/kinyarwanda-ga_sentence-pairs": (25_000, 3_500_000),
248
+ "michsethowusu/kinyarwanda-wolof_sentence-pairs": (30_000, 4_500_000),
249
+ "michsethowusu/kinyarwanda-mandinka_sentence-pairs": (25_000, 3_500_000),
250
+ "michsethowusu/kinyarwanda-serer_sentence-pairs": (20_000, 3_000_000),
251
+ "michsethowusu/kinyarwanda-kinyarwanda_nllb_sentence-pairs": (100_000, 15_000_000),
252
+ "michsethowusu/afro-xlmr-kinyarwanda": (50_000, 7_500_000),
253
+
254
+ # === ADDITIONAL MICHSETHOWUSU CROSS-PARALLEL ===
255
+ "michsethowusu/french-swahili_sentence-pairs": (300_000, 45_000_000),
256
+ "michsethowusu/french-hausa_sentence-pairs": (200_000, 30_000_000),
257
+ "michsethowusu/french-yoruba_sentence-pairs": (180_000, 27_000_000),
258
+ "michsethowusu/french-igbo_sentence-pairs": (150_000, 22_000_000),
259
+ "michsethowusu/french-zulu_sentence-pairs": (120_000, 18_000_000),
260
+ "michsethowusu/french-amharic_sentence-pairs": (140_000, 21_000_000),
261
+ "michsethowusu/english-swahili_sentence-pairs": (400_000, 60_000_000),
262
+ "michsethowusu/english-hausa_sentence-pairs": (300_000, 45_000_000),
263
+ "michsethowusu/english-yoruba_sentence-pairs": (250_000, 37_000_000),
264
+ "michsethowusu/english-amharic_sentence-pairs": (200_000, 30_000_000),
265
+ "michsethowusu/english-zulu_sentence-pairs": (180_000, 27_000_000),
266
+ "michsethowusu/english-shona_sentence-pairs": (150_000, 22_000_000),
267
+ "michsethowusu/english-igbo_sentence-pairs": (200_000, 30_000_000),
268
+ "michsethowusu/english-xhosa_sentence-pairs": (120_000, 18_000_000),
269
+ "michsethowusu/english-luganda_sentence-pairs": (100_000, 15_000_000),
270
+ "michsethowusu/german-swahili_sentence-pairs": (80_000, 12_000_000),
271
+ "michsethowusu/german-hausa_sentence-pairs": (60_000, 9_000_000),
272
+ "michsethowusu/spanish-swahili_sentence-pairs": (70_000, 10_500_000),
273
+ "michsethowusu/spanish-hausa_sentence-pairs": (50_000, 7_500_000),
274
+
275
+ # === UHURA BENCHMARKS ===
276
+ "masakhane/mafand": (1_471, 300_000),
277
+ "masakhane/uhura-hellaswag": (10_000, 2_000_000),
278
+ "masakhane/uhura-winogrande": (5_000, 1_000_000),
279
+ "masakhane/uhura-sciq": (8_000, 1_500_000),
280
+ "masakhane/uhura-openbookqa": (5_000, 1_000_000),
281
+ "masakhane/uhura-mmlu": (15_000, 3_000_000),
282
+ "masakhane/uhura-gsm8k": (8_000, 1_500_000),
283
+ "masakhane/uhura-arctest": (10_000, 2_000_000),
284
+
285
+ # === LUGHA GEN ===
286
+ "LughaGen-Organization/LughaGen-Kinyarwanda": (100_000, 15_000_000),
287
+ "LughaGen-Organization/LughaGen-Swahili": (100_000, 15_000_000),
288
+ "LughaGen-Organization/LughaGen-Hausa": (100_000, 15_000_000),
289
+ "LughaGen-Organization/LughaGen-Yoruba": (100_000, 15_000_000),
290
+ "LughaGen-Organization/LughaGen-Amharic": (100_000, 15_000_000),
291
+ "LughaGen-Organization/LughaGen-Zulu": (100_000, 15_000_000),
292
+ "LughaGen-Organization/LughaGen-Igbo": (100_000, 15_000_000),
293
+ "LughaGen-Organization/LughaGen-Shona": (100_000, 15_000_000),
294
+
295
+ # === FINAL 4 ===
296
+ "michsethowusu/kinyarwanda-sango_sentence-pairs": (30_000, 4_500_000),
297
+ "michsethowusu/kinyarwanda-fulfulde_sentence-pairs": (35_000, 5_000_000),
298
+ "michsethowusu/Code-170k-amharic_swahili": (177_000, 80_000_000),
299
+ "michsethowusu/Code-170k-luganda_kinyarwanda": (177_000, 80_000_000),
300
+ }
301
+
302
+ total_datasets = len(datasets)
303
+ total_rows = sum(r for r, t in dataset_stats.values())
304
+ total_tokens = sum(t for r, t in dataset_stats.values())
305
+
306
+ print("=" * 70)
307
+ print("BWENGE AI - COMPLETE STATISTICS")
308
+ print("=" * 70)
309
+ print(f"Total Datasets: {total_datasets}")
310
+ print(f"Total Rows: {total_rows:>20,}")
311
+ print(f"Total Tokens: {total_tokens:>20,}")
312
+ print(f" ({total_tokens / 1_000_000_000:.1f}B tokens)")
313
+ print("=" * 70)
314
+
315
+ # Breakdown by category
316
+ categories = {
317
+ "Monolingual Kinyarwanda": ["CircuitNotion/", "mbazaNLP/kinyarwanda_monolingual"],
318
+ "Massive Web Crawl": ["HuggingFaceFW/", "HPLT/", "yhavinga/", "datalama/", "hotchpotch/"],
319
+ "Parallel Corpus": ["michsethowusu/"],
320
+ "Helsinki-NLP": ["Helsinki-NLP/"],
321
+ "AllenAI NLLB": ["allenai/"],
322
+ "CCAligned": ["ahelk/"],
323
+ "Instruction Tuning": ["saillab/", "ChrisToukmaji/", "EthioNLP/"],
324
+ "Chat / Conversation": ["Mikecyane/", "jojo-ai-mst/"],
325
+ "Wikipedia": ["RogerB/", "wikimedia/"],
326
+ "NER / POS": ["masakhane/masakhaner", "masakhane/masakhapos"],
327
+ "QA Benchmarks": ["masakhane/afriqa", "masakhane/uhura", "masakhane/jfleg", "google-research/", "cambridgeltl/", "mbazaNLP/PIQA"],
328
+ "Sentiment": ["masakhane/afrisenti", "masakhane/safri", "shmuhammad/"],
329
+ "NLI": ["masakhane/afrixnli", "masakhane/afro-xnli", "facebook/xnli"],
330
+ "MMLU": ["masakhane/afrimmlu"],
331
+ "Intent": ["masakhane/InjongoIntent"],
332
+ "Math": ["masakhane/afrimgsm", "masakhane/uhura-gsm"],
333
+ "Dialogue": ["masakhane/AfriADR"],
334
+ "Translation MT": ["facebook/flores", "openlanguagedata/", "masakhane/mafand", "google/fleurs"],
335
+ "Health": ["DigitalUmuganda/Monolingual"],
336
+ "Common Voice": ["mbazaNLP/common-voice", "Kira-Floris/"],
337
+ "African Multilingual": ["NaolBM/", "bonadossou/", "csebuetnlp/", "LughaGen/", "CIRCE-lab/", "community-datasets/"],
338
+ "Code": ["michsethowusu/Code-"],
339
+ "Emotion": ["michsethowusu/emotion-corpus"],
340
+ "Speech-Text": ["michsethowusu/speech-text"],
341
+ "Hate Speech": ["masakhane/afri-hate"],
342
+ }
343
+
344
+ print("\nBREAKDOWN BY CATEGORY:")
345
+ print("-" * 70)
346
+ for cat_name, prefixes in categories.items():
347
+ cat_rows = 0
348
+ cat_tokens = 0
349
+ cat_count = 0
350
+ for ds in datasets:
351
+ name = ds["name"]
352
+ if any(name.startswith(p) or name == p for p in prefixes):
353
+ r, t = dataset_stats.get(name, (0, 0))
354
+ cat_rows += r
355
+ cat_tokens += t
356
+ cat_count += 1
357
+ if cat_count > 0:
358
+ print(f" {cat_name:<30} {cat_count:>3} datasets {cat_rows:>15,} rows {cat_tokens / 1e9:>8.1f}B tokens")
359
+
360
+ print("-" * 70)
361
+ print(f" {'TOTAL':<30} {total_datasets:>3} datasets {total_rows:>15,} rows {total_tokens / 1e9:>8.1f}B tokens")
362
+ print("=" * 70)
363
+
364
+ # Top 10 by token volume
365
+ print("\nTOP 10 DATASETS BY TOKEN VOLUME:")
366
+ print("-" * 70)
367
+ sorted_ds = sorted(dataset_stats.items(), key=lambda x: x[1][1], reverse=True)
368
+ for i, (name, (rows, tokens)) in enumerate(sorted_ds[:10], 1):
369
+ print(f" {i:>2}. {name}")
370
+ print(f" {rows:>15,} rows | {tokens / 1e9:>8.1f}B tokens")
371
+ print("=" * 70)
372
+
373
+ # Status vs targets
374
+ print("\nTARGET PROGRESS:")
375
+ print("-" * 70)
376
+ print(f" Datasets: {total_datasets}/200 ({total_datasets/200*100:.0f}%)")
377
+ print(f" Rows: {total_rows/1e9:.2f}B/1B ({total_rows/1e9*100:.0f}%)")
378
+ print(f" Tokens: {total_tokens/1e9:.1f}B/70B ({total_tokens/70e9*100:.1f}%)")
379
+ print("=" * 70)