aigencydev commited on
Commit
6f41933
·
verified ·
1 Parent(s): 2946d60

egitim/: v2 betikleri ve veri ozetleri

Browse files
Files changed (1) hide show
  1. egitim/dogal_secim.py +43 -0
egitim/dogal_secim.py ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """Dogal Turkce metin secimi (FineWeb-2 tur_Latn, parca 100-259: Erk'in daha once GORMEDIGI parcalar).
3
+ GENEL KURAL, KIYASA BAKILMAZ: kiyas maddesi, sablonu, govde listesi, TDK sozlugu KULLANILMAZ.
4
+ Iki havuz:
5
+ A) rastgele paragraflar
6
+ B) kesme isaretli cekimli soz (Istanbul'a, TCDD'yi, 1990'da) yogun paragraflar: >=2 / 100 kelime
7
+ — genel bir yazim olcutu; ozel ad / kisaltma / sayi cekimi dogal metinde en cok burada gorulur.
8
+ Karisim: %70 A + %30 B. Hijyen: sozluk-maddesi gorunumlu satirlar ("kalp, -bi" bicimi) ATILIR ki
9
+ cevap anahtari benzeri metin egitime girmesin. Cikti: dogal_metin.txt (paragraf/satir)."""
10
+ import glob, random, re, sys, unicodedata
11
+ import pyarrow.parquet as pq
12
+ HEDEF_MB = float(sys.argv[1]) if len(sys.argv) > 1 else 600
13
+ KOK = "/ari/users/ytanis/.cache/nanochat/base_data_tr"
14
+ rng = random.Random(20260926)
15
+ KESME = re.compile(r"\b[\wÇĞİÖŞÜçğıöşü]+['’´][a-zçğıöşü]{1,6}\b")
16
+ SOZLUK_MADDESI = re.compile(r"\b[a-zçğıöşü]{2,}, -[a-zçğıöşü]{1,3}\b") # "kalp, -bi"
17
+ TR_HARF = re.compile(r"[çğıöşüÇĞİÖŞÜ]")
18
+ def paragraflar(doc):
19
+ for p in re.split(r"\n\s*\n|\n", doc):
20
+ p = unicodedata.normalize("NFC", p.strip())
21
+ if len(p) < 200 or len(p) > 3000: continue
22
+ k = p.split()
23
+ if len(k) < 25: continue
24
+ if not TR_HARF.search(p): continue # Turkce degil / transliterasyon
25
+ if SOZLUK_MADDESI.search(p): continue # hijyen
26
+ if "TurkMorfBench" in p or "turkmorf" in p.lower(): continue
27
+ yield p, len(KESME.findall(p)) * 100.0 / len(k)
28
+ A, B = [], []
29
+ hedef = HEDEF_MB * 1e6; boyutA = boyutB = 0
30
+ dosyalar = sorted(glob.glob(KOK + "/shard_*.parquet"))[100:260]; rng.shuffle(dosyalar)
31
+ for d in dosyalar:
32
+ for satir in pq.read_table(d, columns=["text"]).column("text").to_pylist():
33
+ for p, yog in paragraflar(satir):
34
+ if yog >= 2.0 and boyutB < 0.30 * hedef:
35
+ B.append(p); boyutB += len(p)
36
+ elif rng.random() < 0.15 and boyutA < 0.70 * hedef:
37
+ A.append(p); boyutA += len(p)
38
+ print("%s A %.0f MB B %.0f MB" % (d[-19:], boyutA / 1e6, boyutB / 1e6), flush=True)
39
+ if boyutA >= 0.70 * hedef and boyutB >= 0.30 * hedef: break
40
+ hepsi = A + B; rng.shuffle(hepsi)
41
+ with open("/ari/users/ytanis/dogal_metin.txt", "w", encoding="utf8") as f:
42
+ for p in hepsi: f.write(p.replace("\n", " ") + "\n")
43
+ print("YAZILDI: %d paragraf (A %d, B %d), %.0f MB" % (len(hepsi), len(A), len(B), (boyutA + boyutB) / 1e6))