Euskarazko testuen maiuskulak, puntuazioa, ortografia eta gramatika zuzentzeko komando-lerroko tresna.
Web bertsioaren (txukun) hiru eredu berberak erabiltzen ditu, ONNX Runtime bidez CPU-n exekutatzen direnak:
- π§ Cap+Punct β maiuskulak eta puntuazioa (MarianMT ONNX int8, ~77 MB)
- π Ortografia β Hunspell + maiztasun berriro-ordenaketa + BERTeus ONNX berriro-ordenaketa neuronala (int4, 85 MB + 74 MB embeddings)
- βοΈ Gramatika β GECToR akats gramatikalak zuzentzeko (RoBERTa-eus-base, int4 ONNX, ~85 MB)
Itzune kolektiboaren proiektua β euskarako AI tresna libre eta pribatuak.
| # | Eredua | Rola | Tamaina |
|---|---|---|---|
| 1 | cap-punct-eu | Maiuskulak eta puntuazioa | ~77 MB (int8) |
| 2 | berteus-onnx | Ortografia: hautagaien berriro-ordenaketa neuronala | 85 MB (int4) + 74 MB |
| 3 | gector-eus-onnx | Gramatika zuzenketa + akats-detekzioa | ~85 MB (int4) |
Hiru ereduak HF Hub-etik automatikoki deskargatzen dira lehen exekuzioan, eta cache-atseginak dira hurrengo exekuzioetarako.
git clone https://github.com/itzune/txukun-cli.git
cd txukun-cli
uv sync# Debian / Ubuntu
sudo apt install hunspell
# macOS
brew install hunspell
# Arch Linux
sudo pacman -S hunspellHunspell gabe ere, cap-punct eta gramatika zuzenketa funtzionatzen dute. Ortografia zuzenketa desgaituta geratzen da.
uv run python txukun.py "gaur goizean ama egin du bazkaria eta gero etsea garbitu dut"
# β Gaur goizean amak egin du bazkaria eta gero etxea garbitu dut.uv run python txukun.py -d "gaur goizean ama egin du bazkaria"[
{ "id": "e1", "frm": 0, "to": 4, "original": "gaur", "suggestion": "Gaur",
"category": "cappunct", "title": "Maiuskula", "context": "" },
{ "id": "e2", "frm": 13, "to": 16, "original": "ama", "suggestion": "amak",
"category": "grammar", "title": "Gramatika", "context": "gaur goizean" }
]# Eredu jakin batzuk bakarrik
uv run python txukun.py --enable spell --enable cappunct "text"
# Eredu bat kendu
uv run python txukun.py --disable grammar "text"uv run python txukun.py -f input.txt -o output.txt
cat testua.txt | uv run python txukun.py --stdin
echo "kaixo" | uv run python txukun.py --stdin -q| Aukera | Deskribapena |
|---|---|
TEXT |
Zuzendu beharreko testua |
-d, --detect |
JSON irteera akatsekin (posizioa, iradokizuna, kategoria) |
-c, --correct |
Testu zuzendua irteera (lehenetsia) |
--enable MODEL |
Eredu jakin batzuk bakarrik gaitu (cap-punct, spell, grammar) |
--disable MODEL |
Eredu bat desgaitu |
-f, --file PATH |
Fitxategitik irakurri |
--stdin |
Stdin-etik irakurri |
-o, --output PATH |
Irteera fitxategian gorde |
-q, --quiet |
Egoera mezuak isildu |
[sarrera] β strip_markdown β 3 detektore (sekuentzialki) β merge β [irteera]
β
ββ GECToR: gramatika zuzenketa β diffWords β replace changes
ββ Hunspell: akats ortografikoak β Tier1 (freq+ed) + Tier2 (BERTeus)
ββ MarianMT: cap-punct β diffWords β case/punct-only changes
Hiru detektoreek testu arruntan (markdown syntaxia kenduta) egiten dute lan, eta akatsen posizioak jatorrizko testura mapatzen dira (strip_markdown-en posizio-maparen bidez).
Testuak markdown sintaxia badu (#, **, [], etab.), automatikoki garbitzen da ereduei pasatu aurretik. Akatsen posizioak jatorrizko markdown-era mapatzen dira:
uv run python txukun.py -d "# Nire txostena
laister iritsiko naiz"
# β laister β Laster (spelling+cap-punct mergea, posizioa jatorrizko markdown-en)Akats bat posizio berean hainbat detektorek aurkitzen badute, mergeatu egiten dira:
- Ortografia + Cap-punct:
laisterβLaster(spell:laster+ cap:Laister) - Gramatika + Cap-punct:
amaβAmak(grammar:amak+ cap:Ama)
Izenburuetan (#), puntuazio-iradokizunak ezabatzen dira (ez da puntua gehitzen izenburuaren bukaeran).
Cap-punct (MarianMT) eta GECToR ereduek aluzinazioak sor ditzakete. constrain_lcs() funtzioak (LCS lerrokatzea) cap-punct-en hitz-ordezkapenak arbuiatzen ditu β maiuskula/puntuazio aldaketak bakarrik onartzen ditu.
Euskarazko testuetarako diseinatuta. Ez du beste hizkuntzekin funtzionatuko.
GECToR-eusek ezin ditu hitz errealen akatsak detektatu (adib. hura vs ura), Elhuyar entrenamendu-datuetan ez baitaude akats mota hori. Ikusi gector-eus/TODO.md.
Eredu bakoitza lazy-loading da eta hutsegiteetan graceful degradation aplikatzen da:
| Osagaia | Hutsegitea | Fallback |
|---|---|---|
| Hunspell ez instalatuta | hunspell komandoa ez da aurkitzen |
Ortografia desgaituta, cap-punct + gramatika jarraitzen dute |
| BERTeus kargatzeak huts | ONNX/deskarga errorea | Tier 1 (freq+ed) bakarrik erabiltzen da |
| GECToR kargatzeak huts | ONNX/deskarga errorea | Gramatika desgaituta, besteak jarraitzen dute |
| Cap-punct kargatzeak huts | ONNX/deskarga errorea | Cap-punct desgaituta, besteak jarraitzen dute |
Eredu bakoitzak konfiantza-puntuazio bat ematen du iradokizun bakoitzeko. Balio baxuko iradokizunak automatikoki ezabatzen dira, over-correction eta false positive arazoak murrizteko.
| Eredua | Konfiantza-iturria | Atalasea |
|---|---|---|
| GECToR (gramatika) | P(INCORRECT) detekzio-burutik (0.0β1.0) | 0.05 |
| BERTeus (ortografia) | Kosinu antzekotasuna, normalizatuta (0β1) | 0.50 |
| MarianMT (cap-punct) | LCS lerrokatze-tasa (1.0 = hitz-ordezkapenik ez) | 1.00 |
Atalase hauek 220 kasuko ebaluazio-datu-sortan kalibratu dira (tests/gec-benchmark/eval_dataset.json), grid search bidez (tests/gec-benchmark/confidence_per_model.py).
Emaitza: 22.7% β 38.6% zehaztasuna (+15.9 puntu), over-correction 139β66 eta false positive 12β1 murriztuz.
β οΈ Ereduak eguneratzen badira, atalase hauek berrikustekoak dira. Berriro exekutatu:uv run python tests/gec-benchmark/run_eval.py --output /tmp/eval_results.json uv run python tests/gec-benchmark/confidence_per_model.py
Config-ak txukun_lib/analyze.py-n daude (CONFIDENCE_THRESHOLDS aldagaia).
- Kodea: Apache 2.0
- cap-punct eredua: Apache 2.0 (
itzune/txukun-cap-punct-eu, jatorrizkoaHiTZ/cap-punct-eu) - BERTeus eredua: CC-BY-NC-SA 4.0 (
itzune/berteus-onnx, jatorrizkoaixa-ehu/berteus-base-cased) - GECToR eredua: CC-BY-NC-SA 4.0 (
itzune/gector-eus-onnx, Elhuyar GEC datuekin entrenatua) - Hiztegia: Xuxen (GPL)
- txukun β Web bertsioa (3 eredu, Grammarly-style UI)
- gector-eus β GECToR Basque entrenamendua
- itzune/berteus-onnx β BERTeus int4 ONNX
- itzune/gector-eus-onnx β GECToR int4 ONNX
- itzune/txukun-cap-punct-eu β Cap-punct int8 ONNX
- Parakeet-eu β Euskarazko ASR