İçeriğe geç
academia.sh

Ders 08 / 15

Yapı ve Başlıklandırma

Başlık düzeni okurun sorusuyla yanıtı arasındaki mesafeyi ölçer; otuz altı ziyarette başlıksız metin ortalama 26,38 adım isterken tür başlıklı 7,29, iki düzeyli 7,00 ister ve iki düzeyli düzen bu kazanç için altıncı sürümde 24 sessiz bayat başlık taşır.

İçindekiler

Önceki ders okur tanımını yazdı ve tam tanımla yeni okurun 56 iddianın hepsini çözebildiğini ölçtü. Çözebilmek erişebilmek değildir. Okur dokümanı baştan sona okumaz; gelirken bir sorusu vardır ve o soruyu yanıtlayan cümleyi arar.

Bu dersin sorusu aramanın maliyetidir: okurun sorusu ile onu yanıtlayan iddia arasında kaç adım vardır ve başlık düzeni bu mesafeyi ne kadar kısaltır? İkinci bir soru da bununla birlikte gelir ve kursun eksenine bağlıdır: başlığın kendisi de bir cümledir, o hâlde o da bayatlar mı?

Okur Okumaz, Tarar

Teknik metnin okuru edebiyat metninin okuru değildir. Elinde bir iş vardır, o işin ortasında durmuştur ve metne bir soruyla gelir. Metni baştan okumaya karar vermesi ender bir durumdur; olağan olan taramadır. Göz başlıktan başlığa atlar, bir tanesi soruya benzerse durur, altını okur, benzemiyorsa devam eder.

Taranabilir metin bu davranışa göre kurulmuş metindir. Taranabilirliğin ölçüsü estetik değildir; okurun aradığı cümleye ulaşana kadar okumak zorunda kaldığı birim sayısıdır. Bu sayı ölçülebilir, çünkü hem başlıklar hem iddialar sayılabilir birimlerdir.

Ölçünün tanımı şudur: bir başlığı okuyup “bu benim sorum değil” demek bir adımdır; bir iddiayı okuyup “bu benim yanıtım değil” demek de bir adımdır. İki iş de okurun dikkatini aynı ölçüde harcar. Bu eşitleme kaba görünebilir, ama başlıklandırmanın ne kazandırdığını görmenin tek yolu ikisini aynı birime çevirmektir.

Bölümlendirmenin Ekseni

Bir dokümanı bölümlere ayırmanın birden çok ekseni vardır ve seçilen eksen aramanın maliyetini belirler. Kursun ilk konusu bir ekseni zaten verdi: tür. İkinci bir eksen ürünün kendisinden gelir: konu. Üçüncü seçenek ikisini iç içe koymaktır.

# ornek baslik duzeni , calistirilmamistir

tür başlıklı        konu başlıklı        tür + konu
  Öğretici            Kurulum              Öğretici
  Nasıl Yapılır       Ölçüm Başlatma         Kurulum
  Açıklama            Çıktı Biçimi           Ölçüm Başlatma
  Referans            Yetki                  Çıktı Biçimi
                      Hata                   ...
                      Ayarlar              Nasıl Yapılır
                                             Kurulum
                                             ...

Okur bu iki ekseni farklı güvenle kullanır. Türü sorunun biçiminden çıkarır: “nereden başlarım” diyen okur öğreticiyi arar, “bu alanın tipi ne” diyen referansı. Konuyu ise zaten bilir; okur işinin ortasındadır ve hangi konuda takıldığının farkındadır. İki eksen de okur için erişilebilir olduğu için ikisi de bölümlendirmeye elverişlidir.

Bölümlendirmeme de bir seçimdir. Başlıksız metin tek bir akıştır ve okurun tek yolu baştan taramaktır. Ölçüm bu seçeneği de dördüncü satır olarak taşır, çünkü kıyas noktasıdır.

