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
[](https://www.sentinelhub.eu)
[](https://www.sentinelhub.eu)
[](https://github.com/Thomasseri/gpTommy-32k)
[](https://github.com/Thomasseri/gpTommy-32k)
[](https://github.com/Thomasseri/gpTommy-32k)
[-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)**.
|