Ders 16 / 16
Tablo ve Görüntü Taşıyan Kaynakların Parçalanması
Aynı kurgu dağarcık tablo biçiminde sunulduğunda parçalama kararının erişim anmasına yaptığının sayılması: yordam adı yalnız başlıkta durduğu için satır bazlı parçalama anmayı 0,0000'a düşürüyor, blok bazlı parçalama 0,9500 veriyor ama istek başına 91,6 belirteç götürüyor, satırın başlıkla birlikte saklanması aynı 0,9500 anmayı istek başına 41,4 belirteçle veriyor ve dizinde saklanan belirteci 5926'dan 9432'ye çıkarıyor. Tablo görüntü olarak verildiğinde betimlemesiz kaynak 0,0000, tek satırlık betimlemeli kaynak 0,9500 anma ama 0,0000 cevaplanabilirlik veriyor: kaynak bulunuyor, içindeki değer getirilemiyor. Ders M28/K04 kursunun kapanışıdır.
İçindekiler
Bir önceki ders erişim ile ince ayarı üç görevde yan yana ölçtü ve ikisinin de aynı varsayıma dayandığını gösterdi: dağarcıktaki her şeyin düz metin olduğu. Kurgu belgeler cümlelerden kuruluydu ve her parça tek başına ne hakkında olduğunu söylüyordu.
Saha ekibinin yordam belgeleri böyle değildir. İçlerinde tablolar vardır ve tabloda anlam hücrede değil, hücrenin başlıkla ilişkisindedir. Bir tablo cümle gibi bölündüğünde satır ile başlık ayrılır ve satır tek başına hiçbir şey söylemez. Görüntü taşıyan kaynaklarda kayıp bir adım daha öteye gider: metin hiç yoktur. Çok kipli girdinin kendisi M27’nin Makine Öğrenmesi kursunda, bilgisayarla görü konusunda ölçüldü ve M28/K03’te girdi biçiminin belirteç bedeli sayıldı — ince ızgara 0,8167 isabet, kırpık ızgara 0,7000, kullanılabilir kayıt başına 224,1 belirteçten 60,0 belirtece. Bu yordamlar burada tekrarlanmaz. Bu dersin ölçtüğü tek şey parçalama kararıdır.
- EH84. Dağarcık, kavram ekseni, gömme, sorgu kümesi ve tablo kaynağı kurgudur ve ders içinde üretilir. Hiçbir gerçek kurum, ürün, belge, ayrıştırıcı ya da gömme ucu yoktur.
- EH85. Aynı iki yüz belge bu derste tabloya çevrilir. Yordam adı yalnız başlıkta durur; satırlar alan adı, zorunluluk ve kaynak sütunlarını taşır. Tablonun neyi anlattığı hücrelerde yazmaz.
- EH86. Beş parçalama kipi ölçülür: satır (her satır bir parça, başlık atılır), blok (bütün tablo tek parça), satır + başlık (her satır başlıkla birlikte saklanır), görsel (tablo görüntü olarak gelir, metin yoktur) ve görsel + betimleme (görüntüye tek satırlık betimleme yazılmıştır).
- EH87. İki ölçü ayrı sayılır. Erişim anması: getirilen parçalarda hedef yordamın adı geçiyor mu. Cevaplanabilirlik: getirilen parçalardan birinde hem yordam adı hem de tablonun bir satırı birlikte duruyor mu. Bir yanıt ancak ikisi birden varsa üretilebilir.
- EH88. Bedel üç birimle yazılır: dizindeki parça sayısı, dizinde saklanan belirteç ve istek başına isteme giren belirteç. İlk ikisi depolama, üçüncüsü çağrı bedelidir.
- EH89. Ölçünün tamamı belirlenmiştir: örnekleme yoktur, dil modeli benzeticisi çağrılmaz, sayı koşumdan koşuma değişmez. Bu yüzden iki koşum farkı tanım gereği sıfırdır.
- EH90. Erişim her kipte üç parça getirir; anma ve cevaplanabilirlik bu üçlü üzerinde okunur.
Tabloyu Parçalamanın Beş Yolu
Parça boyutu ve örtüşme kararı bu kursun parçalama dersinde düz metin üzerinde ölçülmüştü. Tabloda karar başka bir eksende durur: başlığın satırla birlikte saklanıp saklanmayacağı.
# KURGUDUR. Dagarcik, kavram ekseni, gomme, sorgu kumesi ve tablo kaynagi ders # icinde uretilir; hicbir gercek kurum, urun, belge ya da gomme ucu yoktur. TOHUM, M32 = 20260218, 0xFFFFFFFF BOYUT = 32 def uretec(t): x = ((t ^ (t >> 16)) * 2246822507) & M32 x = ((x ^ (x >> 13)) * 3266489909) & M32 s = [(x ^ (x >> 16)) & M32] def sonraki(): s[0] = (s[0] * 1664525 + 1013904223) & M32 return s[0] / 4294967296 return sonraki def ayrik(u, w): t = 0.0 for i, x in enumerate(w): t += x if u < t: return i return len(w) - 1 def belirtecle(m): b = [] for s in m.lower().replace(",", " , ").split(): while len(s) > 5: b.append(s[:5]) s = s[5:] b.append(s) return b # ---- KURGU anlam ekseni: her kavramin belge dilinde ve sorgu dilinde ayri yuzeyi var SINIF = ["tarife", "ariza", "sayac", "kesinti", "bakim"] KOD = {"tarife": "TR", "ariza": "AR", "sayac": "SY", "kesinti": "KS", "bakim": "BK"} KAVRAM = { # kavram: (sinif, belge yuzeyi, sorgu yuzeyi) "basamak": ("tarife", "kademe esigi", "hangi dilimdeyim"), "birim": ("tarife", "birim ucret", "metrekup fiyati"), "abonetip": ("tarife", "abone tipi", "mesken mi isyeri mi"), "gecis": ("tarife", "tarife gecisi", "plan degistirme"), "arizakod": ("ariza", "ariza kodu", "hata numarasi"), "sizinti": ("ariza", "hat sizintisi", "su kacagi"), "basinc": ("ariza", "basinc dususu", "zayif akis"), "ekip": ("ariza", "saha ekibi", "gorevli ne zaman gelir"), "endeks": ("sayac", "endeks degeri", "sayac ustundeki rakam"), "okuma": ("sayac", "okuma yordami", "nasil kaydediliyor"), "degisim": ("sayac", "sayac degisimi", "cihaz yenileme"), "dogrula": ("sayac", "okuma dogrulamasi", "yanlis girilmis mi"), "planli": ("kesinti", "planli kesinti", "onceden duyurulan durma"), "duyuru": ("kesinti", "duyuru kanali", "nereden ogrenirim"), "sure": ("kesinti", "kesinti suresi", "ne kadar surer"), "geridonus": ("kesinti", "yeniden verme", "ne zaman gelir"), "periyot": ("bakim", "periyodik bakim", "duzenli kontrol"), "vana": ("bakim", "vana kontrolu", "musluk kapatma duzeni"), "filtre": ("bakim", "filtre degisimi", "temizleme parcasi"), "kalib": ("bakim", "kalibrasyon kaydi", "olcum ayari"), } ANAHTAR = list(KAVRAM) ORTAK = ["kayit", "bolge", "donem", "islem", "form", "onay", "not"] # ---- KURGU dagarcik BELGE = [] for i in range(200): r = uretec(TOHUM + 7919 * i) s = SINIF[ayrik(r(), [0.22, 0.24, 0.20, 0.18, 0.16])] kav = [k for k in ANAHTAR if KAVRAM[k][0] == s] ana = kav[int(r() * len(kav))] n = 2 + int(r() * 4) par, kavlar = [], [ana] for _ in range(n): y = kav[int(r() * len(kav))] kavlar.append(y) o = ORTAK[int(r() * len(ORTAK))] par.append(f"{KAVRAM[y][1]} icin {o} tutulur ve {KAVRAM[ana][1]} ile birlikte yazilir") BELGE.append({"kod": f"{KOD[s]}{i + 1:03d}", "sinif": s, "ana": ana, "kavram": kavlar, "baslik": f"{KAVRAM[ana][1]} yordami", "par": par}) # ---- KURGU gomme: yuzey once kavrama, kavram sonra boyuta dusuruluyor def _kavramla(m, alan=True): v = [0.0] * len(ANAHTAR) dm = " " + m.lower() + " " for i, k in enumerate(ANAHTAR): bel, sor = KAVRAM[k][1], KAVRAM[k][2] if bel in dm: v[i] += 1.0 if sor in dm: v[i] += 1.0 if alan else 0.0 # alan disi gomme sorgu dilini tanimaz if not alan: for o in ORTAK: if " " + o + " " in dm: for i in range(len(ANAHTAR)): v[i] += 0.05 return v IZDUS = [] for i in range(len(ANAHTAR)): r = uretec(TOHUM ^ (i + 1) * 2654435761) IZDUS.append([r() * 2 - 1 for _ in range(64)]) def gom(m, boyut=BOYUT, alan=True): k = _kavramla(m, alan) v = [0.0] * boyut for i, a in enumerate(k): if a: for j in range(boyut): v[j] += a * IZDUS[i][j % 64] n = sum(x * x for x in v) ** 0.5 return [x / n for x in v] if n else v def aci(a, b): return sum(x * y for x, y in zip(a, b)) # ---- KURGU sorgu kumesi: sorgu dili belge dilinden ayri SORGU = [] for i in range(40): r = uretec(TOHUM + 104729 * i) d = BELGE[int(r() * len(BELGE))] SORGU.append({"metin": f"{KAVRAM[d['ana']][2]} {ORTAK[int(r() * len(ORTAK))]}", "sinif": d["sinif"], "kavram": d["ana"]}) # KURGU tablo kaynagi: her yordam belgesi bir tabloya cevriliyor. # Yordam adi YALNIZ baslikta; satirlar alan adi, zorunluluk ve kaynak tasiyor. TABLO = [] for i, d in enumerate(BELGE): r = uretec(TOHUM + 4093 * (i + 1)) TABLO.append({"kod": d["kod"], "ana": d["ana"], "bas": f"{KAVRAM[d['ana']][1]} yordami tablosu", "sat": [f"{p.split()[3]} | {'evet' if r() < 0.5 else 'hayir'}" f" | {'saha' if r() < 0.5 else 'merkez'}" for p in d["par"]]}) def dizin(kip): ps = [] for t in TABLO: if kip == "satir": ps += [{"kod": t["kod"], "m": s} for s in t["sat"]] elif kip == "blok": ps.append({"kod": t["kod"], "m": t["bas"] + " ; " + " ; ".join(t["sat"])}) elif kip == "satir + baslik": ps += [{"kod": t["kod"], "m": t["bas"] + " ; " + s} for s in t["sat"]] elif kip == "gorsel": ps.append({"kod": t["kod"], "m": ""}) else: ps.append({"kod": t["kod"], "m": t["bas"]}) return ps def olc(kip, k=3): ps = dizin(kip) pv = [gom(p["m"]) for p in ps] anma = cevap = bel = 0 for s in SORGU: v = gom(s["metin"]) ilk = sorted(range(len(ps)), key=lambda i: (-aci(v, pv[i]), i))[:k] y = KAVRAM[s["kavram"]][1] anma += any(y in ps[i]["m"] for i in ilk) cevap += any(y in ps[i]["m"] and " | " in ps[i]["m"] for i in ilk) bel += sum(len(belirtecle(ps[i]["m"])) for i in ilk) n = len(SORGU) return anma / n, cevap / n, len(ps), sum(len(belirtecle(p["m"])) for p in ps), bel / n print("kip anma cevaplanabilir dizin parcasi saklanan bel istek basi bel") for kip in ("satir", "blok", "satir + baslik", "gorsel", "gorsel + betimleme"): a, c, np_, sb, ib = olc(kip) print(f"{kip:<19} {a:>6.4f} {c:>15.4f} {np_:>14} {sb:>13} {ib:>15.1f}")
kip anma cevaplanabilir dizin parcasi saklanan bel istek basi bel satir 0.0000 0.0000 693 3815 17.0 blok 0.9500 0.9500 200 5926 91.6 satir + baslik 0.9500 0.9500 693 9432 41.4 gorsel 0.0000 0.0000 200 0 0.0 gorsel + betimleme 0.9500 0.0000 200 1418 21.6
Bulunan Kaynak, Getirilemeyen Değer
Satır bazlı parçalama en ucuz kiptir: istek başına 17,0 belirteç, dizinde 3815 belirteç. Ve anması 0,0000’dır. Sorgu bir yordam sorar, satırlarda yordam adı geçmez, gömme hiçbir satırı sorguya yakın bulmaz. Kayıp bir sıralama kusuru değildir; aranan yüzey dizine hiç girmemiştir. Aynı parçalama düz metinde çalışıyordu, çünkü orada her cümle konusunu kendi içinde tekrarlıyordu.
Blok bazlı parçalama anmayı 0,9500 yapar ve cevaplanabilirliği de aynı yere getirir: başlık ile satırlar aynı parçadadır. Bedeli istek başına 91,6 belirteçtir, satır bazlının beş katından fazlası. Dizinde saklanan belirteç 3815’ten 5926’ya çıkar, çünkü başlıklar da saklanır.
Satır + başlık kipi ikisinin arasını açar. Anma ve cevaplanabilirlik blokla birebir aynıdır (0,9500), ama istek başına belirteç 41,4‘e iner: getirilen üç parça artık bütün tablo değil, üç satırdır. Bunun bedeli depolamadadır. Başlık her satırda tekrarlandığı için dizinde saklanan belirteç 5926’dan 9432’ye çıkar, yani blok kipinin 1,59 katına. İki bedel ters yönde hareket eder: istek başına giden belirteç düşerken saklanan belirteç yükselir. Hangisinin seçileceği istek sayısına bağlıdır ve bu bir sayı sorusudur, bir üslup sorusu değil.
Son iki satır çok kipli kaynağın kendine özgü kaybını verir. Tablo görüntü olarak geldiğinde ve betimleme yazılmadığında dizinde metin yoktur: anma 0,0000, saklanan belirteç 0. Kaynak dizinde durur ve hiçbir sorguya cevap vermez; erişim uzayında ölü ağırlıktır.
Asıl uyarı beşinci satırdadır. Tek satırlık bir betimleme yazıldığında anma 0,9500’e fırlar, cevaplanabilirlik ise 0,0000’da kalır. Betimleme tablonun ne hakkında olduğunu söyler, içinde ne yazdığını söylemez. Değerlendirme dersinin dört durum tablosuyla okunduğunda bu, doğru parçanın getirildiği ama yanıtın üretilemediği kutudur; tek bir anma sayısına bakan biri bu kipi çalışıyor sanır.
Özet
- Tabloda anlam hücrede değil hücrenin başlıkla ilişkisindedir; satır bazlı parçalama başlığı attığı için anmayı 0,0000’a düşürür ve kayıp sıralamada değil dizindedir.
- Blok bazlı parçalama 0,9500 anma verir ve istek başına 91,6 belirteç götürür; satır + başlık aynı 0,9500’ü istek başına 41,4 belirteçle verir.
- Başlık tekrarının bedeli depolamadadır: saklanan belirteç 5926’dan 9432’ye, blok kipinin 1,59 katına çıkar; iki bedel ters yönde hareket eder.
- Betimlemesiz görüntü kaynağı dizinde metin taşımaz, anması 0,0000’dır ve erişim uzayında ölü ağırlıktır.
- Tek satırlık betimleme anmayı 0,9500 yapar ama cevaplanabilirliği 0,0000’da bırakır: kaynak bulunur, içindeki değer getirilemez.
Kurs Kapanışı
| Ders | Erişimsiz taban | Erişimli | Bedel |
|---|---|---|---|
gommeler/01 — ilk sonucun kavram isabeti |
anahtar sözcük araması 0,0500 | gömme benzerliği 0,5000 (+0,4500) | 8000 karşılaştırma, 240 gömme çağrısı, 6400 saklanan sayı |
gommeler/02 — kavram isabeti, 32 boyut |
alan dışı gömme 0,0500, tabanla birebir aynı | alan içi gömme 0,5000 (+0,4500) | saklanan sayı iki kurulumda da 6400; iki model bandı 0,0250 |
gommeler/03 — ilk sonucun kavram isabeti |
iç çarpım 0,4250 | açı benzerliği 0,5000 (+0,0750) | kırk sorgunun otuzunda ilk üç ayrışıyor; getirilen kümenin ortalaması 64,3 → 54,6 belirteç |
gommeler/04 — tam taramaya karşı anma |
tam tarama 1,0000, 200 karşılaştırma | kovalı dizin sonda 2 ile 0,9600 (−0,0400) | 47,2 karşılaştırma; sonda 1’de anma 0,7000 ve kavram kesinliği 0,4600 → 0,3600 |
gommeler/05 — süzgeçli anma |
süzgeçsiz dizin 0,9600 | dizin içinde süzme, genişlik 1: 0,4750 (−0,4850) | aday 31,2 → 2,8; süzülmüş kümenin tam taraması 18 karşılaştırmayla 1,0000 |
gommeler/06 — belge dili sınıfında ilk sıra |
yalnız gömme 0,5000 | sıra temelli birleştirme 0,4000 (−0,1000) | kod sınıfında 1,0000 → 0,0500; yirminci sıraya kadar anma 0,7122 → 0,7209 |
erisim-hatti/01 — üretim isabeti |
erişimsiz taban 0,1750 | erişimli hat 0,9250 (+0,7500) | 3174 → 5343 belirteç, 120 parça; yanlış parçalı koşum 0,0500 |
erisim-hatti/02 — üretim isabeti |
hazırlıksız tek blok 0,0000, anması 1,0000 | yapıya duyarlı hazırlık 0,9250 (+0,9250) | saklanan parça 1805 → 693; süzgeç 568 kavram bağının 96’sını siliyor |
erisim-hatti/03 — ilişki geçişini bütün taşıyan parça payı |
boyut 8 parçalama 0,0000 | boyut 32 parçalama 0,8557 (+0,8557) | saklanan parça 1538 → 455; boyut 80’de üretim 0,4750 ve isteklerin 0,25’i bağlam sınırını aşıyor |
erisim-hatti/04 — güncel yanıt payı |
on iki dönemde bir yenileme 0,6125 | her dönem yenileme 0,9250 (+0,3125) | gömülen parça 519 → 881; bayat parça payı 0,2562 → 0,0000, yanlış yanıt payı 0,3875 → 0,0750 |
erisim-hatti/05 — kısa yazımda erişim anması |
dönüştürmesiz 0,3750 | genişletme 0,7500 (+0,3750) | sorgu başına bir çağrı, 990–2360 ek belirteç; uzun yazımda 0,5500 → 0,3500 |
erisim-hatti/06 — ilk üçün kesinliği |
tek aşamalı getirme 0,4167 (üretim 0,7500) | 24 adayın yeniden sıralanması 0,9000 (+0,4833, üretim 1,0000) | çağrı 40 → 1000, belirteç 4003 → 37689; 48 adayda anma 1,0000 → 0,9500 |
erisim-hatti/07 — üretim isabeti / anma |
tek parça 0,7750 / 0,7750 | on parça 0,4750 (−0,3000) / 0,9750 | bağlam penceresine 11,3 parça sığıyor; k=13’te kırk sorgunun kırkı da sınırı deliyor |
erisim-hatti/08 — uçtan uca isabet |
erişimsiz taban 0,3750, tamamı şans | üç parça 0,9500 (+0,5750) | 120 parça, 2199 belirteç; beş parçada aynı 0,9500, kusur üretime taşınıyor |
erisim-hatti/09 — bilgi tazeliği |
erişimsiz 0,0000 | erişimli 0,9500 (+0,9500) | 2559 belirteç, 40 erişim adımı; biçim uyumunda 0,0000 → 0,0000 |
erisim-hatti/10 — cevaplanabilirlik |
satır bazlı parçalama 0,0000 | satır + başlık 0,9500 (+0,9500) | istek başına 17,0 → 41,4 belirteç; dizinde saklanan 3815 → 9432 |
Kursun kuralı tabloda satır satır yazılıdır: erişim ile üretim ayrı ölçülür. Erişimsiz taban
sütunundaki sayıların hiçbiri kötü bir modelden gelmiyor; hepsi, cevabın modelin içinde değil
dağarcıkta olmasından geliyor. İki sütunu tek orana indirmek en öğretici satırları görünmez
kılar: erisim-hatti/02’de
hazırlıksız kaynak erişim sütununun en iyisi (anma 1,0000) ve üretim sütununun en
kötüsüdür (0,0000).
İkinci iddia da aynı tablodan okunur: erişim de bozar. gommeler/02‘de alan dışı gömme
getirilen kümede anahtar sözcük tabanının altına düşer. gommeler/04‘te sonda 1’de anma 0,7000’e,
ilk beşin kavram kesinliği 0,4600’den 0,3600’e iner. gommeler/05‘te dar süzgeçte dizin 18,8 karşılaştırmayla 0,4750
verirken süzülmüş kümenin tam taraması 18 karşılaştırmayla 1,0000 verir. gommeler/06‘da
birleştirme belge dili sınıfında ikisinden de kötüdür ve kod sınıfında 1,0000’i 0,0500’e
indirir. erisim-hatti/01‘de yanlış parçalı koşum üretimi erişimsiz tabanın altına düşürür.
erisim-hatti/03‘te parça boyutunu 80’e çıkarmak ilişki geçişini 0,9784’e taşırken üretimi
0,4750‘ye düşürür, çünkü isteklerin dörtte biri bağlam sınırını aşar. erisim-hatti/04‘te
yenileme aralığını uzatmak erişim sütununu hiç oynatmaz ve bozulmanın tamamı üretim
sütununda kalır: güncel yanıt payı 0,9250’den 0,6125’e iner. erisim-hatti/05‘te uzun yazımda
dönüştürme tabanı 0,5500’den 0,3500’e götürür. erisim-hatti/06‘da aday sayısını 24’ten 48’e
çıkarmak kesinliğe ölçülemez bir 0,0083 katarken anmayı 1,0000’den 0,9500’e indirir ve belirteci
neredeyse ikiye katlar. erisim-hatti/07‘de on parça getirmek anmayı 0,9750’ye çıkarırken
üretimi 0,4750‘ye düşürür — getirilen doğru, kullanılan yanlıştır. erisim-hatti/08‘de
beş parçaya çıkmak anmayı 1,0000 yapar, uçtan uca sayıyı hiç değiştirmez ve belirteci 2199’dan
3505’e çıkarır. erisim-hatti/09‘da biçim uyumunda erişim 0,0000’dan 0,0000’a hiçbir şey katmaz.
Ve bu derste betimlemeli görsel kaynak anmayı 0,9500 yaparken cevaplanabilirliği 0,0000’da bırakır:
iyileşen sayı, iyileşmeyen iş.
On altı derste modele hangi bilginin gireceği ölçüldü. Ama bu seçimi hep biz yaptık: kaç parça getirileceği, hangi ölçütle sıralanacağı, sorgunun dönüştürülüp dönüştürülmeyeceği ve bağlamın nasıl kurulacağı hattın içine elle yazıldı. Hat da tek geçişliydi: sorgu girdi, parça geldi, yanıt çıktı. Modelin hangi aracı çağıracağına kendi karar verdiği, sonucu yetersiz bulup yeniden denediği ve bu döngünün nerede duracağı bir kez bile sorulmadı. Sonraki kurs bu döngüyü kurar ve durma koşulunu bir ölçüm nesnesine dönüştürür.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.