Ölçümün varsayımları:

  • YD11 — 56 iddia ortak kurgudan gelir: dört tür, dört yüzey, 17 çalıştırılabilir örneğe gömülü iddia. Kâhin kurgunun kendisidir.
  • YD12 — Bu dersin eklediği tek şey her iddianın konusudur; konu altı başlıktan kurgu üreticiyle seçilir ve iddianın türüne bakmaz.
  • YD13 — Okur ziyareti bir soru–konu çiftidir. Altı okur sorusu ile altı konunun bütün bileşimleri denenir: 36 ziyaret. Sorular ortak tanımdan gelir ve ikisi hiçbir türe düşmez.
  • YD14 — Bir başlığı okumak bir adımdır, bir iddiayı okumak bir adımdır. Okur eşleşen başlığa gelene kadar başlıkları sırayla okur; eşleşen bölümün iddialarını da sırayla okur.
  • YD15 — Okur türü sorusundan, konuyu kendi durumundan doğru çıkarır. Ölçüm bir anlama ölçümü değil, bir mesafe ölçümüdür.
  • YD16 — Yanıt bulunamazsa okur bütün başlıkları ve bütün iddiaları taramış sayılır; bulunamayan ziyaretin maliyeti düzenin toplam birim sayısıdır.
  • YD17 — Başlığın kendisi bir iddiadır ve bir yüzeye bağlanır: tür adları kavrama, konu adları ada. Başlık çalıştırılabilir örneğe gömülemez; bu yüzden bayatlayan her başlık sessizdir.

Ölçüm

"""Baslik duzeni: okurun sorusuna kac adimda ulasiliyor.

Bolum 1 - iddialarin konulara dagilimi ve 36 okur ziyareti.
Bolum 2 - dort baslik duzeninde adim sayisi ve bulunamayanin ayrimi.
Bolum 3 - baslik da bir iddiadir: baslik kumesinin dogru/bayat/sessiz tablosu.
"""
TOHUM = 20260816
TURLER = {
    "öğretici": {"akis": 9, "imza": 3, "ad": 2, "kavram": 1},
    "nasıl yapılır": {"akis": 6, "imza": 5, "ad": 2, "kavram": 1},
    "açıklama": {"akis": 1, "imza": 1, "ad": 1, "kavram": 9},
    "referans": {"akis": 0, "imza": 13, "ad": 2, "kavram": 0},
}
SIKLIK = {"imza": 2, "akis": 3, "ad": 5, "kavram": 12}
ORNEKLI = {"öğretici": 0.60, "nasıl yapılır": 0.70, "açıklama": 0.10, "referans": 0.00}
SORULAR = {"nereden başlarım": "öğretici", "şunu nasıl yaparım": "nasıl yapılır",
           "bu neden böyle": "açıklama", "bu alanın tipi ne": "referans",
           "hangi sürümde değişti": None, "bu neden çalışmıyor": None}
KONULAR = ("kurulum", "ölçüm başlatma", "çıktı biçimi", "yetki", "hata", "ayarlar")
SURUMLER = (0, 1, 2, 3, 6, 12)
# Başlığın kendisi de bir iddiadır ve bağlandığı yüzeye göre bayatlar.
BASLIK = {"başlıksız": {}, "tür başlıklı": {"kavram": 4},
          "konu başlıklı": {"ad": 6}, "tür + konu": {"kavram": 4, "ad": 24}}


def uretec(tohum):
    d = tohum % 2147483646 + 1

    def r(n):
        nonlocal d
        d = (d * 48271) % 2147483647
        return d % n
    return r


def iddialar():
    liste, no = [], 0
    for tur, dagilim in TURLER.items():
        hedef = 0
        for yuzey, adet in dagilim.items():
            for _ in range(adet):
                no += 1
                hedef += ORNEKLI[tur]
                gomulu = hedef >= 1 and yuzey != "kavram"
                if gomulu:
                    hedef -= 1
                liste.append({"no": no, "tur": tur, "yuzey": yuzey,
                              "gomulu": gomulu})
    return liste


def konu_ata(liste, tohum=TOHUM):
    """Bu dersin eklediği tek şey: her iddianın konusu."""
    r = uretec(tohum)
    for i in liste:
        i["konu"] = KONULAR[r(len(KONULAR))]
    return liste


def bayat_mi(yuzey, surum):
    return surum // SIKLIK[yuzey] >= 1


