gpTommy-32k / README.md
SentinelHub's picture
Aggiornamento README Tokenizer v2 (Spazio Implicito + Maiuscole Lossless)
3d823ad verified
|
Raw History Blame Contribute Delete
12.6 kB
---
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)**.