File size: 12,560 Bytes
b55f985
 
2908a3b
b55f985
2908a3b
 
 
 
 
 
 
9ebb274
 
2908a3b
b55f985
 
cd86150
 
 
 
3d823ad
3b0ef19
 
 
3d823ad
3b0ef19
 
 
 
3d823ad
3b0ef19
 
 
 
 
3d823ad
62c13f8
3d823ad
62c13f8
3d823ad
62c13f8
3d823ad
 
 
 
62c13f8
3d823ad
62c13f8
 
 
54ddda1
d19933e
54ddda1
 
 
 
 
 
3b0ef19
 
 
 
 
2908a3b
 
182ac21
2908a3b
3b0ef19
9ebb274
 
 
 
 
 
 
3b0ef19
 
 
 
2908a3b
3b0ef19
 
 
 
 
 
 
 
2908a3b
 
 
3d823ad
 
2908a3b
 
 
3b0ef19
 
 
 
 
 
 
 
3d823ad
3b0ef19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3d823ad
3b0ef19
3d823ad
3b0ef19
 
 
 
3d823ad
3b0ef19
 
3d823ad
3b0ef19
 
3d823ad
 
3b0ef19
3d823ad
3b0ef19
3d823ad
 
 
 
 
 
3b0ef19
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
---
license: other
license_name: sentinel-r08-non-commercial-v2
license_link: LICENSE.md
language:
- it
pipeline_tag: text-generation
library_name: custom_code
tags:
- sentinel
- r08
- gptommy
- tokenizer
- italian
---

<p align="center">
  <img src="assets/r08_logo.jpg" width="320" alt="Sentinel R08 โ€” Pocket Core" style="border-radius: 16px;" />
</p>

# ๐Ÿ‡ฎ๐Ÿ‡น gpTommy 32k โ€” Vocabolario & Tokenizer v2 Nativo per la Lingua Italiana