A = konu_ata(iddialar())
ZIYARET = [(s, k) for s in SORULAR for k in KONULAR]
BOLUM = {"başlıksız": ([None], [None]), "tür başlıklı": (list(TURLER), [None]),
         "konu başlıklı": ([None], list(KONULAR)),
         "tür + konu": (list(TURLER), list(KONULAR))}


def ara(ziyaret, duzen):
    """Başlık okumak da iddia okumak da bir adımdır; bulunamayınca her şey taranır."""
    soru, konu = ziyaret
    tur, adim = SORULAR[soru], 0
    ust, alt = BOLUM[duzen]
    for u in ust:
        if u:
            adim += 1
            if u != tur:
                continue
        for a in alt:
            if a:
                adim += 1
                if a != konu:
                    continue
            for i in A:
                if (u and i["tur"] != u) or (a and i["konu"] != a):
                    continue
                adim += 1
                if i["tur"] == tur and i["konu"] == konu:
                    return adim, True
    return sum(BASLIK[duzen].values()) + len(A), False


print(f"iddia {len(A)} | konu {len(KONULAR)} | okur ziyareti {len(ZIYARET)}")
print("konu dağılımı: " + ", ".join(
    f"{k} {sum(i['konu'] == k for i in A)}" for k in KONULAR))
bosluk = [z for z in ZIYARET if SORULAR[z[0]] and not any(
    i["tur"] == SORULAR[z[0]] and i["konu"] == z[1] for i in A)]
print(f"bir türe düşen ziyaret {sum(1 for s, _ in ZIYARET if SORULAR[s])} | "
      f"hiçbir türe düşmeyen {sum(1 for s, _ in ZIYARET if not SORULAR[s])} | "
      f"türü var ama karşılığı yazılmamış {len(bosluk)}")
print("kapsam boşlukları:", [(SORULAR[s], k) for s, k in bosluk])
print()
print(f"{'başlık düzeni':>14s} {'başlık':>7s} {'ortalama adım':>14s} {'en kötü':>8s}"
      f" {'bulunan':>8s} {'bulunamayan':>12s}")
for duzen in BASLIK:
    sonuc = [ara(z, duzen) for z in ZIYARET]
    bulunan = [a for a, b in sonuc if b]
    print(f"{duzen:>14s} {sum(BASLIK[duzen].values()):7d}"
          f" {sum(bulunan) / len(bulunan):14.2f} {max(bulunan):8d}"
          f" {len(bulunan):8d} {len(sonuc) - len(bulunan):12d}")
print()
print("başlık iddiaları — doğru/bayat/sessiz")
print(f"{'başlık düzeni':>14s}" + "".join(f" {'sürüm ' + str(s):>8s}"
                                          for s in SURUMLER))
for duzen, dagilim in BASLIK.items():
    toplam, satir = sum(dagilim.values()), f"{duzen:>14s}"
    for s in SURUMLER:
        bayat = sum(n for y, n in dagilim.items() if bayat_mi(y, s))
        satir += f" {f'{toplam - bayat}/{bayat}/{bayat}':>8s}"
    print(satir)
iddia 56 | konu 6 | okur ziyareti 36
konu dağılımı: kurulum 13, ölçüm başlatma 8, çıktı biçimi 11, yetki 10, hata 7, ayarlar 7
bir türe düşen ziyaret 24 | hiçbir türe düşmeyen 12 | türü var ama karşılığı yazılmamış 3
kapsam boşlukları: [('öğretici', 'ölçüm başlatma'), ('nasıl yapılır', 'ayarlar'), ('referans', 'çıktı biçimi')]

 başlık düzeni  başlık  ortalama adım  en kötü  bulunan  bulunamayan
     başlıksız       0          26.38       56       21           15
  tür başlıklı       4           7.29       19       21           15
 konu başlıklı       6           7.90       14       21           15
    tür + konu      28           7.00       11       21           15

