hitit-cuneiform-ocr / code /TLHDIG_EXPLOITATION.md
savastakan's picture
Initial upload: code + 5 record checkpoints + fuse
f211247 verified
|
Raw
History Blame Contribute Delete
5.45 kB
# TLHdig 0.2 — Triple-Parallel Corpus Exploitation
**Zenodo 15459134** (TLHdig Beta 0.2) — 315K Hittite transliteration line.
**Fotoğraf yok AMA cuneiform Unicode + transliteration + phonetic** üçlü paralel corpus.
## Keşif
TLHdig 0.2 dataset'i sadece transliteration değil, **üçlü-paralel** corpus:
```
Cuneiform Unicode: 𒈨𒈾𒄴𒄩𒀭𒁕𒆠𒅖𒊭
Transliteration: me-na-aḫ-ḫa-an-da ki-iš-ša-
Phonetic: menaḫḫanta kišša~
```
Bu 3 modalite arasında **doğrudan supervised training** yapılabilir — fotoğraf **gerekmeden**.
## Üretilen corpora (`datasets/processed/tlhdig_corpora/`)
| Corpus | Kayıt | Kullanım |
|---|---:|---|
| `cuneiform_to_transliteration.jsonl` | 315,108 | Seq2seq: Unicode → ABZ transliteration |
| `hittite_parallel.jsonl` | **280,624** | ⭐ Hitit-only parallel (gold) |
| `transliteration_to_phonetic.jsonl` | 279,168 | Transliteration → Pronunciation |
| `cuneiform_lm.jsonl` | 347,015 | Cuneiform Unicode LM |
| `transliteration_lm.jsonl` | 341,409 | KenLM 5-gram input |
| `phonetic_lm.jsonl` | 279,168 | Phonetic LM |
| `language_id.jsonl` | 341,409 | Hit/Akk/Hur/Hat/Luw/Sum classification |
| `sign_abz_pairs.jsonl` | 2,742,928 | Cuneiform char frequency + ABZ discovery |
**Hittite cuneiform unique chars**: 337 (ABZ sign repertoire doğrulanabilir).
Top-10 Hitit sign'ı:
```
𒀭 (AN/DINGIR) 176,832 occurrence
𒀀 (A) 116,937
𒀸 (AŠ) 76,579
𒈾 (NA) 76,167
𒍣 (ZI) 73,829
𒈠 (MA) 60,485
𒉡 (NU) 52,674
𒄿 (I) 51,676
𒊭 (ŠA) 47,490
𒅀 (IA) 46,857
```
## 5 Training Signal
### 1. Cuneiform Unicode → Transliteration (seq2seq)
- **Input**: Cuneiform character sequence `𒈨𒈾𒄴...`
- **Output**: Transliteration `me-na-aḫ-...`
- **Train size**: 280,624 Hitit pairs
- **Model**: ByT5 char-to-char (no image required!)
- **Kullanım**:
- Seq2seq decoder initialization
- Image-to-text seq2seq pipeline'ın text-to-text pretraining
- Downstream: image tanıma yapılamıyorsa text yoluyla hatasız
### 2. Transliteration → Phonetic
- **Input**: `me-na-aḫ-ḫa-an-da`
- **Output**: `menaḫḫanta`
- **Train size**: 279,168
- **Kullanım**: Morphological analysis, lemmatization
### 3. Cuneiform LM (char-level)
- **Size**: 315K line × avg 20 char = 6M+ char
- **ByT5 / GPT-2 small** ön-eğitim
- **Kullanım**: Sign sequence priors (bigram/trigram probabilities)
### 4. Transliteration LM (KenLM 5-gram)
- **Input data**: 341K line transliteration
- **Output**: `hitit_kenlm_5gram.binary`
- **Kullanım**: Viterbi lattice rescoring (Stage 4, v3/v4)
### 5. Sign ABZ Discovery
- 337 Hitit cuneiform char → ABZ code mapping
- Unicode U+12000-U+1254F range
- Frequency-weighted: top 100 sign = %95+ coverage
## Entegrasyon — pipeline v4'te nerede
### Stage 2 (Classification) desteği
- Cuneiform char frequency → class priors
- ABZ class label mapping (unified_label) verify
### Stage 4 (Transliteration) ana motor
- ByT5 model initialization: Hittite LM pretrain
- KenLM 5-gram ready
- Phonetic reading output (bonus)
### Seq2seq pipeline (BEYOND_95)
- **Pretraining**: 280K cuneiform↔transliteration (text-only)
- **Fine-tuning**: 83 Hitit tablet image-text pair (from build_pairs.py)
- **Inference**: image → transliteration direct
## Faydalar (realistic gain)
| Kullanım | Beklenen gain | Maliyet |
|---|---|---|
| ByT5 Hitit LM pretrain (char-level) | +2-4% seq2seq | 1 GPU hafta |
| KenLM 5-gram Viterbi rescoring | +1-3% (v4 config'de hedef) | 1 CPU gün |
| Cuneiform char frequency prior | +0.3-0.5% | 0 |
| Phonetic reading side-task | +0.3-0.5% multi-task | marjinal |
| Language ID auxiliary | filtering only | 0 |
**Toplam realistic**: +3-5% downstream (seq2seq paradigm + LM rescoring dahil).
## Özel değer
- **CC-BY-4.0** (free for research + commercial with attribution)
- **280K parallel pair** — cuneiform OCR için rekor
- **Foto gerekmiyor** — hemen başlatılabilir
- **Würzburg authoritative** (Schwemer grubu)
- **98%+ published Hittite fragments** coverage
## Hemen yapılabilecek (veri bizde)
```bash
# 1. KenLM 5-gram Hitit LM
python3 -c "
import json
with open('datasets/processed/tlhdig_corpora/transliteration_lm.jsonl') as f, \
open('/tmp/hitit_translit.txt', 'w') as g:
for line in f:
r = json.loads(line)
if r.get('lang') == 'Hit':
g.write(r['text'] + '\n')
"
# Pip install via GitHub: pip install https://github.com/kpu/kenlm/archive/master.zip
# kenlm/bin/lmplz -o 5 < /tmp/hitit_translit.txt > hitit.arpa
# kenlm/bin/build_binary hitit.arpa hitit_kenlm_5gram.binary
# 2. ByT5 pretrain — 280K cuneiform→translit
# Training script: hitit_ocr/src/seq2seq/train_text_only.py (TODO)
# 3. Cuneiform char embedding (supervised)
# Each of 337 unique cuneiform chars → embedding via usage context
```
## Status
- ✅ TLHdig 0.2 zaten indirildi (datasets/sources/tlhdig/)
- ✅ 8 corpus türetildi (datasets/processed/tlhdig_corpora/)
- ✅ Hitit parallel 280K kayıt hazır
- ⏳ ByT5 pretraining script TODO
- ⏳ KenLM binary generation TODO (pip install kenlm)
## Referans
- [Zenodo TLHdig 0.2](https://zenodo.org/records/15459134)
- License: CC-BY-4.0
- Authors: Müller, Prechel, Rieken, Schwemer (Würzburg/Mainz/Marburg)
- Web: https://www.hethport.uni-wuerzburg.de/TLHdig/