[![Official Site](https://img.shields.io/badge/Sito%20Ufficiale-sentinelhub.eu-007acc.svg)](https://www.sentinelhub.eu)
[![Ecosystem](https://img.shields.io/badge/Ecosistema-Sentinel%20LifeOS-purple.svg)](https://www.sentinelhub.eu)
[![Tokenizer](https://img.shields.io/badge/Tokenizer-v2.0%20Spazio%20Implicito%20%2B%20Maiuscole%20Lossless-brightgreen.svg)](https://github.com/Thomasseri/gpTommy-32k)
[![Vocabolario](https://img.shields.io/badge/Vocabolario-32.768%20Tokens-blue.svg)](https://github.com/Thomasseri/gpTommy-32k)
[![Lingua](https://img.shields.io/badge/Lingua-Italiano%20Puro%2091%25-green.svg)](https://github.com/Thomasseri/gpTommy-32k)
[![Autore](https://img.shields.io/badge/Autore-Thomas%20Seri%20(Sentinel)-orange.svg)](https://www.sentinelhub.eu)

> **Vocabolario e Tokenizer lessicale v2 a 32.768 token (Spazio Implicito + Maiuscole 100% Lossless) concepito e strutturato specificamente per la lingua italiana.**  
> **Autore & Ideatore:** Thomas Seri (Sentinel)  
> **Ecosistema di Riferimento:** [Sentinel LifeOS](https://www.sentinelhub.eu) & Famiglia di Modelli **Sentinel R-08**

---

## ๐Ÿš€ Aggiornamento Tokenizer v2 & Registro Correzioni (7 novembre 2026)

Questo repository include ora il **Tokenizer v2 (`v2.0.0`, `implicit_space=True` di default)** che risolve i limiti strutturali del Tokenizer v1 pur mantenendo lo stesso vocabolario di `32.768` ID e la retrocompatibilitร  (`implicit_space=False`) per i checkpoint storici (`v7`, `v7.2`, `v7.2a`).

| # | Aspetto | Tokenizer v1 (storico) | **Tokenizer v2 Aggiornato (`v2.0.0`, default)** | Stato |
|---|---|---|---|---|
| 1 | `gptommy_tokenizer.py` | Aveva un `SyntaxError` (`from __future__ import annotations` dopo l'header di licenza) | **Corretto e aggiornato a `v2.0.0`** (`implicit_space=True` di default, `implicit_space=False` per compatibilitร  v1) | โœ… **Risolto e attivo** |
| 2 | Gestione degli spazi e token per parola (sui 177 testi italiani di prova: `32.560` parole, `200.713` caratteri) | Ogni spazio singolo era un token separato (`ID 10 = <spazio>`, pari al **41,1%** di tutti i token): **75.815 token totali**, **2,33 token/parola** (`2,65 caratteri/token`). *(In precedenza era indicato `~1,06 token/parola`, che contava solo i token-parola senza spazi e punteggiatura)* | **Spazio singolo implicito tra le parole** (zero token sprecati per gli spazi normali; `ID 10 = <attaccato>` usato solo per incollare sotto-pezzi o punteggiatura; `ID 9` per spazi multipli): **60.366 token totali (-20,4%)**, **1,85 token/parola** (**3,32 caratteri/token**) | โœ… **Tokenizer v2 attivo** |
| 3 | Decodifica 100% Lossless e Maiuscole (`decode(encode(testo)) == testo`) | Restituiva il testo tutto minuscolo (`"Il cuscinettoโ€ฆ"` โ†’ `"il cuscinettoโ€ฆ"`) | **100% Lossless (`decode(encode(testo)) == testo`)** su tutti i 177 testi di prova, grazie ai marcatori di caso `ID 6` (Iniziale Maiuscola / TitleCase, es. `"Il"`, `"Thomas"`) e `ID 5` (TUTTO MAIUSCOLO, es. `"PLC"`, `"R08"`) | โœ… **100% Lossless in v2** |
| 4 | Confronto con i tokenizer subword (`2,4 โ€“ 3,2 sub-token per parola`) | Dichiarato nella prima versione del README senza benchmark riproducibile allegato | **Ritirato** finchรฉ non verrร  pubblicato uno script di benchmark comparativo pubblico | โœ… **Corretto** |

I 177 testi di prova (`heldout_it_v1.jsonl`) sono un set di valutazione italiano mai usato in addestramento.

---

> ### ๐Ÿ’ผ Investment, Compute Grants & Enterprise Licensing (Investimenti & Partnership Industriali)
> ๐Ÿ‡ฌ๐Ÿ‡ง **Sentinel** is scaling the **Geodesic Pyramidal Sphere Architecture (`R-08`)** from 50M to **110Mโ€“1B+ parameters**, with **a patent application filed at the Italian Patent and Trademark Office (UIBM)**.  
> **Open to Seed / Deep-Tech Investment, GPU/TPU Compute Grants, and Enterprise R&D Partnerships.**  
> ๐Ÿ‡ฎ๐Ÿ‡น **Aperto a Investimenti Seed / Deep-Tech, Grant Computazionali GPU/TPU e Licenze Industriali Enterprise.**  
> ๐Ÿ“ฉ **Contact Founder & Inventor Thomas Seri:** ๐ŸŒ **[www.sentinelhub.eu](https://www.sentinelhub.eu)** | ๐Ÿ™ **[GitHub (@Thomasseri)](https://github.com/Thomasseri)** | ๐Ÿค— **[Hugging Face (@SentinelHub)](https://huggingface.co/SentinelHub)** | ๐Ÿ’ฌ **[Open an Inquiry / Issue](https://github.com/Thomasseri/R-08/issues/new)**

---

## ๐ŸŒ Ecosistema Sentinel & Modelli R-08 Correlati

Il vocabolario **gpTommy 32k** รจ il motore lessicale ad alta densitร  impiegato per la nuova generazione di modelli geodetici compatti e leggeri della famiglia **Sentinel R-08**:

* ๐ŸŒ **Sito Ufficiale:** **[www.sentinelhub.eu](https://www.sentinelhub.eu)** โ€” Piattaforma Sentinel LifeOS
* ๐Ÿค– **Sentinel R-08 v7 (Pyramid 44.5M):** [GitHub](https://github.com/Thomasseri/R-08) | [Hugging Face](https://huggingface.co/SentinelHub/R-08)
* ๐Ÿš€ **Sentinel R-08 v7.2 (51.6M con 12 Hub Icosaedrici):** [GitHub](https://github.com/Thomasseri/R-08-v7.2) | [Hugging Face](https://huggingface.co/SentinelHub/R-08-v7.2)
* ๐ŸŒŸ **Sentinel R-08 v7.2a DA ZERO (51.6M 82.51% BLiMP-IT, migliore tra gli R-08):** [GitHub](https://github.com/Thomasseri/R-08-v7.2a) | [Hugging Face](https://huggingface.co/SentinelHub/R-08-v7.2a)
* ๐Ÿ”ฌ **Modello di Controllo A/B Transformer Baseline (44.9M):** [GitHub](https://github.com/Thomasseri/R-08-Transformer-Baseline) | [Hugging Face](https://huggingface.co/SentinelHub/R-08-Transformer-Baseline)

### ๐ŸŒ Suite Europea Multilingua gpTommy 32k (32.768 Token Nativi per Lingua):
* ๐Ÿ‡ฎ๐Ÿ‡น **Italiano (`gpTommy-32k`):** [GitHub](https://github.com/Thomasseri/gpTommy-32k) | [Hugging Face](https://huggingface.co/SentinelHub/gpTommy-32k)
* ๐Ÿ‡ฌ๐Ÿ‡ง **English (`gpTommy-32k-EN`):** [GitHub](https://github.com/Thomasseri/gpTommy-32k-EN) | [Hugging Face](https://huggingface.co/SentinelHub/gpTommy-32k-EN)
* ๐Ÿ‡ฉ๐Ÿ‡ช **Deutsch (`gpTommy-32k-DE`):** [GitHub](https://github.com/Thomasseri/gpTommy-32k-DE) | [Hugging Face](https://huggingface.co/SentinelHub/gpTommy-32k-DE)
* ๐Ÿ‡ซ๐Ÿ‡ท **Franรงais (`gpTommy-32k-FR`):** [GitHub](https://github.com/Thomasseri/gpTommy-32k-FR) | [Hugging Face](https://huggingface.co/SentinelHub/gpTommy-32k-FR)
* ๐Ÿ‡ช๐Ÿ‡ธ **Espaรฑol (`gpTommy-32k-ES`):** [GitHub](https://github.com/Thomasseri/gpTommy-32k-ES) | [Hugging Face](https://huggingface.co/SentinelHub/gpTommy-32k-ES)

---

## ๐ŸŽฏ Perchรฉ gpTommy 32k รจ Diverso dai Tokenizer Tradizionali

I tokenizer BPE statistici tradizionali calibrati prevalentemente sulla lingua inglese presentano una forte frammentazione quando applicati alla morfologia italiana. Nel testo italiano questo comporta una grave frammentazione:
* Una parola come *ยซcuscinettoยป* o *ยซmanutenzioneยป* viene spezzata in 3 o 4 sottosillabe arbitrarie (`cus-`, `ci-`, `net-`, `to`), aumentando a dismisura la lunghezza del contesto, i costi computazionali e il rischio di allucinazioni ortografiche.

**gpTommy 32k** adotta un approccio lessicale nativo e strutturato:
* Contiene **29.775 parole italiane complete** (il **90,9%** dell'intero vocabolario), coprendo forme base, singolari, plurali, verbi coniugati e l'intero lessico tecnico-scientifico.
* Le parole non vengono spezzettate: la rete neurale associa un **singolo token atomico** a ciascun concetto lessicale finito.

---

## ๐Ÿ“ Metriche Oggettive di Compressione & Nota sulla Nomenclatura (`32k`)

* **Significato di `32k`**: Il suffisso **`32k`** indica la **dimensione del vocabolario lessicale (`32.768` token ID distinti)** e non la finestra di contesto del modello.
* **Efficienza di Tokenizzazione (Tokenizer v2 vs v1 sui 177 testi di valutazione)**:
  Con il **Tokenizer v2 (`implicit_space=True`)**, lo spazio singolo ASCII tra le parole รจ implicito e non consuma token: sui 177 testi italiani di prova (`32.560` parole, `200.713` caratteri), la sequenza completa richiede **`60.366` token** (**`1,85 token per parola`**, **`3,32 caratteri per token`**) con **ricostruzione 100% lossless delle maiuscole**, rispetto ai `75.815` token (`2,33 token per parola`) della modalitร  storica `v1` (`implicit_space=False`).

---

## ๐Ÿ“š Architettura ad Archivio: Il Sistema a Schede `SSvvv`

Il vocabolario gpTommy adotta una codifica deterministica a 5 cifre `SSvvv`:
* **`SS` (Scheda)**: Indica la categoria o la lettera dell'alfabeto (da `01` a `26` per le lettere **A..Z**).
* **`vvv` (Riga)**: Indica la specifica riga / lemma all'interno di quella scheda.

| Scheda | Intervallo ID | Contenuto Principale | Esempi di Token |
| :---: | :---: | :--- | :--- |
| **`00`** | `00000` โ€“ `00999` | Token speciali AI, marcatori di caso/spazio v2 (`ID 5, 6, 9, 10`), punteggiatura, cifre | `<\|user\|>`, `<\|assistant\|>`, `<\|system\|>`, `+`, `-`, `=`, `*`, `%` |
| **`01`** | `01000` โ€“ `01999` | Lettera **A** (parole italiane e forme latine) | `anche`, `amico`, `allora`, `avere`, `analizzare`, `attualitร ` |
| **`03`** | `03000` โ€“ `03999` | Lettera **C** | `casa`, `cosa`, `cittร `, `cuscinetto`, `costruire`, `cilindro` |
| **`07`** | `07000` โ€“ `07999` | Lettera **G** | `giorno`, `grande`, `gruppo`, `giovane`, `governo` |
| **`20`** | `20000` โ€“ `20999` | Lettera **T** | `tempo`, `terra`, `tavolo`, `totale`, `tiranti`, `trasmissione` |
| **`26`** | `26000` โ€“ `26999` | Lettera **Z** (oltre 940 lemmi in Z) | `zona`, `zone`, `zero`, `zio`, `zucchero`, `zaino`, `zitto`, `zucca` |

---

## ๐Ÿ“Š Ripartizione dei 32.768 Token

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   gpTommy 32k (32.768 ID)                   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Tipologia                            โ”‚ Conteggioโ”‚ Percentualโ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Parole Italiane Complete             โ”‚   29.775 โ”‚     90,9% โ”‚
โ”‚ Caratteri Singoli, Cifre e Simboli   โ”‚    1.925 โ”‚      5,9% โ”‚
โ”‚ Token Speciali di Controllo & Chat   โ”‚    1.069 โ”‚      3,2% โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

---

## ๐Ÿš€ Utilizzo Rapido in Python โ€” Tokenizer v2 (Zero Dipendenze Esterne)

Il tokenizer `gptommy_tokenizer.py` (`v2.0.0`) รจ completamente autonomo e non richiede pacchetti pesanti esterni:

```python
from gptommy_tokenizer import gpTommyTokenizer

# 1. Inizializza il Tokenizer v2 (Spazio Implicito + Maiuscole Lossless di default)
tokenizer = gpTommyTokenizer()

# 2. Codifica una frase italiana in token ID (senza sprecare token per gli spazi singoli)
testo = "Il cuscinetto a sfere radiale riduce l'attrito volvente."
token_ids = tokenizer.encode(testo)
print("Token IDs v2:", token_ids)
# Output: [6, 9043, 3001, 10, 21472, 10, 14147, 1001, 28253, 18533, 10, 4262, 10, 12045, 18405, 12001, 10, 71, 10, 30421, 30656, 10, 63]

# 3. Decodifica 100% Lossless tornando al testo italiano originale (maiuscole incluse!)
testo_ricostruito = tokenizer.decode(token_ids)
print("Decodifica v2:", testo_ricostruito)
# Output: "Il cuscinetto a sfere radiale riduce l'attrito volvente."
assert testo_ricostruito == testo

# 4. Opzionale: modalitร  v1 legacy per i checkpoint storici (R-08 v7 / v7.2 / v7.2a)
tokenizer_v1 = gpTommyTokenizer(implicit_space=False)
```

---

## ๐Ÿ›ก๏ธ Licenza e Attribuzione
Questo vocabolario รจ rilasciato per scopi di **Ricerca Scientifica e Sperimentazione Libera (Non-Commercial Research License)** con vincoli etici di protezione (esclusione di impieghi bellici, propaganda e usi lesivi). 

Tutti i diritti sull'architettura a schede e sull'organizzazione lessicale sono riservati a **Thomas Seri (Sentinel)**. Per collaborazioni o utilizzi in progetti di produzione: **[www.sentinelhub.eu](https://www.sentinelhub.eu)**.