başlık iddiaları — doğru/bayat/sessiz
 başlık düzeni  sürüm 0  sürüm 1  sürüm 2  sürüm 3  sürüm 6 sürüm 12
     başlıksız    0/0/0    0/0/0    0/0/0    0/0/0    0/0/0    0/0/0
  tür başlıklı    4/0/0    4/0/0    4/0/0    4/0/0    4/0/0    0/4/4
 konu başlıklı    6/0/0    6/0/0    6/0/0    6/0/0    0/6/6    0/6/6
    tür + konu   28/0/0   28/0/0   28/0/0   28/0/0  4/24/24  0/28/28

Başlığın Kısalttığı

İlk tablonun en büyük farkı ilk satırla ikinci satır arasındadır. Başlıksız metinde okur aradığı iddiaya ortalama 26,38 adımda ulaşıyor; en kötü durumda 56 birim, yani dokümanın tamamını okuyor. Dört başlık eklendiğinde ortalama 7,29’a iniyor. Dört satır yazmak arama maliyetini dörtte bire indiriyor.

İkinci fark çok daha küçüktür ve dersin asıl bulgusu odur. Altı konu başlığı 7,90 veriyor — dört tür başlığından daha kötü. İki ekseni iç içe koyan düzen 7,00 veriyor, yani tür başlıklı düzenden yalnız 0,29 adım daha iyi. Yirmi sekiz başlık, dört başlığın verdiğinin üstüne çeyrek adım koyuyor.

Neden bu kadar az? Çünkü bir bölümün içindeki tarama zaten kısadır. Dört tür 56 iddiayı 15, 14, 12 ve 15’lik gruplara böler; ikinci bir eksen bu gruplardan birini ortalama iki üç iddiaya indirir, ama okur o gruba gelene kadar altı alt başlık daha okumuştur. Kazanılan tarama, ödenen başlık okumasıyla neredeyse tam olarak takas edilir.

En kötü durum sütunu farklı bir şey söylüyor: 56 / 19 / 14 / 11. Derinleşen düzen ortalamayı kıpırdatmıyor ama en kötü durumu düzeltiyor. Bölümlendirme derinliği ortalama okur için değil, en talihsiz okur için alınmış bir karardır.

Bu satırlar ikinci bir kaldıraca da işaret ediyor. Tür başlıklı düzende başlık okuması en çok dört adımdır; ortalamanın geri kalanı bölüm içindeki taramadır. Öyleyse bir bölümün iç sırası, başlık sayısı kadar belirleyicidir. Sık sorulan iddiayı bölümün başına almak, yeni bir başlık düzeyi açmadan aynı işi görür. İki türün geleneksel olarak farklı sıralanması buradan gelir: öğretici yapılış sırasına göre dizilir çünkü okur adımları sırayla uygular; referans ada göre dizilir çünkü okur aradığı adı bilir ve sıralamayı bir dizin gibi kullanır. İki sıralama da aynı soruyu yanıtlar — okur bir sonraki birime nasıl karar verecek?

Bulunamayan On Beş Ziyaret

Otuz altı ziyaretin 15’i dört düzenin hiçbirinde yanıt bulmuyor ve bu sayı düzenden düzene değişmiyor. Başlıklandırma bir metnin içinde olmayanı bulunur yapamaz. On beş başarısızlık iki ayrı kusurdan geliyor ve karıştırılmaları pahalıdır.

Birincisi 12 ziyaret: “hangi sürümde değişti” ve “bu neden çalışmıyor” soruları hiçbir türe düşmez. Bu bir yazım kusuru değil, ortak tanımın ilan ettiği taksonominin sınırıdır; kursun sürüm notu ve sorun giderme dersleri bu iki soruyu ayrı türler olarak kurar. Bu ziyaretler için yapılacak şey başlık eklemek değil, eksik türü yazmaktır.

İkincisi 3 ziyaret: soru bir türe düşüyor ama o türde o konuya ait tek bir iddia bile yazılmamış. Ölçüm bunları tek tek adlandırıyor — öğreticide ölçüm başlatma, nasıl yapılırda ayarlar, referansta çıktı biçimi. Bu bir kapsam boşluğudur ve doğrudan bir yazma listesidir. Başlık düzeni bu boşlukları görünür kılar; başlıksız metinde aynı boşluk okurun 56 birimi taradıktan sonra vardığı sessiz bir sonuçtur.

Bulunamayan ziyaretin maliyeti düzen derinleştikçe artar: başlıksız metinde 56 birim, iki düzeyli düzende 84 birim taranır. Derin düzen bulunanı hızlandırırken bulunamayanı pahalılaştırır. Bir dokümanda kapsam boşluğu çoksa derinleştirme yanlış yatırımdır.

Başlık da Bir İddiadır

Alt tablo başlıkları kursun kendi eksenine sokuyor. Başlık bir cümledir ve bir yüzeye bağlanır. Tür adları kavrama bağlıdır: öğretici, nasıl yapılır, açıklama ve referans ürünün adlandırmasından bağımsızdır ve on ikinci sürüme kadar doğru kalır — tabloda dört başlık 4/0/0 ile ilerler ve ancak sürüm 12’de 0/4/4 olur.

Konu adları ada bağlıdır ve ad beş sürümde bir değişir. Altı konu başlığı altıncı sürümde 0/6/6 verir. İki düzeyli düzen ikisini birden taşır: sürüm 6’da 4/24/24, sürüm 12’de 0/28/28. Bir ürün özelliğinin adı değiştiğinde o adı taşıyan yirmi dört alt başlık aynı anda yanlışlaşır.

Üçüncü sütun bu tablonun asıl haberidir: bayat başlıkların hepsi sessizdir. Başlık bir çalıştırılabilir örneğe gömülemez; hiçbir sınama bir başlığın artık var olmayan bir şeyi adlandırdığını bildirmez. Doküman kurulur, sayfa açılır, başlık görünür ve yanlıştır.

Karar bu iki tabloyu birlikte okuyunca çıkar. İki düzeyli düzen ortalamada 0,29 adım kazandırıyor ve karşılığında altıncı sürümde 24 sessiz bayat başlık taşıyor. En kötü durumu 19’dan 11’e indirmesi gerçek bir kazançtır, ama bedeli bir bakım borcudur. Derinleştirmenin gerekçesi ortalama olamaz; ancak en kötü durum ya da kapsam boşluğunun görünürlüğü olabilir.

Özet

  • Taranabilir metnin ölçüsü estetik değil, okurun sorusuna ulaşana kadar okuduğu birim sayısıdır; başlık okumak ile iddia okumak aynı birime çevrilir.
  • Başlıksız metin ortalama 26,38, dört tür başlığı 7,29, altı konu başlığı 7,90, iki düzeyli düzen 7,00 adım ister. İlk dört başlık maliyeti dörtte bire indirir; yirmi dört alt başlık yalnız 0,29 adım ekler.
  • En kötü durum 56 / 19 / 14 / 11 olarak iner: derinleştirme ortalama okur için değil, en talihsiz okur için alınan bir karardır.
  • Otuz altı ziyaretin 15’i hiçbir düzende yanıt bulmaz; 12’si taksonominin sınırı, 3’ü kapsam boşluğudur. Başlık düzeni boşluğu görünür kılar, kapatmaz; bulunamayan ziyaretin maliyeti derin düzende 56’dan 84 birime çıkar.
  • Başlık bir iddiadır: tür adları kavrama, konu adları ada bağlıdır ve iki düzeyli düzen altıncı sürümde 24 sessiz bayat başlık taşır — hiçbir başlık örneğe gömülemediği için başlık bayatlaması her zaman sessizdir.

Sonraki Adım

Buradaki bütün ölçüm tek bir sessiz varsayıma yaslanıyor: okur kendi sorusundaki sözcük ile başlıktaki sözcüğü eşleştirebiliyor. Konu başlığı “yetki” diyorsa ve okur aynı şeye “izin” diyorsa arama daha ilk adımda kırılır — okur eşleşmeyi kaçırır, yanlış bölüme girer ya da metinde iki ayrı şey olduğunu sanır. Sonraki ders bu eşleşmeyi ölçer: aynı kavramın iki adla anılması okurun bulabildiği iddia sayısını ne kadar düşürür, ve bir stil rehberinin her kuralı tam olarak neyi ölçer.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat