5  Veri, Etiketleme ve Referans Etiketler

Bölüm durumu: çevrildi. Deneyler, 4. bölümdeki Türkçe ürün yorumu derlemi ve oradaki 40.000/10.000 eğitim/test bölmesi üzerinde yapıldı (Bölüm 4); bazı deneylerde eğitim altkümesinin boyutu ya da etiketleri değiştirildi. Hesaplar Python 3.12.13 üzerinde scikit-learn 1.9.0, NumPy 2.5.2 ve pandas 3.0.5 ile yapıldı. İki sonuç elle denetime dayanıyor: tek bir kişi, okumaya başlamadan önce yazılmış ölçütlerle, rastgele seçilmiş 100 test yorumunu ve modelin en güçlü biçimde itiraz ettiği 40 ayrı test yorumunu okudu. Bu sayımlar o okurun yorumuna dayanır ve ikinci bir insan etiketleyiciyle doğrulanmadı.

Öğrenme hedefleri. Bu bölümün sonunda:

5.1 Şimdiye kadar güvendiğiniz sayı

Bölüm 4’ün 2. rauntu yedi temsili tek bir tabloda sıralamıştı. Kelime 1–2 gram’ları üzerindeki TF-IDF, dengelenmiş bir lojistik regresyona verildiğinde %92,57 doğruluk ve 76,21 macro-F1 almıştı. Bag of words 73,51 almıştı. Ortalaması alınmış word2vec embedding’leri (gömme) 61,39. Bölümün sonucu şuydu: o veride ve o ayarlarda seyrek temsiller, sıfırdan eğitilmiş ortalama embedding’lerin açık farkla önündeydi ve bu fark test kümesinin örnekleme belirsizliğinden çok büyüktü. Yakın satırların sırası ise ayar bütçesine duyarlıydı: ham sayım ile TF-IDF’in sırası C doğrulamada seçilince değişti. Bu yüzden önce güçlü bir seyrek baseline (karşılaştırma modeli) denemek iyi bir başlangıçtır; yöntemler hakkında genel bir üstünlük iddiası ise yeni veri ve yeni bir belirsizlik analizi ister.

gold standard (altın standart) — bir model puanlanırken doğru kabul edilen etiketler. Bu etiketler uzlaştırmayla, uzman kararıyla ya da belgelenmiş başka bir süreçle oluşturulabilir. Referans sayılmaları hatasız oldukları anlamına gelmez; kökenleri ve içerdikleri uyuşmazlıklar ayrıca incelenmelidir. ↩︎

O sayıların her biri, modelin çıktısı sentiment adlı bir sütunla karşılaştırılarak hesaplandı. Bu sütundaki etiketlere bölüm boyunca referans etiket diyeceğiz: değerlendirmede başvuru noktasıdır, metnin tartışmasız tek yorumu olduğu iddiası değildir. Gold standard ve ground truth terimleri de aynı işlevi anlatır. Etiketleri kimin, hangi soruya cevap olarak ve nasıl ürettiği ise belgelenmemiş; önceki bölümde bunu bir kez bile sormadık.

Bu bölüm soruyor. Deneylerin bir kısmında 4. bölümün en yüksek skorlu temsilini, sınıflandırıcıyı ve test yorumlarını sabit tutup yalnızca eğitim ya da test etiketlerini değiştiriyoruz. Başka deneylerde etiketli eğitim miktarı, örnek seçimi ya da bölme düzeni de değişiyor; her tabloda hangi bileşenin sabit kaldığını ayrıca belirteceğiz. Böylece bir skor değişimini yalnızca o tablonun kontrollü karşılaştırması içinde yorumlayabiliriz.

Ortaya çıkan sonuç rahatsız edici. Test etiketlerindeki %2’lik bir hata oranı, tablonun birincisini bag-of-words rakibinin özgün etiketlerle aldığı skorun altına düşürüyor — model değiştiği için değil, skorun hesaplandığı etiketler değiştiği için. Bu karşılaştırmanın biçimine dikkat edin, çünkü doğru okuma bu: ortak bir test kümesinde sıralamanın tersine dönmesi değil, test etiketleri farklı olan iki koşulun karşılaştırılması. İki modeli aynı gürültülü etiketlerle puanlamak başka bir soru; onu da ölçtük: aralarındaki 2,69 puanlık fark %2 gürültüde ortalama 2,50’ye iniyor ve 200 çekimin hiçbirinde sıra değişmiyor. Modelin en güçlü biçimde itiraz ettiği 40 seçilmiş test yorumunun 20’si, tek bir ikili etiketle anlatılması güç metinler olarak sınıflandırıldı; bu oran veri kümesinin bütününe taşınamaz. Ve 1.000 temiz etiket, %10 gürültülü 40.000 etiketle başa baş gidiyor; %20 gürültüde ise 500 temiz etiket bile 40.000’i geçiyor.

Derlem 4. bölümdekiyle aynı (Bölüm 4): 235.165 Türkçe ürün yorumu; etiketlerin yaklaşık %93,7’si olumlu. Bu dengesizlik sonuçların birçoğunu güçlü biçimde etkiliyor; şema, model ve örnekleme kararları da sonuçların birer parçası.

Neye bakacağız. Önce etiketlerin hangi adımlardan geçerek üretildiğini ve rastgele yüz yorumluk bir el denetimini inceleyeceğiz. Sonra etiketleyici uyumunu, şemanın sınırlarını, etiket gürültüsünü ve bölmeler arası sızıntıyı ayrı deneylerle değerlendireceğiz. Son kısımlarda etiketleme bütçesini ve elle etiketlemenin alternatiflerini ele alacağız.

5.2 Bir etiket gerçekte nereden gelir

Etiketler kendiliğinden oluşmaz. Önce kategoriler ve karar kuralları belirlenir; sonra metinler seçilir, etiketleyiciler karar verir ve uyuşmazlıklar birleştirilir. Her adımda etiketin anlamı sizin sandığınızdan uzaklaşabilir; adımların kaydı tutulmamışsa son etiketi hangi kararın ürettiği de anlaşılamaz.

Bir etiket hangi adımlardan geçer ve nerede bozulabilir
pipeline ham metin kazınmış ya da kaydedilmiş şema sınıflar ne kılavuz nasıl karar verilir etiketleyici okur, tuşa basar saklanan etiket tek bir sütun burada olası sorun seçilim yorum yazanlar ≠ satın alanlar %93,7 olumlu şema boşluğu sınıfların ifade edemediği metinler 40 yorumda 20 belirsizlik kılavuz burada sessiz kalıyor insan–insan κ burada ölçülmedi açık etiket hatası olası: yorgunluk, yanlış okuma/tuş 40 yorumda 11 çöküş uyuşmazlık kaydı saklanmıyor geriye 1 sütun

Saklanan etiket, metnin seçilmesinden uyuşmazlıkların birleştirilmesine kadar verilen kararları tek bir sütunda toplar; eğitim koşunuz, sıralama tablonuz ve üretimdeki izlemeniz yalnızca o sütunu görür. Şekildeki 20/40 ve 11/40, yalnızca modelin en güçlü biçimde itiraz ettiği 40 test yorumunun tek okuyucuyla yapılan denetimine aittir; diğer aşamalardaki sorunların sıklığı bu bölümde ölçülmedi.

Dikkat edilecek yer son kutu. Bir veri kümesi yalnızca metin ve label sütunlarıyla dağıtıldığında, etiketleyici kararlarının geçmişi görünmez olur: uyuşmazlıklar, zor vakalar ve atlanan örnekler tek bir tam sayıya iner. Uyuşmazlıkları, zor vakaları, atlanan örnekleri ve uzlaştırma kararlarını ayrıca saklamak — ek sütunlarla, yargı dökümüyle ya da bir datasheet ile — tek bir tam sayıdan çok daha denetlenebilir bir veri kümesi üretir.

5.2.1 Bir veri kümesini kullanmadan önce sorulacak sorular

Modellemeye başlamadan önce aşağıdaki altı soruyu cevaplamaya çalışın. Kaynakta bulunmayan bilgileri “belgelenmemiş” diye kaydedin ve bu belirsizliğin kullanım kararınıza etkisini ayrıca değerlendirin.

  1. Metni kim üretti? “İnternet” değil. Hangi platform, hangi kitle, hangi zaman aralığı. Yorum derlemi, alışverişten sonra yorum yazmayı seçen insanların metinlerinden oluşur; bu kitle, satın alan insanlarla aynı değildir.
  2. Etiketleri kim, nasıl üretti? Alan uzmanları, crowdworker’lar (kitle kaynaklı etiketleme çalışanları), bir model ya da platformun yıldız puanı olabilir. Yıldız puanından duygu sınıfı türetmek bir vekil etiketleme kararıdır: puanlama ölçeğinin kendi yanlılıklarını taşır ve yıldızın hedeflediğiniz duygu sorusuyla ne kadar örtüştüğü sınanmalıdır. Kitle kaynaklı etiketler uzman etiketlerinden kendiliğinden daha kötü değildir: Snow vd. (2008), bazı görevlerde uzman olmayan birkaç kişinin birleştirilmiş kararlarının uzman kalitesine ulaşabildiğini gösterdi. Bu sonuç her görev ve her birleştirme yöntemi için garanti değildir; görevin uzman olmayan birinin cevaplayabileceği türden olmasına bağlıdır.
  3. Hangi soruyu cevaplıyorlardı? “Bu yorum olumlu mu?”, “Bu ürünü alır mıydınız?” ve “Bu müşteri memnun mu?” soruları aynı metin üzerinde farklı etiketler üretir.
  4. Lisansı ne ve sizin kullanımınızı kapsıyor mu? “Yalnızca araştırma için” gerçek bir kısıttır. Metnin yeniden dağıtılmasına izin veren ama ondan türetilmiş modellerin dağıtılmasına izin vermeyen bir lisans da öyle.
  5. Kullanım için hangi hukuki dayanak ve hangi bildirim vardı? Bir yorumu herkesin okuyabilmesi, model eğitimine açık rıza verildiğini göstermez. Platformun kullanım koşullarını, verinin işlenme amacını ve uygulanabilecek hukuki dayanağı ayrıca inceleyin.
  6. Ne eksik? Hangi metinler silindi, filtrelendi ya da hiç yazılmadı; bu hangi grupları etkiliyor? En zor soru bu, ama cevaplamayı denemeye en çok değen de bu. Dodge vd. (2021) bunu, alanın en çok kullanılan web derlemlerinden biri olan C4 için yaptı ve derlemi “temizlemek” için kullanılan yasaklı kelime listesinin, azınlık grupları hakkındaki ve bu grupların yazdığı metinleri orantısız biçimde dışarıda bıraktığını gösterdi. Bu tür bir seçilim, dağıtılan veriye bakarak tek başına görülemez; toplama ve filtreleme kararlarının kaydı gerekir.

Bütün bunlardan önce gelen bir soru var ve bu soru bir projeyi başlarken değil, yayına alındıktan sonra durdurabilir: bu veriyi kullanmaya gerçekten izniniz var mı?

Halka açık, serbest kullanım demek değildir. “İndirebildim” ile “üzerinde eğitim yapmama izin var” farklı iddialardır. Bir içeriğe erişebilmek, onu yeniden dağıtma ya da model eğitiminde kullanma izninin belgelendiği anlamına gelmez. Web’den kazınmış derlemler sık sık hiçbir lisans taşımaz. Kaynağın lisansını, platformun koşullarını ve içerik üzerindeki hakları kendi kullanım amacınız için ayrıca inceleyin.

Veri lisansının modele etkisini ayrıca değerlendirin. CC BY-NC-SA gibi bir lisansın eğitim, model dağıtımı ya da üretilen çıktılar bakımından hangi yükümlülükleri doğurduğu, otomatik bir “lisans geçişi” kuralıyla belirlenmez; hangi hukuk düzenine tabi olduğunuza ve modelin veriyi ne kadar ezberlediğine bağlı olarak değişebilir. Bu, oturmamış bir hukuk alanı. Lisans metnini, kullanım biçiminizi ve ilgili hukuk düzenini somut durumunuz için inceleyin ve yayına aldığınız her şeyde temkinli davranın.

Provenance’ı (kaynak geçmişi) belgeleyin. En azından şunları kaydedin: kaynak URL’si, erişim ve indirme tarihi, lisans metni, veri sürümü ya da dosya özeti (hash), uyguladığınız filtrelerin tam hâli ve bölme kararları. Longpre vd. (2024) 1.800’den fazla popüler metin veri kümesini denetledi ve büyük bir kısmında lisans bilgisinin eksik ya da yanlış olduğunu buldu — üretimde kullanılan veri kümeleri dâhil. İndirirken kaydetmediğiniz bilgiyi sonradan yeniden kurmak güçleşir.

Kişisel veriyi ve veri yönetişimini ayrıca değerlendirin. Bir yorum yazarını doğrudan ya da dolaylı olarak tanımlanabilir kılıyorsa, telifin yanında bir kişisel veri rejimi de gündeme gelir. Açık rıza tek hukuki dayanak değildir: KVKK’nın 5(2)(d) maddesi, ilgili kişinin kendisinin alenileştirdiği veriyi işlemeye izin verir. Ama bu dayanak dar yorumlanır ve kişinin veriyi alenileştirme amacıyla sınırlıdır; diğer alıcıları bilgilendirmek için yazılmış bir yorum kendiliğinden model eğitimi malzemesine dönüşmez. Silme talepleri — Türkiye’de KVKK’nın 7. ve 11. maddeleri, AB’de GDPR’ın 17. maddesi — bu maddelerdeki koşullar ve istisnalar içinde değerlendirilir; “zaten onunla eğittim” tek başına bir cevap değildir. Bir talebi yerine getirebilmek için satır kimliği–kaynak eşleşmesine ihtiyacınız olur; bu eşleşmenin kendisi de kişisel veri yükü taşıyabileceği için onu gerektiği süre kadar ve güvenlik önlemleriyle saklayın. Kurduğunuz sistem AB Yapay Zekâ Yasası kapsamında yüksek riskli ise, Yasa’nın 10. maddesindeki eğitim, doğrulama ve test verisi yönetişimi yükümlülüklerini de kontrol edin: belgelenmiş kaynak geçmişi, yanlılık incelemesi ve beyan edilmiş bir veri yönetişimi süreci. Yükümlülükler ve uygulama tarihleri için bkz. Bölüm 38.1.

5.3 Yüz satır okuyun. Kendiniz.

Bir veri projesinin başında rastgele seçilmiş bir örneklemi elle okumak, rastgele örneklem çekmek dışında kod gerektirmeyen yararlı bir denetimdir. Buna zaman ayırın: test kümenizden 100 satır çekin, her satırı etiketiyle birlikte okuyun; gördüğünüz belirsizlikleri ve açık etiket çelişkilerini ayrı ayrı kaydedin.

10.000 satırlık test bölmesinden seed 42 ile 100 satır çektim (np.random.default_rng(42).choice(10000, 100, replace=False)) ve hepsini okudum. Ölçütler okumadan önce sabitlenmişti:

  • hata — referans etiket metinle çelişiyor;
  • karara bağlanamaz — metin tek bir ikili etiketi belirlemiyor;
  • tamam — geri kalan her şey.

Okuma sırasında tamam’ı ikiye böldüm. Bu, önceden kaydedilmiş şemadan bir sapma; tam da bu yüzden burada kayda geçiriyorum. Referans etiketin savunulabilir olduğu ama benim öbür etiketi seçeceğim satırlar tartışmalı (arguable) oldu, geri kalanlar düz tamam kaldı. Dolayısıyla tartışmalı sonradan kurulmuş bir kategori ve diğer üçünden daha az ağırlık taşıyor.

Sonuç:

### random 100 test rows, read by hand by one reader

errors (gold contradicts the text)          0
undecidable (binary label not determined)   7
   ... of which "not yet received"          3
arguable (post-hoc; defensible either way)  9
ok (the remaining rows)                    84
                                          ---
                                          100
positive gold labels in the sample         98

Rastgele çekilen 100 satırda tek bir açık hata yok. Hiç hata gözlenmediğinde üç kuralı (rule of three) 3/n’lik yaklaşık tek yönlü %95 üst güven sınırını verir: veri %3 civarına kadar bir hata oranıyla tutarlı, altındaki hiçbir değeri de dışlamıyor. Bu, oranın %3’ün altında olduğunun ölçülmesi değildir; 100 çekim %0,1 ile %2’yi birbirinden ayıramaz. Tekdüze bir önsel (uniform prior; Beta(1,1)) seçilirse, 100 satırda sıfır açık hata için sonsal ortalama \(1/(n+2) = 1/102 \approx \%0{,}98\) olur. Bu değer, derlemdeki hata oranının %1 olarak ölçüldüğü anlamına gelmez: önsel seçimine ve tek okuyucunun “açık hata” tanımına bağlıdır. Sonraki hesaplarda yaklaşık %1’i yalnızca örnek bir senaryo olarak kullanacağız. Karara bağlanamayan yedi ve tartışmalı dokuz satır bu açık hata sayımına dâhil değil.

Asıl ilginç olan, karara bağlanamayan yedi satır; çünkü bunlar hata değil. 4745 numaralı test satırının tamamı şu:

sipariş verdim umarım tez ulaşır :)

Referans etiket: olumlu. Yorumu yazan ürünü henüz almamış; metinde ürüne dair bir hüküm yok, bir gülen yüz ve bir temenni var. Ürün hakkındaki hükmü hedefleyen, bu bölümde önerdiğimiz şema altında bu yorum karara bağlanamaz. Özgün sentiment etiketinin hangi soruya göre üretildiği belgelenmediği için bu satırın kaynak etiketi hakkında “hatalı” hükmü vermiyoruz. Diğer altısından ikisi de aynı biçimde (“daha yeni sipariş verdim, yorumlara bakılırsa…”, “yarın gelir herhalde”). Birinde ürün daha önce kullanılmış ve çizik hâlde gelmiş, ama yorumcu ürünün kendisinin iyi olduğunu söylüyor — teslimata dair hüküm, ürüne dair hükmün tam tersini gösteriyor. Kalan üçünden biri kapılarla ilgili bir atasözü, biri yalnızca bir öneri sunuyor (“sıvı formda olsa daha iyi olurdu”), biri de sadece seat leon st 1.6tdi dizesinden ibaret.

Ürüne ilişkin ikili bir hüküm hedeflendiğinde bu yedi satır tek bir etikete zor sığıyor. Sorun, kaynak etiketleyicinin yanlış karar vermesinden çok, hedef sorunun tanımında olabilir; bunu doğrulamak için özgün şemayı ve ikinci bir okuyucunun kararlarını görmek gerekir. Etiket hatası ile şema sorunu arasındaki bu ayrımı aklınızda tutun; bölümün geri kalanı sürekli ona dönüyor.

Yüz satırın doksan sekizi olumluydu; derlem oranı ise %93,7. Bu, n = 100 için sınırda da olsa örnekleme gürültüsüyle açıklanabilir (%6,3’lük olumsuz oranında 100 satırda en fazla 2 olumsuz görme olasılığı yaklaşık %4,5), ama şunu hatırlatıyor: çarpık bir derlemden çekilen 100 satırlık bir örneklem azınlık sınıfı hakkında neredeyse hiçbir şey söylemez. Azınlık sınıfını denetlemek için onu ayrıca örnekleyin.

5.4 Şema da etiketleyiciler kadar zarar verebilir

Şema sınırlarının daha geniş bir veri üzerinde de görülüp görülmediğini araştırmak için bir ön eleme kuralı kurabiliriz. Aşağıdaki karşıtlık bağlacı testi bir şema sorununu teşhis etmez; yeniden okunacak yorumları seçer.

10.000 yorumda karşıtlık adaylarını aramak için ama, fakat, ancak ve lakin sözcüklerini işaretleyelim. Eşleşen bir yorumun gerçekten iki karşıt değerlendirme içerip içermediğini elle kontrol etmeden bilemeyiz.

Bu kısmın geri kalanının dayandığı bir çekince: bu kural bir ayrıştırıcı değil, bir elek ve precision’ı (kesinlik) ölçülmedi. Ancak aynı zamanda “yalnızca” ya da “güçlükle” anlamına da geliyor — ancak 3 günde geldi bir karşıtlık değil, teslimat süresi hakkında bir ifade — ve kural gerçi, ne var ki, buna rağmen gibi bağlaçları tümüyle kaçırıyor. Yani aşağıda bulacağımız %20,03 ne bir üst sınır ne de bir alt sınır; yalnızca kuralın eşleşme oranı. Rastgele seçilmiş eşleşmeleri okumak kuralın precision’ını ölçmeye yarar; kaçırdığı karşıtlıklar için eşleşmeyen yorumları da incelemek gerekir. Mekanik olarak denetleyebildiğimiz kısmı denetledik: çift anlamlı ancak 351 yorumda geçiyor ve bunların 287’si yalnızca ancak sayesinde eşleşiyor; kuraldan ancak çıkarıldığında aşağıdaki tablonun iki grubu arasındaki fark yerinde kalıyor (macro-F1 71,29’a karşı 77,80). İki grubun skor farkını şemanın etkisine bağlamak ise daha ayrıntılı bir etiketleme ister.

import re
# tr_lower: 4. bölümdeki Türkçeye duyarlı küçük harf dönüştürücü (İ->i, I->ı)
CONTRAST = re.compile(r"\b(ama|fakat|ancak|lakin)\b")
has_but = np.array([bool(CONTRAST.search(tr_lower(t))) for t in test.text])

10.000 test yorumunun 2.003’ünde (%20,03) dört bağlaçtan en az biri eşleşti. Bu grubun sınıf dağılımı ve model skorları, eşleşmeyen grupla aşağıda karşılaştırılıyor:

Aynı model, aynı test kümesi, dört bağlaçlı eleme kuralına göre bölünmüş
karşıtlık kuralı eşleşen eşleşmeyen
test kümesindeki payı %20,03 %79,97
referans etikette olumsuz oranı %11,48 %5,03
model doğruluğu 84,07 94,70
model macro-F1 72,11 77,72
model F1 (olumsuz) 53,84 58,27

Test kümesinin bu beşte birinde olumsuz etiket oranı iki katından fazla (%11,48’e karşı %5,03) ve model belirgin biçimde daha düşük skor alıyor: macro-F1’de 5,6, olumsuz sınıf F1’inde 4,4 puan geride (macro-F1 farkının test satırları üzerinden bootstrap aralığı 2,5 ile 8,8 puan). Doğruluktaki on puanlık fark bunu abartıyor: iki grubun taban oranı farklı olduğu için doğruluk farkının bir kısmı yalnızca sınıf oranından geliyor. Bu ölçüm, olası açıklamaları birbirinden ayırmıyor. Etiket şemasından iki hükmü tek bir bite sıkıştırması isteniyor olabilir; model bu cümlelerde daha çok yanılıyor olabilir; iki grup başka bakımlardan da farklı — eşleşen yorumlar belirgin biçimde daha uzun (ortanca 30 token’a karşı 16). Yön düzeyinde bir yeniden etiketleme (aspect-level annotation; ürün, teslimat, fiyat gibi bileşenler ayrı ayrı) yapılmadığı için şema açıklaması ile model açıklaması arasında tercih yapamıyoruz. Ürün, teslimat ve fiyat hükümlerinin ayrı etiketlendiği bir örneklem, hangi hatanın hangi kaynaktan geldiğini sınamak için gerekli: model iki yönü de doğru çıkarıyor ve yalnızca tek bit yanlışsa, sorun şemadadır.

Hangi çözümün geçerli olduğu, hangi açıklamanın doğru olduğundan çıkar; dolayısıyla kararı veren şey yukarıda anlatılan yön düzeyinde etiketlemedir. Uyuşmazlık hedefin tanımından geliyorsa çözüm ya daha zengin bir şema (yön düzeyinde etiketler: ürün / teslimat / fiyat / paketleme, her biri kendi kutbuyla) ya da kılavuzda her etiketleyiciye hangi yan cümlenin kazandığını söyleyen açık bir kuraldır. Modelin bu cümleleri kötü okumasından geliyorsa, daha iyi bir temsil tam da işe yarayacak şeydir — ve buradaki hiçbir şey bunu dışlamıyor.

Buna akraba bir problemin adı var: annotation artifacts — etiketleme sürecinin, metin ile etiket arasında hedef görevin dışında bir ipucu oluşturması. Bir kılavuz etiketleyicileri bir alışkanlığa ittiğinde, modeller görevi değil o alışkanlığı öğrenebilir ve skor çoğu zaman şişer. Gururangan vd. (2018), iyi bilinen bir çıkarım benchmark’ının (kıyaslama) yalnızca hipotez cümlesine bakıp öncülü tamamen yok sayarak kısmen çözülebildiğini gösterdi: o cümleleri yazan etiketleyicilerin belirgin alışkanlıkları vardı ve model bunları yakaladı. Buradaki bağlaç eşleşmesi başka bir şey: şema sorunu ve model hatası için bir aday grubu tanımlıyor; bu veride bir artefakt ya da bir şema kusuru olduğuna tek başına kanıt değil. İki durumun ortak noktası, etiketin yalnızca metni değil etiketleme sürecini de yansıtabilmesi.

Geva vd. (2019), örnekleri etiketleyicilerin kendilerinin yazdığı bir veri düzeninde, modellerin bir öğeyi hangi etiketleyicinin yazdığını ayırt edebildiğini ve test kümesi eğitimde görülmemiş etiketleyicilerden geldiğinde skorların düştüğünü gösterdi. Hazır ürün yorumlarının yalnızca etiketlenmek üzere dağıtıldığı düzen bundan farklıdır. Bu derlemde yazar ya da etiketleyici kimliği bulunmadığı için böyle bir etkinin büyüklüğünü ölçemiyoruz.

5.4.1 Kullanılabilir bir kılavuz neye benzer

annotation guideline (etiketleme kılavuzu) — görevi, sınıfları, karara bağlanmış örnekleri ve belirsiz vakaların nasıl ele alınacağını yazılı olarak açıklayan belge. Bağımsız etiketleyicilerin kararlarını daha tutarlı ve denetlenebilir kılar; tam uyumu garanti etmez. ↩︎

Bir etiketleme kılavuzunda (annotation guideline) sınıf tanımları yalnızca başlangıçtır. Bağımsız etiketleyicilerin sınır durumlarda tutarlı karar verebilmesi için karara bağlanmış örnekler, öncelik kuralları ve bir ATLA seçeneği de gerekir. Kılavuzu, bu kararların sürüm numarasıyla birlikte saklayın.

### etiketleme kılavuzu v1 — ürün yorumu duygusu

GÖREV
  Her yorumu, yorumcunun ÜRÜN HAKKINDAKİ hükmüne göre olumlu (1) ya da
  olumsuz (0) etiketle.

KARARA BAĞLANMIŞ VAKALAR  (yukarıdaki tanımı somutlaştırırlar)
  1. Teslimat, paketleme, satıcı ve iade ÜRÜN DEĞİLDİR.
     "Kargo hızlı, ürün işe yaramaz"              -> 0
     "Kargo geç geldi, ürün harika"               -> 1
  2. Fiyat şikâyeti, yorumcu ürünün değmediğini söylemedikçe olumsuz
     SAYILMAZ.
     "Pahalı ama mükemmel"                        -> 1
     "Bu paraya değmez"                           -> 0
  3. Ürün hakkında karışık hüküm: SON yan cümle kazanır.
     "İyi kesiyor ama sapı kırıldı"               -> 0
     "Sapı kalitesiz ama çok iyi kesiyor"         -> 1
  4. Henüz teslim alınmamış / hüküm verilmemiş    -> ATLA (etiketleme)
  5. Kesilmiş metin: görünen metinde bir hüküm varsa etiketle,
     yoksa ATLA.
    6. Olumsuzlamayı bağlamında değerlendir. "fena değil" ürün için
     olumludur. "fena değil ama çabuk bozuldu" ise, son ürün hükmü
     olumsuz olduğu için 3. kurala göre 0'dır.

NE ZAMAN ATLANIR
    Ürün hakkında karar verilemiyorsa ATLA'yı seç. Atlanan örnekleri ve
  nedenini sakla; kılavuzun ve şemanın geliştirilmesine yararlar. Zorla
  verilen bir ikili etiket, tutarlı görünse bile hedefi yanlış ölçebilir.

Bunu kullanılabilir kılan iki özellik var. Birincisi, karara bağlanmış her vakanın iki taraf için de çözülmüş bir örneği var; böylece örüntüye bakarak eşleştiren bir etiketleyici, ilkeyi anlamadan da doğru cevabı veriyor. İkincisi, ATLA diye bir seçenek var. Karara bağlanamaz öğelerde ikili seçim yapmaya zorlamak, sonradan etiketleyicilere yükleyeceğiniz bir uyuşmazlık üretebilir; etiketleyiciler aynı alışkanlıkla tahmin ediyorsa görünürde yüksek ama anlamsız bir uyum da üretebilir.

3. kuraldaki “son yan cümle kazanır” seçimi keyfî. Tutarlılık sağlayabilir; ama ürün memnuniyetini gerçekten temsil edip etmediği ayrıca sınanmalıdır. Önce hedef soruyu belirleyin, ardından zor vakalar için karara bağlanabilir ve tutarlı bir kural yazın: etiketleyici her zaman hangi kuralın geçerli olduğunu söyleyebilmeli ve onu her seferinde aynı şekilde uygulayabilmelidir. Tutarlı uygulanan keyfî bir kural öğrenilebilir veri üretir, tutarsız uygulanan ilkeli bir kural üretmez. Ama iyi uyum, yanlış hedefe verilmiş ortak bir cevabı doğru yapmaz.

5.5 Uyum: %93 tek başına ne anlatır?

Yüz yorumluk denetim tek bir okuyucunun kararlarını gösterdi. Aynı yorumları bağımsız bir ikinci kişiye etiketletmek, sınır vakalarda uyuşmanın ne kadar zor olduğunu gösterir. Uyum sayısını ise sınıf dağılımı ve uyuşmazlık tablosuyla birlikte yorumlamak gerekir; bu kısım bunun nedenini anlatıyor.

inter-annotator agreement (IAA) (etiketleyiciler arası uyum) — aynı öğelere birbirinden bağımsız etiket veren kişilerin kararlarının ne ölçüde örtüştüğü. Ham oranla, sınıfa özgü uyumla ya da rastlantısal uyuma göre düzeltilmiş katsayılarla özetlenebilir. Yüksek uyum, etiketlerin hedef kavramı doğru temsil ettiğini tek başına kanıtlamaz. ↩︎

Etiketlerinizin iyi olduğunu tek bir etiketleyicinin çıktısına bakarak bilemezsiniz. Aynı öğeler hakkında ikinci bir görüşe ve iki görüşün ne sıklıkla örtüştüğünü söyleyen bir sayıya ihtiyacınız var — inter-annotator agreement.

İkinci bir insan etiketleyicim olmadığı için, referans sütunuyla karşılaştırmak üzere bir sözlük kuralı kullandım: 36 olumlu ve 37 olumsuz ifade, 10.000 test satırının hepsine uygulandı. İfade listeleri bu sayfada verilmiyor; dolayısıyla aşağıdaki 2×2 tablo sayfadaki koddan yeniden üretilemez, tablodan türetilen bütün katsayılar ise üretilebilir.

Sayılardan önce bir çekince, çünkü katsayının ne anlama geldiğini değiştiriyor. B, etiketleyiciler arası uyumun gerektirdiği anlamda bağımsız bir ikinci görüş değil: kuralı, referans etiketleri önceden görmüş biri yazdı. Bu tabloda \(\kappa(\text{A}, \text{B})\), referans etiketlerle sözlük kuralının örtüşmesini özetler; insan–insan uyumunun ya da şemanın iyi tanımlanmış olmasının ölçüsü değildir. Aynı formül ve aynı aritmetik — prevalans, \(p_e\), çarpıklık — iki insanın yargı tablosuna da uygulanır; ama o deneyin örnekleme ve bağımsızlık koşullarının ayrıca kurulması gerekir. 0,2698 sayısı yalnızca bu referans–kural tablosuna aittir ve bir insan–insan uyum değeri olarak alıntılanmamalıdır.

def annotator_b(text):
    t = tr_lower(text)
    neg = any(p in t for p in NEG)
    pos = any(p in t for p in POS)
    if neg and not pos:
        return 0
    return 1          # eşleşme yoksa ya da iki tür eşleşme de varsa: olumlu

Kural, ifadeleri alt dize olarak arar; sözcük sınırını denetlemez ve aynı yorumda hem olumlu hem olumsuz ifade geçtiğinde olumlu der. Sözcük sınırı kullanan bir kurala geçilirse aşağıdaki tablonun yeniden hesaplanması gerekir.

A, veri kümesindeki referans sentiment sütunu; B, yukarıdaki sözlük kuralının çıktısı. Kısalık için ikisine de “etiketleyici” diyeceğiz, ama ikisi de metni bağımsız okuyan bir insan değil. Bu iki etiket dizisinin 10.000 test yorumu üzerindeki karşılaştırma tablosu:

### A (gold, rows) vs B (lexicon rule, columns), n = 10,000

                B: olumsuz   B: olumlu
A: olumsuz            141           491
A: olumlu             167          9201

Ham uyum \((141 + 9201)/10000 = \mathbf{\%93{,}42}\). Ama bu toplamın 9.201’i ortak olumlu karar: çoğunluk sınıfı toplam uyumu yukarı çekiyor. Olumsuz etiketlerdeki uyuşmazlığı görmek için tablonun ilk satırına ve ilk sütununa ayrıca bakmak gerekir.

Cohen’s kappa (Cohen kappa’sı) — iki etiket dizisinin gözlenen uyumunu, her biri kendi etiket oranlarıyla ve birbirinden bağımsız karar verseydi beklenecek uyumla karşılaştıran katsayı. Düşük bir kappa, tek başına etiket hatasının ya da dikkatsizliğin kanıtı değildir. ↩︎

%93,42’lik ham uyum tek başına güçlü bir kanıt değil. Bu iki etiket dizisinin marjinalleri altında kararların birbirinden bağımsız verildiği varsayılırsa beklenen uyum yaklaşık %90,99’dur. Bu matematiksel bir başvuru değeridir; kuralın ya da gerçek etiketleyicilerin metinleri okumadığı anlamına gelmez. Bir sözlüğe karşı düşük kappa çıkması, referans etiketlerin yanlış olduğunu da göstermez. Cohen’s kappa (Cohen 1960) bu iki oranı karşılaştırır:

\[\kappa = \frac{p_o - p_e}{1 - p_e}\]

burada \(p_o\) gözlenen uyum, \(p_e\) ise iki etiketleyicinin de kendi taban oranlarıyla bağımsız etiketlemesi durumunda beklenen uyum. Bu tabloda \(p_e = 0{,}9099\) ve:

\[\kappa = \frac{0{,}9342 - 0{,}9099}{1 - 0{,}9099} = \mathbf{0{,}2698}\]

İkiden fazla etiketleyiciyle ve eksik değerlerle de çalışabilen Krippendorff’s alpha (Krippendorff 2018), aynı tabloda 0,2655 veriyor. Kappa’ya yakın çıkması bağımsız bir doğrulama değil: iki katsayı aynı etiket çiftlerinden hesaplanıyor. Beklenen uyumu farklı tanımladıkları için aşağıdaki dengeli altörneklemde belirgin biçimde ayrışacaklar.

0,27’lik bir kappa, alışılmış (ve keyfî) ölçeklere göre “fair” (zayıf) sayılıyor. İşe yarayan okuma bir ayrıştırma değil, bir karşılaştırma: 93,42 puanlık gözlenen uyuma karşılık, bu marjinallere sahip iki etiketleyicinin birbirinden bağımsız etiketleyerek ulaşacağı 90,99 puan — yani baseline’ın üstünde yalnızca 2,43 puan. Bunu “90,99 puan şans eseriydi” diye yorumlamayın: \(p_e\) bağımsızlık sıfır hipotezi altında beklenen uyuşmadır, gerçekte olan bitenin ölçülebilir bir parçası değil. Bu kadar çarpık bir derlemde düşük bir kappa, özensiz etiketlemeyle de özenli etiketlemeyle de tutarlıdır; katsayı size hangisine sahip olduğunuzu söylemez.

Sonucu bu düzeltme belirliyor; o yüzden sayıya olduğu gibi güvenmek yerine neyi hesapladığını adım adım görelim.

\(p_e\), iki etiket dizisinin gözlenen sınıf oranları korunup kararların birbirinden bağımsız olduğu varsayıldığında beklenen uyuşma payıdır. Hesap, her dizinin olumsuz ve olumlu etiketi ne sıklıkla kullandığına dayanır.

A etiketleyicisi öğelerin 632/10000 = %6,32’sine olumsuz diyor. B etiketleyicisi 308/10000 = %3,08’ine. Dolayısıyla:

\[ \begin{aligned} p_e &= P(\text{ikisi de olumsuz der}) + P(\text{ikisi de olumlu der}) \\ &= (0{,}0632)(0{,}0308) + (0{,}9368)(0{,}9692) \\ &= 0{,}00195 + 0{,}90795 \\ &= 0{,}90989 \end{aligned} \]

\(p_e\)’nin neredeyse tamamı — 0,910’un 0,908’i — ikinci terimden geliyor. Aritmetiği yuvarlak bir sayıyla değil gerçek marjinallerle yapın, çünkü yuvarlak sayı yanıltıyor. A öğelerin %93,68’ine, B ise %96,92’sine olumlu diyor. Bu oranlara sahip iki etiketleyici birbirinden bağımsız seçim yaptığında, metinler ne derse desin, \(0{,}9368 \times 0{,}9692 + 0{,}0632 \times 0{,}0308 = 0{,}910\) oranında aynı cevapta buluşur. (İkisi de öğelerin %90’ına olumlu diyen iki etiketleyici \(0{,}9^2 + 0{,}1^2 = 0{,}82\)’ye varırdı, 0,90’a değil — beklenen uyum, marjinalin kendisi değildir.) Kappa’nın paydası olan \(1 - p_e = 0{,}09\), gerçek uyum için geriye kalan alandır. Payı olan 0,0243 ise etiketleyicilerin bu alanın ne kadarını gerçekten doldurduğunu gösterir.

Çarpık görevlerde kappa’nın düşük çıkmasının sebebi bu. Çarpık bir görevde yalnızca ham uyumu bildirmenin yanıltıcı olması da bu yüzden. Kappa’nın orada oynak olmasının sebebi de aynı: bu tabloda \(1 - p_e\) yaklaşık 0,09 olduğu için, marjinaller sabit varsayılırsa gözlenen uyumdaki küçük bir değişim kappa’ya yaklaşık on bir kat büyüyerek yansır. Gerçek bir hücre değişiminde marjinaller ve \(p_e\) de oynar. Ham uyumu, sınıfa özgü uyumu, kappa’yı ve karışıklık matrisini birlikte bildirin ve okurun çarpıklığı görmesine izin verin.

Cohen’s kappa tam olarak iki etiketleyici için tanımlıdır. Üç ya da daha fazla etiketleyiciniz olduğunda — kitle kaynak platformu işin içine girdiğinde olağan durum budur — Fleiss’ kappa (Fleiss 1971) kullanın. Fleiss’ kappa, Cohen’inkinin değil Scott’s pi’nin genellemesidir: \(p_e\)’yi her etiketleyicinin kendi oranlarından değil, bütün etiketleyiciler üzerinden havuzlanmış tek bir marjinalden hesaplar. Her öğeyi aynı etiketleyicilerin etiketlemesini de gerektirmez (ama her öğenin aynı sayıda yargı almış olduğunu varsayar). Krippendorff’s alpha (Krippendorff 2018) fikri bir adım öteye taşıyor: uyumu \(\alpha = 1 - D_o/D_e\) — gözlenen uyuşmazlığın beklenen uyuşmazlığa oranı — biçiminde, sizin seçtiğiniz bir uzaklık işleviyle yazıyor. Böylece tek bir katsayı nominal (sırasız kategorik), sıralı ve aralık ölçekli etiketleri kapsıyor; eksik yargıları da tolere ediyor. Yorumu da, çarpıklık problemi de üçü için değişmez.

“Her etiketleyicinin kendi oranı” ile “tek havuzlanmış oran” arasındaki bu fark sıradan bir hesap ayrıntısı değil; kappa’nın yorumunu etkileyen bilinen iki durumdan ikincisi ve bu derlem onu örnekliyor. Aşağıya bakın.

5.5.1 Aynı referans ve sözlük kuralı, farklı örneklem

Sınıf oranının etkisini görmek için A’nın olumsuz dediği 632 yorumun tümünü ve A’nın olumlu dediği yorumlardan rastgele 632’sini seçelim. Bu 1.264 satırlık yapay dengeli altörneklem, tam test dağılımındaki uyumu kestirmez; aynı A ve B’nin, farklı seçilmiş metinlerdeki davranışını gösterir.

### the identical annotators, on a class-balanced subsample

                    full test set (n=10,000)   balanced (n=1,264)
raw agreement                       93.42%              60.28%
p_e                                 90.99%              50.00%
Cohen's kappa                        0.2698              0.2057
Krippendorff's alpha                 0.2655              0.0722

Bu altörneklemde ham uyum %93,42’den %60,28’e iniyor. A ve B’nin karar kuralları aynı; değerlendirilen metinler ve sınıf bileşimi farklı. Sonuç, ham uyumun etiketleyicilere ait sabit bir özellik olmadığını, örneklemle birlikte değişen bir ölçü olduğunu gösteriyor.

İki chance-corrected (rastlantısal uyuma göre düzeltilmiş) katsayı da sağdaki sütunda birbirinden ayrılıyor ve bu ayrılık hikâyenin ikinci yarısı. Tam kümede uyuşuyorlar (0,2698’e karşı 0,2655); dengeli altörneklemde ise kappa alpha’nın neredeyse üç katı (0,2057’ye karşı 0,0722) — hem de aynı veriden. Mekanizmanın adını yukarıdaki “\(p_e\) aritmetiği” kutusunda koymuştuk: Cohen’s kappa \(p_e\)’yi her etiketleyicinin kendi marjinalinden hesaplıyor, alpha ve Scott’s pi ise tek bir havuzlanmış marjinalden. Dengeli altörneklem bu şekilde kurulduğu için A’nın etiketlerinin %50’si olumsuz; B’de bu oran kabaca %12. Yani ikisi, azınlık etiketini seçme sıklığında büyük ölçüde ayrışıyor. Ayrışan marjinaller Cohen’in rastlantı tabanını düşürüyor (burada 0,50’ye; havuzlanmış marjinalle bu değer 0,57), dolayısıyla aynı gözlenen uyum rastlantının daha üstünde sayılıyor. Alpha’nın havuzlanmış tabanı bu ayrışmayla düşmediği için alpha bu payı vermiyor.

Bu tablo, kappa’nın yorumunu etkileyen bilinen iki durumu örnekliyor (Feinstein ve Cicchetti 1990; Cicchetti ve Feinstein 1990). Tam kümede yüksek ham uyuma düşük bir kappa eşlik ediyor (prevalans etkisi); dengeli altörneklemde ise A ile B’nin farklı marjinalleri kappa ile alpha arasındaki farkı büyütüyor (yanlılık etkisi). Bunlar katsayının arızaları değil; katsayıların farklı sıfır modelleri kullandığının ve örneklem bileşimine duyarlı olduğunun örnekleri. Kappa ile alpha’yı, marjinalleri ve örnekleme düzenini birlikte bildirin.

O tablodaki bir sayı ölçülmüş değil, kesin; nedenini bir satırla anlatmaya değer. Dengeli altörneklemde \(p_e\) tam olarak \(0{,}5000\), çünkü bir etiketleyici kusursuz 50/50 bölündüğünde beklenen uyum, diğerinin oranı \(b\) ne olursa olsun \(0{,}5b + 0{,}5(1-b) = 0{,}5\) çıkar. Böylece payda (\(1-p_e = 0{,}5\)) B’den tamamen bağımsız hâle geliyor.

Katsayıyı tabloya baktıktan sonra seçmek, yorumu kaydırabilir. Aynı 2×2 tablonun aşağıdaki beş özeti farklı soruları yanıtlıyor; bu yüzden hangi katsayıyı neden kullanacağınızı sonuçlara bakmadan önce belirleyin:

### aynı 10.000 satırlık tablo, beş katsayı
ham uyum  p_o                        0,9342
Gwet's AC1                           0,9277
PABAK  (2*p_o - 1)                   0,8684
Cohen's kappa                        0,2698
Krippendorff's alpha                 0,2655

Bunların hiçbiri yanlış değil. Farklılar, çünkü bir sınıf baskınken “şans”ın ne demek olduğu konusunda farklı varsayımlar yapıyorlar: kappa ile alpha, etiketleyicilerin gözlenen oranlarıyla tahmin yürüttüğünü varsayıp çarpıklığın faturasını size kesiyor; PABAK ile AC1 bunu varsaymıyor ve kesmiyor (Gwet 2008). Hangisinin doğru olduğu, göreviniz için hangi sıfır hipotezinin adil karşılaştırma olduğunu düşündüğünüze bağlı; tablodan yola çıkıp etiketleyicilerin tahmin yürütüp yürütmediğini teşhis etmeye değil. Katsayılar, rastlantısal uyumun nasıl görüneceği konusundaki varsayımlarıyla ayrışıyor; hiçbiri size etiketleyicilerin ne yaptığını söyleyemez. Bu tablonun beş özeti 0,27 ile 0,93 arasında değişiyor. İyi bir rapor karışıklık matrisini, sınıfa özgü uyumu ve önceden gerekçelendirilmiş bir katsayıyı birlikte verir.

B’nin skorlarında saklı ikinci bir ders var. B etiketleyicisi referans etikete karşı %93,42 doğruluk alıyor. Bölüm 4’ün çoğunluk sınıfı baseline’ı — hiçbir şey okumadan her şeye olumlu demek — %93,68 alıyordu. B’nin elle kurulmuş, 73 özenli Türkçe ifadeden oluşan sözlüğü bir sabitten kötü performans gösteriyor. Macro-F1’de tablo farklı (B için 63,27, sabit için 48,37) ve Bölüm 4’ün doğruluğu tek başına bildirmeyi reddetmesinin sebebi de bu.

Raporlamaya değen üçüncü bir sayı daha var. Bir sınıf için özgül uyum, o sınıfta ortak karar verilen örneklerin iki katının, A’nın ve B’nin o sınıfı seçtiği toplam sayıya bölümüdür: \(2 n_{kk} / (n_{k\cdot} + n_{\cdot k})\). Bu ikili tabloda hesap, B’nin A’ya göre sınıf F1’iyle sayısal olarak aynıdır: olumluda %96,55, olumsuzda %30,00. Eşitlik metriğin tanımından gelir; B’nin bir insan olduğu ya da A’nın hatasız olduğu sonucunu vermez. Özgül uyum, rastlantısal uyuma göre düzeltilmiş tek bir sayının yapamadığını yapıyor: ayrışmanın yerini gösteriyor. Bu iki etiket dizisi övgüde neredeyse tamamen örtüşüyor, şikâyette ise çok az.

Belirli bir sınıf oranında uyum ne değer taşır

Kaydırıcılar ham uyumu, A’nın azınlık oranını ve B’nin oranının A’nınkine oranını varsayımsal olarak değiştirir. Aynı %93,4’lük uyum bu tablonun oranlarında kappa ≈ 0,27 ediyor; daha çarpık oranlarda daha azını, dengeli oranlarda daha fazlasını ederdi. Üç kaydırıcının her ayarı var olabilecek bir 2×2 tabloyu tarif etmez; eğri yalnızca bu üç seçimin mümkün bir tablo oluşturduğu aralıkta çiziliyor, eksenin tamamını değil de kısa bir yayı kaplamasının sebebi bu. İçi boş daire, bu bölümdeki tablonun ölçülen noktasını gösteriyor; eğrinin diğer noktaları yeni deney sonuçları değildir.

Sayının altındaki sözel etiketler — slight (çok zayıf), fair (zayıf), moderate (orta), substantial (güçlü), almost perfect (neredeyse kusursuz) — Landis ve Koch (1977) kaynaklı bir eşik ölçeğinden geliyor. Bunların kaynağını bilmek gerekiyor, çünkü yaygın biçimde kullanılıyor ama kaynağı nadiren anılıyor. Yazarlar bu bantları ölçülmüş eşikler olarak değil, tartışma için “açıkça keyfî” bölmeler olarak önermişti. Sayıyı ve aralığı raporlayın; sıfatı ise konuşmayı başlatacak bir etiket olarak görün, asla bir geçme notu olarak değil.

5.5.2 Uzlaştırma

adjudication (uzlaştırma) — uyuşmayan yargıların neden ayrıştığını inceleyip kararı ya da kalan belirsizliği kayda geçiren ek değerlendirme. Bazı uyuşmazlıklar kılavuzu iyileştirir, bazıları ise kalıcı bir yorum farkını gösterir. ↩︎

Uyum ölçümü teşhistir; adjudication ise onun ardından gelen adım. İzlenebilecek döngü şu:

  1. İki etiketleyici aynı 200 öğeyi birbirinden bağımsız etiketler. Her birinden bir örneklem değil — aynı öğeler. Azınlık vakalarını görebilmek için pilotu azınlık sınıfına doğru tabakalandırabilirsiniz (stratified sampling): bu derlemin %6,3’lük azınlık payında düz rastgele 200 öğe yaklaşık on üç azınlık öğesi içerir ve kappa’nın payı büyük ölçüde o hücrelerden gelir. Böyle bir pilottaki kappa, seçtiğiniz sınıf oranına aittir. Doğal dağılımdaki uyumu raporlamak istiyorsanız ayrı ve temsil edici bir örneklem kullanın ya da örnekleme tasarımını açıkça yazın.

  2. Karışıklık matrisini ve kappa için bir belirsizlik aralığını birlikte hesaplayın. Bu boyutta aralık isteğe bağlı değil. Bir kappa’nın standart hatası örneklem büyüklüğü kadar marjinallere de bağlıdır; bu yüzden hazır bir formül yerine, aşağıdaki gibi, aynı öğenin iki yargısını birlikte yeniden örnekleyen bir bootstrap kullanın. Bu bölümün referans–sözlük tablosundan yeniden örnekleme yapınca standart hata 10.000 öğede yaklaşık 0,02, düz rastgele 200 öğede yaklaşık 0,14 çıkıyor; bu, 0,27’lik bir nokta kestiriminin %95 aralığını kabaca \([-0{,}02,\ 0{,}54]\) yapar. Referans etiketi olumsuz 100 ve olumlu 100 öğeden oluşan tabakalı bir pilotta standart hata yaklaşık 0,04’e iniyor, nokta kestirimi de 0,21 civarına geliyor (kappa örneklemin sınıf bileşimine bağlı). Bu sayılar referans–sözlük tablosuna aittir; iki insanla yaptığınız pilotta aralığı ayrıca hesaplayın. Hedef katsayıyı ve örneklem bileşimini sonuçlara bakmadan önce belirleyin ve pilot döngüsünü (adım 3–5) aralığın alt sınırı hedefi aştığında bitirin; hedefi içeren bir aralık tek başına hiçbir yönde kanıt değildir. Bir eşiğin aşılması da şemanın hedefi doğru ölçtüğünü tek başına göstermez.

    from sklearn.metrics import cohen_kappa_score
    rng = np.random.default_rng(42)
    idx = (rng.integers(0, len(a), len(a)) for _ in range(2000))
    boot = [cohen_kappa_score(a[i], b[i]) for i in idx]
    lo, hi = np.percentile(boot, [2.5, 97.5])
  3. Her uyuşmazlığı birlikte okuyun. Kimin haklı olduğuna karar vermek için değil, neden ayrıştıklarını bulmak için. Uyuşmazlıklar çoğu zaman tekrar eden birkaç durumda toplanır.

  4. Her durumu, iki taraf için de örnekleriyle birlikte, karara bağlanmış bir vaka olarak kılavuza ekleyin. Asıl çıktı bu.

  5. Yeni 200 öğeyi bağımsız etiketleyip yeniden ölçün. Uyum artmadıysa uyuşmazlık örneklerini yeniden inceleyin: sebep bir kılavuz boşluğu, kılavuzun farklı uygulanması, örneklemin değişmesi ya da şemanın sınırı olabilir.

3. adımı bir oylama sanmayın. Tek tek uyuşmazlıkları çözmek pilot verisini iyileştirir. Tekrar eden uyuşmazlık türlerini kılavuza eklemek ise sonraki etiketleme turunda da işe yarayabilir; etkisini yeni ve bağımsız öğelerde ölçün.

5.5.3 İki yerine üç etiketleyiciniz olduğunda

Her öğeyi üçüncü bir kişiye göndermek büyük ölçekte pahalıdır. Bu yüzden çoğu projede çoğunluk kararı, bir güvenilirlik modeli ve seçilmiş uyuşmazlıklarda uzman uzlaştırması birlikte kullanılır. Bölümün başındaki şekil de çöküşü — yargılar tek etikette birleştirilirken uyuşmazlık kaydının saklanmamasını — ayrı bir sorun olarak adlandırmış, ama ne yapılacağını söylememişti. Kitle kaynaklı etiketlemede öğe başına birkaç yargınız olur; bunları tek bir etikete nasıl indireceğiniz bir seçimdir ve ham yargıları saklamak, bu seçimi sonradan değiştirebilmenizi sağlar.

Çoğunluk oyu basit bir başlangıç yöntemidir. Etiketleyicilerin hata oranları belirgin biçimde farklıysa ya da hataları birbirine bağımlıysa, oyları eşit ağırlıklandırmak bilgi kaybettirebilir. Gizli değişkenli birleştirme (Dawid ve Skene 1979) her etiketleyicinin hata örüntüsünü (karışıklık matrisini) ve gizli sınıfı ortak bir olasılık modeliyle, EM ile kestirir (beklenti–enbüyütme: gerçek etiketleri tahmin et, bu tahminlerden her etiketleyicinin hata oranlarını yeniden kestir, etiketleri yeniden tahmin et ve hiçbir şey değişmeyene kadar tekrarla); referans etiket zorunlu değildir. Sonuç, etiketleyici yargılarının yeterince örtüşmesine ve modelin varsayımlarına bağlıdır. Snorkel tarzı zayıf denetim de kaynakların güvenilirliğini modeller; orada fonksiyonlar arasındaki bağımlılığın ve model ailesinin ayrıca belirlenmesi gerekir. Üçüncü bir seçenek, tek etikete hiç indirmeden oy dağılımını saklamak ve yumuşak bir hedefe karşı eğitmektir: üç etiketleyiciden ikisinin olumlu dediği bir öğeye sert bir 1 yerine 2/3’lük olumlu oy payı hedef olarak verilir. Bu sayı, tek başına, öğenin gerçekten olumlu olma olasılığının kalibre edilmiş bir kestirimi değildir; uyuşmazlığın görevle ilgili olup olmadığını ayrıca okumak gerekir. Bu bölümde modelin en güçlü biçimde itiraz ettiği 40 test yorumunun yarısı tek bir ikili etikete zor sığan metinler olarak sınıflandırıldı; böyle öğelerde 2–1’lik bir bölünme, sert bir etiketin sildiği bir bilgiyi taşıyabilir (Uma vd. 2021; Plank 2022).

5.6 Etiketleri ölçekte denetlemek

40.000 satırın tamamını elle okumak çoğu proje için pahalıdır. Hangi satırların önce okunacağını seçen bir yordam ise kurabilirsiniz.

Burada out-of-fold kestirimi (eğitimde dışarıda bırakılan parça için tahmin) bir inceleme önceliği üretmek için kullanıyoruz. Bu, modelin kendi güveninden yararlanarak hatalı etiket adaylarını bulan confident learning yaklaşımından (Northcutt, Jiang, vd. 2021) esinlenen basit bir eşik kuralı; yöntemin kendisi değil. Asıl yöntem tek bir küresel eşik kullanmaz: her sınıf için, o sınıfla etiketli örneklerde modelin o sınıfa verdiği ortalama olasılığı eşik alır ve bu eşiklerle etiket–tahmin sayımlarından bir matris (confident joint) kurar. Aşağıda kullandığımız tek eşik (0,90) bir kısayol; sınıflar bu kadar dengesizken sınıfa özgü eşikler tam da bunu düzeltmek için var. Veriyi beş parçaya ayırın; modeli dördünde eğitip kalan parça için tahmin üretin ve bunu her parça bir kez dışarıda kalacak şekilde tekrarlayın. Artık her eğitim satırının, o satırın etiketini hiç görmemiş bir modelden gelen bir kestirimi var. Modelin diğer sınıfa yüksek puan verdiği satırlar otomatik bir hata hükmü değil, elle incelenecek adaylardır.

from sklearn.model_selection import StratifiedKFold

skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
# Xtr burada katlardan önce, 40.000 satırın tamamında eğitilmiş vektörleştiriciden
# geliyor. Tam out-of-fold kestirim için vektörleştiriciyi de her eğitim katında eğitin.
oof = np.zeros(len(y))
for train_idx, val_idx in skf.split(Xtr, y):
    oof[val_idx] = clf().fit(Xtr[train_idx], y[train_idx]).predict_proba(Xtr[val_idx])[:, 1]

# modelin karşı sınıfa verdiği puan; etiketin yanlış olma olasılığı değildir
wrong_conf = np.where(y == 1, 1 - oof, oof)

40.000 eğitim satırı üzerinde:

Karşı sınıf puanı eşiği aşan, elle incelenecek satırlar
eşik işaretlenen satır pay referans etiket olumlu referans etiket olumsuz
> 0,50 3.026 %7,57 2.232 794
> 0,90 92 %0,23 49 43
> 0,95 34 %0,09 18 16
> 0,99 2 %0,005 2 0

Koddaki yorumun karşılığını ölçtük. Vektörleştiriciyi de her katta yalnızca eğitim kısmında eğittiğimizde 0,90 eşiğini aşan satır sayısı 92’den 123’e, 0,95 eşiğinde 34’ten 47’ye çıkıyor; ilk listedeki 92 adayın 89’u yeni listede de var. Aşağıdaki sayılar ve onarım deneyi 92 satırlık ilk listeye ait. Kendi denetiminizde vektörleştiriciyi katın içinde eğitin; bir Pipeline bunu kendiliğinden yapar.

Üç şey dikkat çekiyor.

İşaretler sınıflar arasında dengeli, derlem değil. 0,90 eşiğinde 92 işaretin 43’ü referans etiketi olumsuz olan satırlarda — %47 — ve bu, yalnızca %6,3’ü olumsuz olan bir derlemde. Satır başına bakıldığında olumsuz etiketlerin %1,70’i, olumlu etiketlerin ise %0,13’ü işaretleniyor — bir olumsuz etiketin işaretlenme oranı on üç kat yüksek. Okumaya nereden başlamanız gerektiği de orası. Ama bunu bir hata oranı farkı diye okumayın: on üç kat, işaretlenme oranlarının farkı; model azınlık sınıfında daha belirsiz ya da daha kötü kalibre olduğu için de bu satırları daha sık işaretliyor olabilir.

Yüksek eşik çok az satır işaretliyor. 40.000 eğitim satırının 92’si 0,90 eşiğini aşıyor. Rastgele 100 test satırında sıfır açık hata görülmüştü; oradaki önsele bağlı yaklaşık %1’lik senaryo doğru olsaydı 400 dolayında hata beklenirdi, ama o değer ölçülmüş bir hata oranı değil ve burada gerçek hata sayısı gibi kullanılamaz. Kural ayrıca modelin yakalayamadığı hataları dışarıda bırakır: modelin kendisinin de zor bulduğu metinlerdeki hatalara kör. İşaretlenmeyen satırlar temiz ilan edilemez.

İşaret bir hüküm değil, okuma çağrısıdır. Yukarıdaki 92 aday eğitim kümesinde. Ayrı bir denetimde, test kümesinde modelin saklanan etikete en yüksek puanla itiraz ettiği 40 yorumu tek kişi olarak okudum (test kümesinde yanlış bir etiketin bedeli biraz daha düşük skorlu bir model değil, yanlış bir sıralama tablosudur). Bu iki seçimin örnekleme çerçevesi farklı; birinin oranları ötekine taşınamaz. Her yorumu elle şu üç kategoriden birine ayırdım: hata (referans etiket metinle açıkça çelişiyor), şema (tek bir ikili etiket metni temsil edemiyor), model (etiket savunulabilir, sınıflandırıcı yanılıyor).

### 40 highest-confidence gold/model disagreements, test set, read by hand

hata   (referans etiket yanlış)                      11    27.5%
şema   (ikili etiket metni temsil edemiyor)          20    50.0%
model  (etiket savunulabilir, sınıflandırıcı yanlış)  9    22.5%
                                                     --
veri tarafındaki problemler                          31 / 40

şema dökümü:  karışık 12 · kesilmiş 4 · ılık (ne övgü ne yergi) 3 · hüküm yok 1

Seçilmiş 40 adayın 31’i, tek okuyucuya göre, veri tarafında bir sorun gösteriyor: 20’si şema, 11’i açık etiket çelişkisi olarak sınıflandı. Bu oranlar yalnızca modelin en yüksek puanla seçtiği test örneklerini anlatır; derlem için ya da eğitimdeki 92 aday için bir oran kestirimi değildir. \(n = 40\) ile şema payının %95 Wilson aralığı (küçük \(n\)’de de makul davranan, bir oran için güven aralığı) kabaca %35 ile %65, hata payınınki %16 ile %43 arasında ve iki aralık örtüşüyor; ama bu aralıklar yalnızca sayım belirsizliğini anlatır, amaçlı seçilimi düzeltmez. Okumayı kör olmayan tek bir okuyucu yaptı (hipotezi yazmış olan ben). Aynı kırk öğeyi kör çalışan ikinci bir okuyucuya okutup uyumu bildirmek gerekir; bu adım öznel sınıflamayı sınar, genelleme sorununu tek başına çözmez. Ben bunu yapmadım; siz sayıyı alıntılamadan önce yapın.

Kategorilerin ne demek olduğunu kırktan dördü gösteriyor:

  • 6874. satır (referans = olumsuz, model p(olumlu) = 0,984). Açık övgü içeriyor, çekince görünmüyor; olumsuz etiketle açıkça çelişiyor. Hatanın hangi aşamada oluştuğu bilinmiyor.
  • 8356. satır (referans = olumlu, p = 0,059). “yastıklar ince yeterli değil”. Olumlu etiketlenmiş; açık bir çelişki daha.
  • 8006. satır (referans = olumlu, p = 0,034). “hiç bir sebeb göstermeden iade kurallarına uyarak beğenmedim dedim, iade ettim.ücret iadem anında yapıldı.kargo ücreti de dahi.” Yorum iade sürecini övüyor; ürün hakkında olumlu bir hüküm vermiyor ve iade gerekçesi olarak “beğenmedim” dediğini aktarıyor. Modelin karar skoruna bu örnekte en büyük olumsuz katkılar iade (−1,78), beğenmedim (−1,30) ve iade ettim (−0,65) özniteliklerinden geliyor; olumsuz katkıların yaklaşık yarısı iade içeren özniteliklerden. “Bu iyi bir deneyim miydi” hedefinde olumlu etiket savunulabilir; bu yüzden bu satırı model hatası olarak saydık. Ürün hedefli kılavuz v1 altında ise iade süreci ürün sayılmaz (1. vaka): “beğenmedim” bir ürün hükmü sayılırsa etiket 0 olurdu, sayılmazsa satır ATLA (4. vaka). Kategori hedef tanımına bağlı; tablodaki sayıları bu yüzden de bir oran değil, bir yön olarak okuyun.
  • 2544. satır (referans = olumlu). “paketleme başarısız. ampüller fena değil”. İki ayrı yön hakkında zıt kutuplu iki hüküm. Hangi etiketin uygun olduğu, hedef ve karışık yorum kuralı belirlenmeden karara bağlanamaz.

Dokuz seçilmiş model hatasının beşinde olumsuzlama var: fena değil, özelliklerinin altında bir ürün değil ve bir tane de üçlü olumsuzlama. Kelime unigram ve bigram kullanan bir model fena değil gibi sık kalıpları ayrı bir öznitelik olarak öğrenebilir; ama uzun ya da iç içe geçmiş bir olumsuzlamanın kapsamını yapısal olarak temsil etmez. Bu modelde de öyle olmuş: 2544. satırda fena değil bigram’ının karar skoruna katkısı yalnızca −0,06 iken, değil (−1,77) ve fena (−0,55) unigram’ları ağır basıyor. Bu örnekler bu öznitelik düzeninin sınırını gösterir; bütün n-gram modellerinin her olumsuzlamada yanılacağını değil. Kelime sırasını ve kapsamı temsil eden modeller ilerideki bölümlerin konusu (Bölüm 7).

5.6.1 Temizlik gerçekte ne kazandırdı

Elinizde 92 şüpheli satır varken akla gelen ilk hamle, onları silmek ya da etiketlerini tersine çevirmek, sonra modeli yeniden eğitmek. İki koşulu da, bölüm boyunca raporlamada kullanılan aynı test bölmesinde karşılaştırdık. Bu keşifsel bir karşılaştırmadır; hiç görülmemiş bir test kümesindeki nihai sonuç gibi okunmamalı:

### repairs, judged on the test split used throughout the chapter

                          acc    macro-F1   F1(neg)
baseline (no repair)     92.57      76.21     56.47
drop 92  (p > 0.90)      92.37      75.72     55.61
flip 92  (p > 0.90)      92.47      75.94     55.99
drop 34  (p > 0.95)      92.39      75.83     55.83
flip 34  (p > 0.95)      92.52      76.03     56.15
drop  2  (p > 0.99)      92.54      76.15     56.37
flip  2  (p > 0.99)      92.52      76.11     56.31

Bu altı onarım koşulunun hiçbiri, kullanılan test bölmesinde baseline’ı geçmedi. En büyük fark yaklaşık yarım macro-F1 puanı (92 satırı silmek: −0,49). Bu farklar, denenen sabit satır kümeleri için gözlenen farklardır; yöntemin yararı için bir güven aralığı ya da büyük bir kazancı dışlayan bir üst sınır değildir. Başka deneylerin seed sapması da bu deterministik onarımların belirsizliği yerine geçmez. Doğru karşılaştırma, aynı işlemi aynı sayıda rastgele satıra uygulamaktır; onu da koşturduk: 92 işaretle aynı sınıf bileşimine sahip rastgele 92 satır, 20 ayrı çekim.

### control: 92 random rows with the class mix of the flags (49 pos / 43 neg), 20 draws
                            macro-F1     sd      min      max
drop 92 random rows  (mean)    76.15   0.13    75.91    76.45
flip 92 random rows  (mean)    75.87   0.36    75.01    76.47
drop the 92 flagged rows       75.72
flip the 92 flagged rows       75.94

İşaretli 92 satırı silmek (75,72), rastgele 92 satırı silmenin 20 çekimdeki en düşük değerinin (75,91) de altında kalıyor: bu test bölmesinde işaretli satırları silmek, rastgele satır silmekten daha çok kaybettiriyor. İşaretli satırların etiketini çevirmek (75,94) ise rastgele 92 etiketi çevirmenin ortalamasından (75,87) ayırt edilemiyor. Yani model itirazına göre seçilmiş satırlar rastgele satırlardan farklı davranıyor, ama beklenen yönde — skoru yükselterek — değil.

Bu sonuç, bir inceleme listesi üretmekle o listedeki satırları topluca silerek ya da çevirerek skor artırmanın ayrı hedefler olduğunu gösteriyor. Burada ikinci hedefte kazanç gözlenmedi. İki not:

  1. 40.000 satırın 92’si, eğitim verisinin %0,23’ü. Bu kadar az satırı düzenlemenin 40.000 örnekle eğitilmiş bir modeli çok oynatması beklenmez: kontrol grubunda rastgele 92 satırı silmek ortalamada 0,06 puan oynatıyor. İşaretli satırların daha çok (0,49 puan) oynatması, karar sınırına yakın satırların sayılarının gösterdiğinden fazla etkili olabildiğini gösteriyor.
  2. İşaretlenen satırlar aynı türden olmayabilir. Testteki seçilmiş 40 itirazın 20’si tek okuyucuya göre şema sorunuydu; eğitimdeki 92 aday için bu oran bilinmiyor, o satırlar ayrıca okunmadı. Etiketi çevirmek (satır kalır), 92 ve 34 satırlık eşiklerde silmeyi (satır gider) az farkla geçti, 2 satırda sıra tersine döndü; bu küçük farklar satırları tutmanın neden daha iyi olduğuna dair kanıt oluşturmaz. İki işlemden de önce satırları okuyun.

Bu denetimin somut getirisi yeniden eğitilmiş model değil, seçilmiş 40 itirazda şema sorunlarının görünür hâle gelmesi. Bu, kılavuzu yeniden incelemek için bir gerekçe sağlar; derlemin tamamındaki karışıklığın yarısının şemadan geldiğini göstermez. Otomatik araç adayları bulur; hedef tanımını gözden geçiren, onları okuyan insandır. Ayrı bir çalışmada Northcutt, Athalye, vd. (2021) en çok kullanılan on makine öğrenmesi benchmark’ının test kümelerinde etiket hataları buldu ve test etiketleri düzeltildiğinde model sıralamasının değişebildiğini gösterdi: düzeltilmiş etiketlere göre puanlandığında, ImageNet’te başlangıçta yanlış etiketlenmiş örneklerin test kümesindeki payı yalnızca %6 artınca ResNet-18, ResNet-50’nin önüne geçiyor. Bu bölümde böyle bir sıra değişimi ölçülmedi.

5.7 Etiket gürültüsünün bedeli ne ve hangi yönde

Diyelim ki etiketleme sürecinizin bir hata oranı var. Bedeli ne? Etiket hatasının etkisi hatanın yönüne, sınıfların büyüklüğüne ve değişen satır sayısına birlikte bağlı. Aşağıdaki tabloda aynı yüzde, iki yönde eşit sayıda yanlış etiket anlamına gelmiyor: yüzdeler kaynak sınıfın payı.

Eğitim etiketlerini üç rejim altında kontrollü oranlarda bozdum, modeli sıfırdan yeniden eğittim ve özgün (yapay gürültü eklenmemiş) test etiketleriyle değerlendirdim. Her biri için üç seed; standart sapma hiçbir zaman 0,50 macro-F1’i aşmadı.

### macro-F1, clean test set, model retrained at each rate
### rates are the share of the SOURCE class flipped; "symmetric" flips that share of EACH class

flip rate      0%     1%     2%     5%    10%    20%    30%    40%
symmetric   76.21  74.18  72.43  68.58  63.34  55.43  49.86  43.71
neg -> pos  76.21  76.14  76.29  76.27  76.42  76.85  77.12  76.47
pos -> neg  76.21  74.17  72.87  68.63  63.63  56.69  52.01  47.99

Ortadaki satır neredeyse kıpırdamıyor: bu model ve bu sınıf oranında, olumsuz etiketlerin %40’ını olumluya çevirdiğimiz koşulun macro-F1’i baseline’a yakın kalıyor; %30’da 0,91 puan üstünde. Artışın nereden geldiğine baktık: %30 koşulunda model daha az yoruma olumsuz diyor (1.075 yerine yaklaşık 845); olumsuz sınıfta precision %44,8’den yaklaşık %50’ye çıkıyor, recall %76,3’ten %67’ye iniyor. Yani olumsuz eğitim etiketleri azaldıkça karar sınırı kayıyor ve bu test bölmesinde macro-F1 biraz yükseliyor. Bu bir etiket bozma önerisi değil. Yüzdelerin anlamına da dikkat edin: olumsuz sınıfın %40’ı yaklaşık 1.000 satır, olumlu sınıfın %40’ı yaklaşık 15.000 satır. Alttaki satır aynı aralıkta 28 puan kaybediyor.

Aynı hata oranı, zıt sonuçlar
80 67 54 41 macro-F1 %0 %1 %2 %5 %10 %20 %30 %40 kaynak sınıfın çevrilen payı · sıralı ölçek, aralıklar orantılı değil 76,21 temiz olumsuz → olumlu 76,47 olumlu → olumsuz 47,99 simetrik 43,71 düz çizgi neden düz 2.529 olumsuzun %40'ını çevirmek azınlık sınıfını küçültür ama saf bırakır; 37.471 olumlunun %10'unu çevirmek olumsuz sınıfın %59,7'sini yanlış etiketli bırakır.

Aynı 40.000 eğitim satırı üzerinde üç gürültü rejimi, aynı test bölmesinde değerlendirilmiş; her koşul üç seed’le yinelenmiş. Yüzdeler kaynak sınıfın payıdır ve tek yönlü iki eğri farklı sayıda satırı çevirir. 93,7/6,3’lük class imbalance bu asimetrinin önemli bir etkeni, tek açıklaması değil.

class imbalance (sınıf dengesizliği) — bir etiket diğerinden çok daha yaygın. Burada yorumların %93,7’si olumlu; dolayısıyla her seferinde “olumlu” diyen bir model hiçbir şey bulmadığı hâlde isabetli görünür. ↩︎

Önce bu veri kümesindeki sayımları yapalım. Aynı kaynak sınıf yüzdesi, sınıflar dengesizken çok farklı sayıda etiketi değiştirir; başka görevlerde skora etkisinin ayrıca ölçülmesi gerekir.

%10’da olumsuz → olumlu: 2.529 olumsuzun 253’ü olumlu diye yeniden etiketleniyor. Olumlu sınıf 37.724’e çıkıyor ve bunların 253’ü yanlış — %0,67 bulaşma. Olumsuz sınıf 2.276’ya iniyor ama geride kalan her üye doğru. Daha küçük ama saf bir azınlık sınıfı hâlâ öğrenilebilir.

%10’da olumlu → olumsuz: 37.471 olumlunun 3.747’si olumsuz diye yeniden etiketleniyor. Olumsuz sınıf artık 2.529 doğru artı 3.747 yanlış — %59,7’si yanlış etiketli. Model, üyelerinin çoğunluğu gürültü olan bir sınıfa uyum sağlamaya çalışıyor. Gerçek olumsuzlar hâlâ tutarlı bir küme oluşturduğu için model yine bir şey öğreniyor (63,63; çoğunluk baseline’ı 48,37), ama öğrenilecek sinyal gürültünün içinde sulanıyor ve bunun bedeli 12,58 puan.

Aynı asimetri, bir hesap tablosunda fark edilemeyecek kadar küçük oranlarda da ortaya çıkıyor. %1 olumlu → olumsuz durumunda yalnızca 375 satır çevriliyor — olumlu sınıfın yüzde biri, yani bütün eğitim satırlarının %0,94’ü; çoğu ekibin “mükemmel” diyeceği bir oran. Ama o 375 satır, artık olumsuz etiketli olan her şeyin %12,9’u (2.904’ün 375’i: 2.529 gerçek olumsuz artı 375 yeni gelen) ve 2,04 macro-F1 puanına mal oluyor — Bölüm 4’te bag of words ile TF-IDF unigram’ları arasındaki farkın tamamından, yani 1,56’dan fazla.

Yüzdeler iki yönde farklı sayıda satır demek olduğu için karşılaştırmayı bir de aynı sayıda etiketle yaptık:

### the same NUMBER of flipped training labels in each direction (3 seeds, mean macro-F1)
    250 labels  neg->pos 76.35 (sd 0.17)   pos->neg 74.98 (sd 0.25)   | share of source class: neg 9.9%  pos 0.67%
    500 labels  neg->pos 76.80 (sd 0.20)   pos->neg 73.64 (sd 0.20)   | share of source class: neg 19.8%  pos 1.33%
   1000 labels  neg->pos 76.95 (sd 0.68)   pos->neg 71.11 (sd 0.27)   | share of source class: neg 39.5%  pos 2.67%
   2000 labels  neg->pos 68.60 (sd 1.02)   pos->neg 67.91 (sd 0.15)   | share of source class: neg 79.1%  pos 5.34%

Aynı sayıda etiket çevrildiğinde de yön fark ediyor: 1.000 olumlu etiketi olumsuza çevirmek 5,1 puan kaybettirirken, 1.000 olumsuz etiketi olumluya çevirmek skoru düşürmüyor. Ama asimetrinin sınırı var: olumsuz sınıfın %79’u (2.000 etiket) çevrildiğinde o yön de 7,6 puan kaybediyor.

Bu deneyden, kendi verinizde ayrıca sınanmak üzere iki uygulama önerisi çıkıyor:

  • Etiketleme hata oranınızı sınıf başına ölçün ve hataların hangi sınıftan geldiğini söyleyin. Genel bir %1 tek başına bilgi vermez: azınlık satırlarını çoğunluğa çeviren hatalar burada neredeyse hiç iz bırakmadı, çoğunluk satırlarını azınlığa çeviren hatalar ise aynı %10’luk sınıfa bağlı oranda 12,58 puana mal oldu. Her seferinde kaynak sınıfı da hedef sınıfı da adlandırın ve yüzdeyle birlikte satır sayısını verin.
  • Belirsizliği tahminle kapatmayın. Bu deneyde çoğunluktan azınlığa yanlış geçirilen örnekler pahalıydı; ama bundan etiketleyicinin azınlık kararından sistematik olarak kaçınması gerektiği sonucu çıkmaz — bu, kaçırılan azınlık vakalarını artırır. Belirsiz öğeyi ATLA seçeneğine ve uzlaştırmaya yönlendirin; bölümün başlarındaki kılavuz bunun için var. Hata maliyetini, sınıf oranını ve hedef metriği kendi görevinizde ayrıca ölçün: kaçırılan bir azınlık vakasının pahalı olduğu yerlerde — tarama, güvenlik, dolandırıcılık — hesap farklı çıkar.

Bu deney, sınıflar dengesizken kaynak sınıfa bağlı oranların yanıltıcı olabildiğini gösteriyor. Spam, dolandırıcılık, tıbbi tarama ya da içerik denetiminde hangi yönün daha zararlı olduğu bu tablodan çıkmaz: sabit sayıda hatayla yapılan karşılaştırma, sınıf ağırlıkları, metrik ve operasyonel bedel yeniden değerlendirilmelidir. Sınıfa bağlı gürültü altında öğrenmenin kuramını Frénay ve Verleysen (2014) derliyor.

Bu deneyde etiket bozmaları metinden bağımsız seçildi: sabit bir oranla, metne bakılmadan. Gerçek hatalar metnin özelliklerine bağlı olabilir — örneğin zor öğelerde kümelenebilir — ve aynı nominal oranın etkisi o durumda farklılaşır (Wei vd. 2022). Önceki kısımda modelin işaretlediği zor yorumlar doğrulanmış etiket hatalarının dağılımını göstermiyor; yalnızca böyle bir kümelenmenin mümkün olduğunu düşündürüyor. Frénay ve Verleysen (2014) gürültüyü üçe ayırıyor: her şeyden bağımsız gürültü, yalnızca sınıfa bağlı gürültü ve örneğe bağlı gürültü. Bu deneyin simetrik rejimi birincisine, tek yönlü iki rejimi ikincisine örnek; üçüncüsünün maliyeti burada sınanmadı. Yukarıdaki eğrileri bu yüzden bir sınır olarak okumayın.

5.8 Test etiketleriniz ölçümün anlamını değiştirir

Önceki deneyler eğitim etiketlerini yapay olarak değiştirdi ve sonucu özgün test etiketlerine göre ölçtü. Şimdi tersi: özgün veriyle bir kez eğitilmiş tek bir sabit modelin tahminlerini, test etiketlerinin kontrollü biçimde çevrilmiş sürümlerine göre puanlıyoruz. Model hiç değişmiyor; değişen, puanlamada kullanılan etiketler. Buradaki “temiz” ya da “özgün” test etiketi, yapay gürültü eklenmemiş sürüm demek; bağımsız olarak doğrulanmış gerçek etiket anlamına gelmiyor.

Paydanın değiştiğine dikkat edin; çünkü “gürültü” kelimesi iki deneyde farklı iş görüyor. Önceki kısımda “%1 çevirme oranı” kaynak sınıfın yüzde biri demekti. Burada ise bütün test satırlarının yüzde biri demek ve her satır, etiketi hangisiyse öbür sınıfa çevriliyor — bu derlemin dengesinde her yüz çevirmenin kabaca 94’ü olumlu, 6’sı olumsuz satır. Tekdüze çevirme, kontrollü bir dayanıklılık testi; test etiketlerinin gerçekte nasıl bozulduğuna dair bir iddia değil — önceki kısmın sonundaki, örneğe bağlı gürültüyle ilgili uyarı burada da geçerli ve gerçek test hataları zor satırlarda kümelenir.

### one fixed model, corrupted test labels, mean of 5 seeds

test noise      acc   macro-F1   F1(neg)   sd(macro-F1)
### noise here = share of ALL test rows, flipped uniformly at random
    0%        92.57      76.21     56.47          0.00
    1%        91.73      74.68     53.90          0.23
    2%        90.85      73.13     51.31          0.12
    5%        88.31      69.41     45.36          0.17
   10%        84.19      64.79     38.66          0.24
   20%        75.48      57.00     28.82          0.36

Bunları, 4. bölümde özgün etiketlerle hesaplanmış sıralama tablosuyla (Bölüm 4) yan yana koyun:

Aynı test bölmesinin farklı etiket sürümlerine göre skorlar; satırlar ortak bir ölçüyle sıralanamaz
sistem macro-F1
TF-IDF 1–2 gram, özgün test etiketleri 76,21
TF-IDF 1–2 gram, %1 test etiketi gürültüsü 74,68
bag of words, özgün test etiketleri 73,51
TF-IDF 1–2 gram, %2 test etiketi gürültüsü 73,13
TF-IDF unigram, özgün test etiketleri 71,95
TF-IDF char_wb 3–5, özgün test etiketleri 70,39

%2’lik yapay test etiketi gürültüsü, aynı modelin macro-F1’ini 76,21’den 73,13’e indiriyor. Bu sayı, bag-of-words’ün özgün etiketlerle aldığı 73,51’in altında. Model kötüleşmedi: bayt bayt aynı model, bayt bayt aynı kestirimleri yapıyor. İki model ortak bir etiket sürümünde karşılaştırılmadığı için buradan sıralamanın tersine döndüğü sonucunu çıkarmayın: 73,13 bir modelin gürültülü etiketlere karşı, 73,51 öbür modelin özgün etiketlere karşı ölçümü.

Peki ortak bir gürültülü etiket sürümünde sıralama ayakta kalır mı? Beklenen değerde, \(\eta < 0{,}5\) oranındaki bağımsız ve simetrik çevirmeler için evet: bir sınıflandırıcının gürültülü doğruluğu \(\eta + (1 - 2\eta)\,a_{\text{temiz}}\)’dir ve bu \(a_{\text{temiz}}\)’de artandır, yani sıralama ortalamada korunur. Gerçekleşmiş tek bir test kümesinde ise korunmayabilir. A’nın yalnızca 3. öğede, B’nin ise yalnızca 1. ve 2. öğelerde yanıldığı 100 öğelik bir küme alın — özgün etiketlerle A 99, B 98 alır. Şimdi 1. ve 2. öğelerin etiketlerini çevirin ve ikisini de o etiketlere karşı puanlayın: A 97’ye düşer, B 100’e çıkar. Bu bölümün model çifti için ölçtük: bigram TF-IDF ile bag-of-words’ü aynı gürültülü test etiketleriyle 200 kez puanladığımızda aradaki 2,69 puanlık fark %2 gürültüde ortalama 2,50’ye, %20 gürültüde 1,36’ya iniyor ve 200 çekimin hiçbirinde sıra tersine dönmüyor. Bu sonuç tekdüze ve bağımsız çevirmeler için geçerli; zor satırlarda kümelenen gerçek hatalar için değil.

Tablonun gösterdiği şey, farklı etiket sürümlerinde raporlanan skorların doğrudan karşılaştırılamadığı: %2 etiket gürültüsü olan bir test kümesinde ölçülmüş 73,13 ile başkasının özgün etiketlerle ölçtüğü 73,51 arasındaki fark ne bir model sıralamasıdır ne de istatistiksel ayırt edilemezliğin kanıtı. Çalışmalar arasında karşılaştırma yaparken değerlendirme kümesini, etiket tanımını ve belirsizlik hesabını birlikte bildirin; “hangi test kümesi, hangi etiketlerle” sorusu her karşılaştırmada yer almalı.

Bu karşılaştırmaların değerlendirme tasarımı için üç sonucu var:

Test etiketleri skorun yorumunu belirler. Her gerçek etiketin bağımsız olarak %2 olasılıkla çevrildiği varsayımsal bir düzende, gerçeğe göre kusursuz bir modelin gürültülü etiketlere karşı beklenen doğruluğu %98’dir. Bu, tek bir koşunun kesin üst sınırı ya da bir macro-F1 tavanı değildir: etiketleyicilerin yaptığı hataları tekrar etmeyi öğrenmiş bir model daha yüksek bir skor bildirebilir. Modelinizin hata oranı etiketlerinizinkine yaklaştığında yüksek bir skor, gerçek hedefe yakınlığı tek başına göstermez; sonraki iyileşmeler de görünmez olabilir.

Gürültülü bir benchmark’taki küçük farklar, iki modelin ayrıştığı satırlar okunmadan sonuç değildir. Buradaki akıl yürütmeyi doğru kurun. Yukarıdaki 1,53 puan, tek bir modelin skorunun özgün etiketlerden %1 gürültülü etiketlere sistematik kayması (seed’ler arası sapma yalnızca 0,23). İki modeli aynı test kümesinde karşılaştırdığınızda bu kayma ikisine birden uygulanır: bağımsız ve simetrik gürültüde doğruluk farkı beklenen değerde yalnızca \((1-2\eta)\) katına, yani %1 gürültüde 0,98 katına iner; macro-F1’de ilişki doğrusal değil, ama kayma yine farkı değil düzeyi taşır. Küçük bir farkı kırılgan yapan şey, iki modelin ayrıştığı satırlarda kaç etiket hatası bulunduğudur — ve gerçek etiket hataları, modellerin ayrıştığı zor satırlarda kümelenebilir.

Bu bölümün test kümesinde tek bir satırın etiketinin değişmesi, tek bir modelin macro-F1’ini 0,02–0,045 puan oynatıyor. İki model arasındaki fark üzerindeki etki ise hangi satırlarda ayrıştıklarına ve tahminlerine bağlı; sabit bir eşik yok. En elverişsiz durumu ölçtük: 4. bölümdeki 1,2 puanlık farkı (ayarlanmış TF-IDF 74,71, ham sayım 73,51) silmek için, iki modelin ayrıştığı 231 satırdan en etkili biçimde seçilmiş 18 etiketin değişmesi yetiyor; bigram TF-IDF ile bag-of-words arasındaki 2,69 puanlık fark için bu sayı 41. Bunlar hataların en kötü yerlere düştüğü uç durumlar; rastgele dağılmış hatalarda fark, yukarıda gördüğünüz gibi, ayakta kalıyor. Ayrıştıkları satırları mümkünse kör olarak okuyun, etiket hatalarını düzeltin ve farkı ortak bir etiket sürümünde eşleştirilmiş bootstrap ile (doğruluk için McNemar testiyle) sınayın. Recht vd. (2019) ve Beyer vd. (2020), bu ciddiye alındığında ünlü bir benchmark’ta ne olduğunu belgeliyor. 1,53 puanlık kaymanın kendisi ise asıl olarak farklı etiket sürümlerinde ölçülmüş sayıları karşılaştırmaya karşı bir uyarıdır.

Test etiketlerine ayrı bir kalite bütçesi ayırın. Özellikle modellerin ayrıştığı satırları ve azınlık sınıfındaki satırları bağımsız olarak incelemek değerlidir. Eğitim, doğrulama ve nihai test için kalite ile örnek sayısını görevinizin maliyetlerine göre planlayın; tek bir 10.000/40.000 dağılımı genel bir kural değildir.

5.9 Sızıntı: sizi iyi gösteren hatalar

Buraya kadar her şey etiketlerin yanlış olmasıyla ilgiliydi. Bu kısım, etiket yanlışlığından ayrı bir değerlendirme riskini ele alıyor: eğitim sırasında görülmemesi gereken bir bilgi ya da test örnekleri modele ulaşırsa, raporlanan skor hedeflenen kullanım koşulunu temsil etmeyebilir.

label leakage (etiket sızıntısı) — modelin kullanım anında erişemeyeceği hedef bilgisinin, doğrudan ya da dolaylı biçimde girdiye karışması. Aynı metnin hem eğitimde hem testte bulunması ise daha geniş olan veri sızıntısı (data leakage) kapsamında, bölmeler arası bir bulaşmadır. ↩︎

Etiket gürültüsü de sızıntı da (label leakage) raporlanan skorun hedefteki performansı temsil etmesini bozabilir. Gürültü skoru her zaman düşürmez, sızıntı da her koşulda yükseltmez; iki durumda da yönü kontrollü bir karşılaştırmayla ölçmek gerekir.

Ham derlemde 235.165 satır var. Metne göre birebir tekilleştirme bunlardan 1.657 fazla satırı çıkarıyor (%0,70). Bu sayı yinelenme gruplarının sayısı değil: birden fazla kez geçen 1.055 farklı metin var (toplam 2.712 satır) ve bu grupların 77’si iki etiketi birden taşıyor. 4. bölüm bu tekilleştirmeyi bölmeden önce yapmıştı (Bölüm 4). Yapmamış olsaydı:

### split-before-dedup, the ordinary careless mistake

rows removed by exact de-duplication           1,657   (0.70%)
test rows also present in train                   45   (0.45% of test)
near-duplicates after normalisation               34   (0.34% of test)

same model, same run:
  accuracy on the 45 leaked rows                93.33
  accuracy on the 9,955 clean rows              91.90
  macro-F1 on the leaked rows                   76.76
  macro-F1 on the clean rows                    74.08

Bu koşuda eğitimde de bulunan 45 test satırının macro-F1’i 76,76, kalan 9.955 satırınki 74,08. İki altkümenin metinleri ve sınıf bileşimi farklı — 45 satırın 42’si olumlu ve ortanca uzunlukları 2 token (kalanlarda 19) — bu yüzden 2,68 puanlık fark ezberlemenin nedensel kazancı olarak okunamaz; n = 45 ile macro-F1 de oynaktır. 45 satırın 5’inde eğitimdeki kopya öbür etiketi taşıyor. Buradaki 74,08, bölümün başka yerlerinde kullanılan 76,21 baseline’ıyla da doğrudan karşılaştırılamaz: bu koşu bilerek bölmeden önce tekilleştirme yapmadı, yani başka bir bölme. Bulaşmanın varlığı satır eşleşmesiyle, skora etkisi ise ortak bir değerlendirme tasarımıyla gösterilir. %0,45’lik bir bulaşma manşet sayıyı oynatmak için çok küçük.

Etkinin dozla nasıl değiştiğini görmek için test satırlarının kontrollü bir kesrini eğitim verisine kopyalayalım; vektörleştirici de bu genişlemiş eğitim kümesinde yeniden eğitiliyor. Bu yapay bir bulaşmadır: doğal bölme hatalarıyla aynı dağılımı ya da aynı skor etkisini üretmek zorunda değildir.

Sızıntının değeri, kontrollü dozlarda
eğitime kopyalanan test satırı doğruluk macro-F1 F1 (olumsuz)
%0 92,57 76,21 56,47
%1 92,57 76,27 56,60
%2 92,62 76,41 56,86
%5 92,65 76,53 57,08
%10 92,82 77,14 58,20
%25 93,33 78,59 60,82
%50 94,00 80,89 65,07
%100 95,62 85,89 74,17

Bu kontrollü kopyalama deneyinde %10 koşulu macro-F1’i 76,21’den 77,14’e, %100 koşulu 85,89’a çıkarıyor (9,68 puan; 4. bölümde TF-IDF unigram’dan bigram’a geçişin getirdiği 4,3 puanın iki katından fazla). Etki bu modele, bu veri kümesine ve bu kopyalama düzenine özgü; %10 başına sabit bir kazanç ya da doğal bir sızıntının etkisinin kestirimi değil. Hangi satırların kopyalandığı da sonucu oynatıyor: %10 dozunu üç farklı çekimle yeniden koşturduğumuzda macro-F1 76,81 ile 77,13 arasında değişti.

Kontrollü kopyalama, makul görünen bir skor artışı üretebiliyor: %10’luk doz, gerçek bir modelleme iyileştirmesinden beklenecek büyüklükte bir fark veriyor ve yalnızca skora bakarak ayırt edilemiyor. Bu yüzden beklenmedik ölçüde iyi bir sonucu bölme, yineleme ve ön işleme denetimleriyle doğrulayın.

Yakın yinelemelere de bakalım. 4. bölümdeki gibi tekilleştirilmiş bölmede büyük-küçük harf, noktalama ve boşluk normalleştirildiğinde, normalleştirilmiş hâli eğitimde de geçen 34 test satırı bulunuyor. Bunların macro-F1’i 67,62, geri kalanınki 76,23. Bu küçük ve seçilmiş altkümede farkın nedeni, metinler tek tek incelenmeden belirlenemez; otuz dört satırda macro-F1 neredeyse anlamsızdır. Yeniden sayımımızda (normalleştirmenin ayrıntısına göre 32 satır) bu satırların 31’i olumlu ve ortanca uzunlukları 3 token (“güzel ürün”, “tavsiye ederim”, “teşekkürler hb”); yani olumsuz sınıfın F1’ini tek bir satır belirliyor. Yinelemelerin bir yan faydası da var: aynı metnin farklı etiketler taşıdığı her yineleme grubu bir inceleme adayıdır. Olası nedenler açık bir hata, farklı bir hedef, eksik bağlam ya da şema belirsizliğidir; sayı tek başına bir etiket gürültüsü oranı vermez (9. alıştırma).

5.9.1 Kontrol etmeye değer sızıntılar

Kendi verinize ve kullanım düzeninize göre şu altı riski ayrı ayrı kontrol edin:

  1. Bölmeler arası birebir yinelemeler. Bölmeden önce metne göre gruplayın; aynı metin farklı etiketler taşıyorsa önce bu çelişkiyi inceleyin (bu derlemde 77 grup). Ardından tekrarları belgelediğiniz bir kuralla tekilleştirin (df.drop_duplicates(subset="text") her metnin ilk satırını tutar) ya da aynı grubun tek bir bölmede kalmasını sağlayın.
  2. Yakın yinelemeler. Büyük-küçük harfi, noktalamayı ve boşlukları normalleştirin, sonra karşılaştırın. Daha uzun metinler için örtüşen kelime n-gram’larının (“shingle”) kümelerini Jaccard benzerliğiyle — ortak shingle sayısı bölü tüm shingle’lar — ya da onun milyonlarca belgeye ölçeklenen hızlı bir yaklaşımı olan MinHash ile karşılaştırın.
  3. Grup sızıntısı. Aynı kullanıcının birden çok yorumu, aynı belgeden birden çok cümle, aynı hastanın birden çok görüntüsü. Uygulama hedefiniz gerektiriyorsa satıra göre değil, gruba göre bölün; satırlar birbirinden gerçekten farklı olduğu için bu sızıntı gözden kaçabilir. Bu derlemde yorumcu kimliği bulunmadığından (aşağıdaki datasheet’e bakın) kullanıcı düzeyindeki grupları doğrudan doğrulamak mümkün değil; bu sınırlılığı raporlayın.
  4. Zamansal sızıntı. Modeliniz gelecekteki veri üzerinde çalışacaksa test kümeniz de gelecekten olmalı. Rastgele bir bölme, modelin geçen ayı kestirirken gelecek ayı görmesine izin verir.
  5. Ön işleme sızıntısı. Vektörleştiriciyi, ölçekleyiciyi ve öznitelik seçiciyi yalnızca ilgili eğitim kısmında eğitin; testte yalnızca dönüştürün (4. bölümün pipeline’ında önce vec.fit_transform(train), sonra vec.transform(test) vardı). Çapraz doğrulamada aynı kuralı her katın içinde uygulayın: bu bölümün out-of-fold denetiminde vektörleştirici katlardan önce eğitilmişti ve kat içinde eğitmek aday listesini 92’den 123’e çıkardı (Bölüm 5.6).
  6. Benchmark bulaşması (benchmark contamination). Halka açık test metinleri, fine-tuning (ince ayar) yaptığınız ön eğitimli modelin ön eğitim verisine girmiş olabilir. Kapoor ve Narayanan (2023) 17 bilimsel alandaki sızıntı türlerini katalogluyor; Magar ve Schwartz (2022) kontrollü ön eğitimle bulaşmanın skora etkisini ölçüyor; Oren vd. (2024) ise belirli bir veri kümesinin kara kutu bir modelin ön eğitim verisinde bulunup bulunmadığına ilişkin istatistiksel bir test öneriyor. Böyle bir testin varsayımlarını ve hata olasılıklarını raporlayın; sonucu tek tek metinlerin kesin köken kaydı gibi okumayın. LLM değerlendirmesinde bu, merkezî problem hâline geliyor (Bölüm 22).

5.10 Sonraki bin etiketi nereye harcamalı

Sabit bir etiketleme bütçesinde örnek sayısı ile her etiketin üretim ve denetim maliyeti arasında seçim yaparsınız: özenli etiketler daha pahalıdır, dolayısıyla daha azını alırsınız. Bu kısım, aynı modelde etiket sayısını ve yapay gürültü düzeyini değiştirerek bu tercihin skora etkisini inceliyor.

Izgaraya geçmeden önce “daha pahalı”nın ne demek olduğuna bir paragraf ayıralım, çünkü bu maliyetin öbür ucunda bir insan var. Bir maliyet örneği: etiketleme hızı saatte 200 kısa yorum olursa 40.000 etiket yaklaşık 200 kişi-saat ister. Gerçek hız kılavuza, metin uzunluğuna, molalara ve uzlaştırmaya bağlıdır; planlamadan önce küçük bir pilotta ölçün. Buradan çıkan üç nokta yalnızca etik değil, mühendislik konusu. Ücretlendirme ve süre hedefleri çalışma koşullarını belirler ve etiketleyicinin dikkatini etkileyebilir. Parça başı ya da saatlik ödeme seçiminin kaliteye etkisini bu bölüm ölçmedi; adil ücreti, dinlenmeyi, açık bir kılavuzu, makul sayıda kontrol örneğini (cevabı önceden bilinen sorular, dikkat testleri, etiketleyiciler arası uyumun izlenmesi) ve bir itiraz/uzlaştırma yolunu birlikte planlayın. Görev tasarımı bir çalışma koşuludur: ATLA seçeneği ve karara bağlanmış örnekler, etiketleyicinin belirsiz bir vakada zorla ikili karar vermesini önleyebilir; bunun hıza, yorgunluğa ve uyuma etkisini pilotta ölçün. Ve bazı görevlerde — içerik denetimi, güvenlik etiketleme, istismar tespiti — maruz kalmanın kendisi bir maliyettir; etiketleyici saatini bütçeleyip rotasyonu ve desteği bütçelemeyen bir proje eksik hesaplanmıştır (Gray ve Suri 2019; Sambasivan vd. 2021). Veri kümenizin datasheet’ine (kökenini, bileşimini ve kullanım koşullarını belgeleyen form; aşağıda ayrıca ele alınıyor) kimin etiketlediğini, nasıl ve ne kadar ücretlendirildiğini, bilinmeyenlerle birlikte açıkça yazın; Gebru vd. (2021) bunu istiyor.

Aşağıdaki ızgara, aynı modeli yedi bütçe büyüklüğü ve altı gürültü seviyesinde, her biri üç seed’le eğitiyor ve 42 hücrenin hepsini aynı özgün test etiketleriyle değerlendiriyor. Her hücrede eğitim satırları rastgele çekiliyor, vektörleştirici yalnızca o satırlarda eğitiliyor ve her sınıfın etiketleri aynı oranla çevriliyor. (4. bölümün öğrenme eğrisinde vektörleştirici 40.000 yorumun tamamında eğitilmişti; iki eğri bu yüzden doğrudan karşılaştırılamaz — orada bigram TF-IDF 1.000 etikette ortalama 51,7 alıyordu.)

### macro-F1 by budget and label noise (clean test set, 3 seeds)

                 0%      5%     10%     20%     30%     40%
    500       59.44   58.56   55.57   51.18   47.40   42.12
  1,000       63.71   60.91   57.77   52.32   46.99   42.78
  2,500       68.76   64.17   60.03   53.36   48.23   42.93
  5,000       71.69   66.00   60.21   53.17   47.86   42.42
 10,000       73.72   66.47   61.81   54.46   48.53   42.88
 20,000       74.89   66.99   62.04   55.21   49.09   43.81
 40,000       76.21   68.18   63.20   55.74   49.34   44.16

Izgara gürültünün yönünü ayırmıyor: her sınıfı aynı oranla bozan gürültü için ayrı bir deney. Son satır (40.000) önceki tablonun simetrik satırına yakın (%5’te 68,18’e karşı 68,58, %10’da 63,20’ye karşı 63,34), ama ayrı koşulardan geliyor. Aynı hücreleri onar seed’le yeniden koşturduğumuzda standart sapma yarım puan dolayında çıktı (%5’te 68,38 ± 0,48; %10’da 62,66 ± 0,46); yani bu farklar seed’den seed’e değişkenlik düzeyinde. Gürültünüzün yönü belliyse önceki tabloya bakın.

Bir satırı soldan sağa okuyun, gürültünün bedelini öğrenirsiniz. Bir sütunu yukarıdan aşağı okuyun, hacmin ne satın aldığını öğrenirsiniz. Çapraz okuyun, asıl bulguyu elde edersiniz:

  • Bu ızgarada 1.000 temiz etiket 63,71, %10 gürültülü 40.000 etiket 63,20 macro-F1 aldı. Gözlenen fark 0,51 puan ve üç seed’e dayanıyor. İki hücreyi onar seed’le yeniden koşturduk: 1.000 temiz etiket 62,24 (sd 2,24; 59,29–65,44), %10 gürültülü 40.000 etiket 62,66 (sd 0,46). Yüz seed çiftinin 37’sinde küçük temiz küme önde. Yani bu çift bir beraberlik; küçük kümenin skoru hangi 1.000 satırın çekildiğine çok bağlı.
  • 500 temiz etiket (59,44), %20 gürültülü 40.000 etiketin (55,74) önünde. On seed’lik yeniden koşuda fark 3,9 puan ve yüz seed çiftinin hepsinde aynı yönde.
  • Hacmin getirisi etiket gürültüsüne göre değişiyor. 500’den 40.000 etikete çıkmak %0 gürültüde 16,77, %40 gürültüde 2,04 macro-F1 puanı getiriyor. Izgara kalite–miktar dengesini gösterir; para başına getiriyi değerlendirmek için etiketleme ve kalite kontrol maliyetlerinin ayrıca bilinmesi gerekir.
Etiketleme bütçeniz: etiket sayısı ve gürültü

Her eğride, etiket sayısı arttıkça kazanımın nasıl değiştiğine bakın; yüksek gürültülü eğriler çok erken düzleşiyor. Kesikli daire, göründüğünde, en az bu skoru daha az etiketle alan bir hücreyi gösterir; parasal maliyet hesaplanmadı.

5.10.1 Her etiket aynı değerde değil

Izgara, etiketlerin rastgele çekildiğini varsaydı. Böyle olması gerekmiyor. Aktif öğrenmenin yaygın yöntemlerinden belirsizlik örneklemesi (uncertainty sampling) (Settles 2009), küçük bir başlangıç kümesiyle bir model kurar ve sonraki etiketleri bu modelin en kararsız kaldığı örneklerden seçer.

# şematik örnek: X_seed, y_seed, X_pool ve pool önceden hazırlanmış olmalı
m0 = clf().fit(X_seed, y_seed)                       # rastgele 200 etiket
unc = np.abs(m0.predict_proba(X_pool)[:, 1] - 0.5)   # 0,5'e olan uzaklık
picks = pool[np.argsort(unc)[:800]]                  # puanı 0,5'e en yakın 800 örnek

Bu parça tek başına çalıştırılabilir bir deney değil, iş akışının özeti. En düşük unc, modelin puanı 0,5’e en yakın olan örnekleri seçer; puanların kalibrasyonu burada denetlenmedi.

Tam olarak 1.000 etiketlik bir bütçeyle, üç seed’in ortalaması:

### 1,000 labels, spent two ways

                              bulunan olumsuz    acc   macro-F1   F1(neg)
rastgele çekilen 1.000                     62  93.50      65.49     34.40
200 rastgele + 800 belirsiz                248  93.59      68.80     40.99

Belirsizlikle seçilen 1.000 örnekte 248, rastgele seçilende 62 olumsuz etiket var — dört katı. Bu, azınlık sınıfının kapsanmasını artırmış olabilir; ama seçim aynı zamanda metinlerin güçlüğünü ve karar sınırına yakınlığını da değiştiriyor. Olumsuz sınıf F1’indeki 6,59 puanlık farkın ne kadarının olumsuz örnek sayısından geldiği, ayrı bir karşılaştırma olmadan söylenemez.

Bu iki satırda aynı 1.000 etiketlik bütçeyle belirsizlik örneklemesi 68,80, rastgele seçim 65,49 macro-F1 aldı: gözlenen fark 3,31 puan. Seed başına eşleştirilmiş farklar bildirilmediği için bunu kesin bir etki büyüklüğü olarak genellemeyin. Deneyi kendi kurduğumuz protokolle (başlangıç modeli 40.000 metnin vektörleştiricisiyle, son model seçilen 1.000 satırda eğitilen vektörleştiriciyle) yeniden koşturduğumuzda, üçer seed’lik iki grupta fark 5,3 ve 5,2 puan çıktı (63,13 → 68,46 ve 61,96 → 67,19); bulunan olumsuz sayısı gruba göre ortalama 188 ile 290 arasında değişti. Yön aynı; büyüklük protokole ve seed’e duyarlı.

Bunu bütçe ızgarasının yanına koymak — belirsizlikle seçilmiş 1.000 (68,80), rastgele 2.500’e (68,76) denk — daha alıntılanabilir ama daha zayıf bir iddia: iki tablo aynı baseline’ı paylaşmıyor (rastgele 1.000 etiket ızgarada 63,71, burada 65,49). Bu 1,78 puanlık fark, 1.000 etiketlik hücrenin seed’den seed’e sapmasının (on seed’de 2,24 puan) içinde; yani üç seed’lik iki ortalamanın ayrışması için ayrı bir açıklama gerekmiyor, ama 2,5 katlık “indirimi” de bir ölçüm saymayın.

Üç sınırı açıkça izleyin. Belirsizlikle seçilen eğitim kümesi doğal test dağılımını temsil etmez; test kümesini bağımsız ve uygun bir örneklemeyle kurun, asla böyle seçmeyin. Küçük bir başlangıç kümesinin ne kadar yeterli olduğu göreve ve sınıf oranına bağlıdır; burada 20 ve 200 başlangıç etiketi karşılaştırılmadı. Ve seçilen küme, onu seçen modele bağlı olabilir: doğrusal bir TF-IDF sınıflandırıcısı için belirsiz diye seçilmiş bir küme, ileride fine-tune edeceğiniz transformer için iyi bir küme olmayabilir (Bölüm 12.3). Mimari değiştiğinde böyle bir kümenin aynı boyuttaki rastgele bir örneklemden daha kötü sonuç verdiği de ölçülmüş (Lowell vd. 2019); başka bir mimariye aktarımı, eşit bütçeli rastgele örneklemeye karşı sınayın.

5.11 Elle yazmadığınız etiketler

Elle etiketleme, etiketlerin tek kaynağı değil ve 235.000 satırlık bir derlemde yüksek emek ister; kapsamını bütçenize ve hedefinize göre seçin. Aşağıdaki üç yöntem insan etiketine duyulan ihtiyacı azaltabilir, ama kalite denetiminin yerini kendiliğinden almaz. Her birini kendi sorun türüyle birlikte ele alıyoruz.

Weak supervision (zayıf denetim). Kısmi ve gürültülü etiketleme fonksiyonları yazıp bunları birleştirirsiniz. Bu bölümdeki sözlük kuralı böyle bir kaynak. Snorkel (Ratner vd. 2017) gibi çerçeveler birçok fonksiyonun üzerine üretici bir model kurar; bu model kaynakların doğruluğunu ve aralarındaki bağımlılıkları, seçilen model varsayımları altında, fonksiyonların uyuşma ve çatışmalarından kestirir ve referans etiket gerektirmez. Dikkat edilecek yer bağımlılık: aynı anahtar kelime listesinin beş varyasyonu beş bağımsız kanıt sayılmamalıdır; bağımsızlık varsayan bir birleştirme modeli bu “uzlaşıya” gereğinden fazla güvenir. Fonksiyonların bağımlılığını ve kapsamasını, etiketi doğrulanmış küçük bir örneklemde sınayın.

Distant supervision (uzaktan denetim). Var olan bir sinyali vekil etiket olarak kullanın: duygu için yıldız puanları, ilişki çıkarma için bir bilgi tabanı, alaka için kullanıcı tıklamaları. Ucuz ve bol. Risk şu: vekil, hedefin kendisi değildir. 3 yıldızlı bir yorum “nötr” demek değildir; o platformun kullanıcıları üç yıldızla ne kastediyorsa odur. Bu eşleme de platformdan platforma, yıldan yıla kayar.

LLM ile etiketleme. Büyük bir modele prompt vererek verinizi etiketletirsiniz; mekaniğini Bölüm 17 anlatıyor. Prompt ile etiketleme, tanımı açık bazı görevlerde uzman olmayan kitle çalışanlarıyla yarışmış ya da onları geçmiştir (Gilardi vd. 2023); öznel ya da kültürel açıdan yüklü görevlerde ise fark daralıyor, kimi zaman tersine dönüyor (Ziems vd. 2024). Maliyet karşılaştırmasına model çağrısının yanında denetim ve düzeltme emeğini de katın. Akılda tutulacak üç şey var. Birincisi, LLM etiketleri modelin sistematik yanlılıklarını devralır; bu yanlılıklar daha çok satır toplamakla kendiliğinden kaybolmaz, büyüklüklerini ve yönlerini ise görevinizde ölçmeniz gerekir. İkincisi, LLM etiketleri sonradan değerlendireceğiniz bir modelden bağımsız olmayabilir: test kümenizi aynı model ailesi etiketlediyse, değerlendirmeniz kısmen modelinizin o aileyle uyumunu ölçer; modellerin kendi çıktılarını tercih edebildiği de gösterilmiş durumda (Panickssery vd. 2024). Üçüncüsü, bütün bunların işe yarayıp yaramadığını bilmek için yine de insan etiketli bir test kümesine ihtiyacınız var: LLM etiketlerini doğrulanmamış bir ölçüm aleti olarak ele alın ve ayrılmış, insanların bağımsız olarak incelediği bir örneklemde doğruluğu ve uyuşmazlığı raporlayın (Pangakis vd. 2023). Türkçe için bir uyarı daha: yukarıdaki ölçümler İngilizce veride yapıldı; yazım hataları ve eksik Türkçe karakterler içeren kullanıcı metninde sonuç farklı olabilir (Bölüm 16), o yüzden bu ölçümü kendi Türkçe verinizde yapın.

Bir LLM ile eğitim metni üretmek — Self-Instruct (Wang vd. 2023) ve türevleri — yaygın bir seçenek. Yararı, üretim yönteminin yanı sıra seçmeye, filtrelemeye ve gerçek veriyle karşılaştırmaya bağlıdır.

Adıyla bilmeye değer üç sorun türü var:

Çeşitlilik eksikliği. 10.000 olumsuz yorum isteyip az sayıda şablonun varyasyonlarını alabilirsiniz. Örnekleri elle inceleyin; birbirinden farklı n-gram’ların oranı ve embedding uzayı kapsaması (3. bölümün araçlarıyla, Bölüm 3) gibi ölçütler tek başına yeterli olmasa da tekrarları görünür kılar. Bu, aşağıdaki özyinelemeli model çöküşünden ayrı bir sorundur.

Dağılım uyuşmazlığı. Üretilen metin akıcı, noktalaması yerinde ve yazımı doğrudur. Gerçek Türkçe ürün yorumları ise bunların hiçbirine uymaz. Bölüm 16, sinyalin ne kadarının tam da bir üreticinin törpüleyip yok ettiği o dağınıklıkta saklı olduğunu gösteriyor. Temiz sentetik metinle eğitilip gerçek metin üzerinde yayına alınan bir model, sizin kendi elinizle yarattığınız bir dağılım kaymasını aşarak genelleme yapmak zorunda kalır.

Özyinelemeli bulaşma. Model çıktısıyla eğitilmiş modellerin çıktısıyla eğitim yapmak, kuşaklar boyunca bozulmaya yol açıyor — Shumailov vd. (2024) buna model çöküşü diyor. Önce dağılımın kuyrukları kayboluyor. Bu, önce nadir vakaların gittiği anlamına geliyor; yani tam da modele ihtiyaç duyduğunuz vakaların. Ama bu sonucun önemli bir koşulu var ve gözden kaçırmak kolay: o deneyde her kuşakta sentetik veri gerçek verinin yerini alıyor. Gerçek veri atılmak yerine sentetiğin yanında biriktirildiğinde — pratikte olan da bu — test hatası sınırlı kalıyor ve çöküş büyük ölçüde ortadan kalkıyor (Gerstgrasser vd. 2024). Buradan çıkacak temkinli uygulama kuralı, “sentetik veri tehlikelidir” demekten daha dar: yeni sentetik kuşakların gerçek verinin yerini almasının riskini izleyin. Gerçek veriyle birlikte kullanmak ve döngünün dışında sabit, bağımsız bir değerlendirme kümesi tutmak bu riski ölçmeyi kolaylaştırır (Shumailov vd. 2024; Gerstgrasser vd. 2024). Hangi oranın ve hangi filtrelemenin yararlı olduğunu kendi görevinizde deneyin.

Test kümesi için: ana test kümesi, hedef kullanım dağılımından bağımsız olarak seçilmiş gerçek metinlere ve güvenilir biçimde incelenmiş etiketlere dayanmalıdır. Sentetik örnekler ek stres testlerinde kullanılabilir; ana performans kestiriminin yerine geçmez.

5.12 Yazın: datasheet’ler ve model kartları

Bu bölümün denetimleri, belgelenmesi gereken gözlemler üretti: test yorumlarının %20,03’ünde bir karşıtlık bağlacı var; testte modelin en yüksek puanla itiraz ettiği 40 yorumun 20’si tek okuyucuya göre şema sorunu; eğitimde olumsuz etiketli satırların işaretlenme oranı olumlularınkinin on üç katı. Bu gözlemleri, örnekleme biçimleri ve sınırlarıyla birlikte yazmazsanız kaybolurlar.

Gebru vd. (2021) veri kümeleri için datasheet’i önerdi: gerekçe, bileşim, toplama, ön işleme, kullanım, dağıtım ve bakımı kapsayan yapılandırılmış bir belge. Mitchell vd. (2019) ise aynı fikrin eğitilmiş modeller için karşılığı olan model kartını (model card) önerdi; performansın önemli gruplara göre ayrıştırıldığı bir belge. İkisi de resmî bir standart değil, yerleşik birer uygulama; ikisi de çoğu zaman doldurulup geçilen bir uyum evrakı muamelesi görüyor.

Datasheet’i yalnızca doldurulan bir form olarak bırakmayın. Veri kökenini, kullanım koşullarını ve bilinen sınırları, karar verenlerin yayından önce inceleyeceği bir aşamaya bağlayın. Sambasivan vd. (2021), 53 uygulayıcıyla yaptığı görüşmelerde veri problemlerinin yaygın, pahalı ve modellemeye kıyasla sürekli hafife alınan şeyler olduğunu buldu — “herkes model işini yapmak istiyor, veri işini değil”. Belgeyi gerçekten kullanmak bu görünmezliği azaltabilir.

Bu bölümün derlemi için gerçekçi bir özet şuna benziyor:

### datasheet özeti — Türkçe ürün yorumları

BİLEŞİM
  235.165 yorum; birebir yinelemeler çıkarıldıktan sonra 233.508
  (1.657 fazla satır, %0,70). %93,7 olumlu. 77 metin iki etiketi
  birden taşıyor. Ürün kategorisi, tarih ve yorumcu bilgisi yok.

LİSANS VE KÖKEN
  Özgün GitHub deposunun lisans dosyası ve kartın lisans bölümü
  CC BY-SA 4.0; Hugging Face sayfasının üst lisans alanı "unknown"
  (10 Ekim 2026'da kontrol edildi). Toplandığı site ve tarih
  belgelenmemiş.

ETİKETLER
  Kaynağı bilinmiyor; türetilme yolu belgelenmemiş (yıldız puanlarından
  türetilmiş olabilir). Ortada bir kılavuz belgesi yok. Etiketleyiciler
  arası uyumun ölçülüp ölçülmediği bildirilmemiş.

BİLİNEN SINIRLILIKLAR
  - Test yorumlarının %20,03'ünde ama/fakat/ancak/lakin bağlaçlarından
    biri geçiyor; bu tek başına karışık duygu ya da ikili şema sorunu
    göstermez. Bu altkümede model macro-F1'i 72,11, kalanında 77,72.
  - Testte modelin en yüksek puanla itiraz ettiği 40 yorum tek okuyucu
    tarafından incelendi: 11 açık etiket çelişkisi, 20 şema sorunu.
    Bu oranlar derlemin tamamına genellenemez.
  - Rastgele seçilmiş 100 test satırında aynı okuyucu 0 açık çelişki ve
    karara bağlanamayan 7 satır buldu. Sıfır gözlem için yaklaşık %3'lük
    "üç kuralı" üst sınırı, bağımsız örnekleme ve aynı hata tanımı
    koşuluyla geçerlidir.
  - Seçilim yanlılığı: yorumcular kendi kendini seçiyor. Yorum
    yazmayanlar veride yok. (Ölçülmedi.)

ÖNERİLEN KULLANIM
  Lisans koşulları içinde, Türkçe metin sınıflandırmanın öğretimi ve
  yöntem karşılaştırması.
ÖNERİLMEYEN / EK DOĞRULAMA GEREKTİREN
  Olumsuz sınıftaki hataların (kaçırılan ya da yanlış şikâyetlerin)
  pahalı olduğu saha kullanımları, göreve özgü bağımsız bir doğrulama
  olmadan önerilmez. Buradaki en yüksek skorlu modelin olumsuz sınıf
  F1'i yaklaşık 56; operasyonel bir karar için eşik ve hata maliyeti
  ayrıca değerlendirilmelidir.

Biçimine dikkat edin. Bu taslak, ölçülen sayıları ve belgelenmemiş alanları aynı yerde görünür kılıyor; “önerilmeyen” kısmı da birini durduracak kadar somut. İyi bir datasheet, sayı verilemeyen sınırlılıkları da açıkça kaydeder.

5.13 Emek gerçekte nereye gidiyor

Ters gidebilecek şeylerin listesi uzun. Bir haftalık bir çalışmayı planlamak için aşağıdaki faaliyetleri örnek bir sıra olarak kullanın. Süreleri ve getirileri bu bölüm ölçmedi; tabloya yazmadık, kendi pilotunuzda ölçmeniz gerekir.

Veri kalitesi faaliyetleri için örnek bir iş akışı
faaliyet süre sağlayabileceği bilgi ne zaman yapılır
rastgele 100 satırı elle okumak pilotta ölçün açık çelişki ve belirsizlik adayları; oran için geniş bir belirsizlik aralığı veri alındığında, modellemeden önce
örnekli bir etiketleme kılavuzu yazmak pilotta ölçün karar kurallarının ne kadar açık olduğu toplu etiketlemeden önce
ortak bir örneklemde iki insanın uyumunu ölçmek pilotta ölçün uyuşmazlık matrisi ve örneklemeye bağlı bir kappa kılavuz pilotunda
out-of-fold işaretleme + elle okuma pilotta ölçün incelenecek aday satırlar eğitim verisi oluştuğunda
sızıntı denetimi pilotta ölçün bölme ve ön işleme riskleri bir sonucu raporlamadan önce

Güçlü yanları — rastgele satır okumak, kılavuz yazmak ve bir uyum pilotu, sonradan görünmeyecek sorunları erken dönemde açığa çıkarabilir; sızıntı denetimi de yanlış bir sayıyı yayımlama riskini azaltır. Maliyetlerini ve getirilerini kendi görevinizde ölçün.

Zayıf yanları — out-of-fold işaretleme bir aday listesi verir ve otomasyon gibi hissettirir. Bu bölümde listeyi incelemeden topluca silmek ya da çevirmek skoru artırmadı; işaretli satırları silmek, rastgele satır silmekten daha çok kaybettirdi. İnceleme ve uzlaştırma emeğini plana katın.

5.14 Bu bölüm aslında neyle ilgili

4. bölüm temsilleri karşılaştırdı (Bölüm 4); bu bölüm o karşılaştırmanın neye göre ölçüldüğünü sordu. O bölümün en yüksek skorlu modeli sabit tutulup test etiketlerinin %2’si yapay olarak çevrildiğinde macro-F1 76,21’den 73,13’e indi. Bu sayı, başka bir modelin özgün etiketlerle aldığı 73,51’in altında; ama iki sayı farklı etiket sürümlerine ait. Dolayısıyla bu deney ortak bir test kümesinde sıralamanın tersine döndüğünü göstermez — iki modeli aynı gürültülü etiketlerle puanladığımızda sıra 200 çekimin hiçbirinde değişmedi. Gösterdiği şey, etiket sürümü bildirilmeden yapılan çalışmalar arası karşılaştırmanın riskidir.

Bu sonuç, model skoruyla birlikte değerlendirme etiketlerinin kalitesini de raporlamak gerektiğini gösteriyor. Somut hâli, beş satırda:

  • Verinizi okuyun. Modellemeden önce, elle, yüz satır. Bu bölümdeki gözlemlerin çoğu satırları okuyarak ortaya çıktı.
  • Şemayı da denetleyin. Tek okuyucunun incelediği, modelin seçtiği 40 test uyuşmazlığının 20’si şema sorunu, 11’i açık etiket çelişkisi sayıldı. Bu, kılavuzu gözden geçirmek için bir neden; derlemdeki oranların kestirimi değil.
  • Kaynak sınıfı ve etkilenen satır sayısını birlikte raporlayın. Bu deneyde olumsuzların %40’ını olumluya çevirmek macro-F1’i baseline’a yakın tuttu; olumluların %1’ini olumsuza çevirmek 2,04 puan düşürdü. İki yüzde farklı sayıda satıra karşılık geliyor; aynı sayıda etiket çevrildiğinde de yön fark etti, ama sonuç başka görevlere doğrudan taşınmaz.
  • Kalite ile hacmi kendi bütçenizde birlikte sınayın. Bu ızgarada 500 temiz etiket, %20 yapay gürültülü 40.000 etiketin önüne geçti; 1.000 temiz etiket ile %10 gürültülü 40.000 etiket ise ayırt edilemedi. Seçim için gerçek etiket maliyeti, hedef dağılım ve bağımsız bir test kümesinin kalitesi de gerekir.
  • Bir sonucu raporlamadan önce sızıntı denetimi yapın; beklenmedik ölçüde iyi bir sayıda özellikle.

Bu kısıtlar modeller büyüdükçe gevşemiyor. Bölüm 6 ve Bölüm 7 kat kat daha fazla kapasiteye sahip sistemleri tanıtıyor ve bunların her biri birilerinin imal ettiği etiketlerle eğitiliyor, birilerinin bulaştırmış olabileceği bir test kümesiyle değerlendiriliyor. Modeller değişiyor; değerlendirme etiketlerinin kalitesi sorunu değişmiyor, yalnızca görülmesi zorlaşıyor. Bu yüzden Bölüm 22 ve Bölüm 35 bu konuya geri dönmek zorunda kalıyor. Kısım I burada bitiyor; Bölüm 6 Kısım II’yi, Bölüm 4’ün iki ailesinin de göremediği kelime sırasını olasılıkla modelleyerek açıyor.

5.15 Sezgi kontrolleri

İki kaynağın kendi marjinalleri bilinmeden cevaplanamaz. Bu bölümdeki %93,42’lik ham uyum ve yaklaşık 0,27’lik kappa, referans etiket ile sözlük kuralı arasında hesaplandı; bir insan–insan uyumu değil. Bağımsızlık varsayımı altında beklenen uyum \(p_e\) %90,99’du. Dengelenmiş altörneklemde ham uyum %60,28’e indi; orada örneklenen metinler de farklıydı. Ham uyum büyük ölçüde örneklemin özelliğidir: kappa’yı, marjinalleri ve karışıklık matrisini birlikte bildirin.

Bu deneyde olumsuzların %10’unu olumluya çevirmek macro-F1’i 76,21’den 76,42’ye, olumluların %10’unu olumsuza çevirmek 63,63’e götürdü. İlk fark +0,21 — “sıfır” değil, ama seed sapmasının içinde; ikincisi −12,58. İki durumda “%10”un ne anlama geldiğine dikkat edin: sınıfa bağlı oran aynı, çevrilen satır sayısı değil — yaklaşık 253’e karşı 3.747, yani on beş kat. Aynı sayıda etiket çevrildiğinde de yön fark ediyor (1.000 etikette 76,95’e karşı 71,11), ama aradaki uçurumun bir kısmı satır sayısından geliyor. Kendi görevinizde yönü, miktarı ve sınıf bileşimini ayrı ayrı ölçün.

Yalnızca 1,2 macro-F1 puanına bakarak değil. Bu derlemde %1’lik yapay test etiketi gürültüsü tek bir modelin skorunu 1,53 puan kaydırdı; bu düzey kayması, iki modelin ortak bir etiket sürümündeki farkını kendiliğinden silmez (rastgele dağılmış gürültüde bigram TF-IDF ile bag-of-words’ün sırası hiç değişmedi). Farkın etiket hatalarına duyarlılığı, iki modelin ayrıştığı satırlara bağlı: 4. bölümdeki 1,2 puanlık farkı, en elverişsiz biçimde yerleşmiş 18 etiket değişikliği siliyor. A ile B’nin ayrıştığı satırları mümkünse kör olarak okuyun, etiket hatalarını düzeltin ve farkı eşleştirilmiş bootstrap ile sınayın.

Hayır; önce okuyun. Bu 92 satırı silme koşulunda macro-F1 76,21’den 75,72’ye indi — rastgele 92 satırı silmenin 20 çekimdeki en düşük değerinin (75,91) de altına; etiketleri çevirmek de baseline’ı geçmedi. Ayrı bir test denetiminde seçilmiş 40 adayın yarısı tek okuyucuya göre şema sorunuydu; eğitimdeki 92 adayın dağılımı ise bilinmiyor. İşaretleri otomatik bir silme kararı olarak değil, bir inceleme sırası olarak kullanın.

Bu ızgarada 5.000 temiz etiket 71,69 aldı; 40.000 etiket %0 gürültüde 76,21, %5 gürültüde 68,18, %10’da 63,20. İki ölçülmüş hücre arasında doğrusal ara değerleme başa baş oranını yaklaşık %2,8 verir; bu, ölçülmüş bir eşik değil, okunan bir değerdir. Gerçek bir karar için etiketlerin maliyeti, gürültünün mekanizması ve yönü, belirsizlik ve test kümesinin kalitesi de gerekir. Hangisini seçerseniz seçin, test etiketlerine ayrı bir kalite bütçesi ayırın.

5.16 Mülakat soruları

Aşağıdaki sorular, bölümün sayılarını doğru kapsamda yorumlamayı ve henüz ölçülmemiş iddiaları ayırmayı sınar. Cevapların bir kısmı bu bölümün deneylerinde gözlendi; bir kısmı başka bir veri üzerinde doğrulama gerektirir.

Bu soruları cevaplarken tek bir oran vermek yerine yönü ve hangi bölmeyi söyleyin: gürültü hangi sınıftan hangi sınıfa gidiyor, kaç satırı etkiliyor, hatalar eğitimde mi testte mi.

  1. İki etiket kaynağı öğelerin %93’ünde uyuşuyor. Veri kümesi iyi mi? Bunu yalnızca bu sayıdan söyleyemezsiniz. Bu bölümde %93,42 ham uyum 0,27 Cohen kappa’sı verdi; çünkü 93,7/6,3’lük bir sınıf dağılımında, bağımsızlık varsayımı altında beklenen uyum \(p_e\) zaten %90,99. Aynı iki kaynak dengelenmiş bir altörneklemde yalnızca %60,28 uyuştu. Sayıları aktarırken koşulu da söyleyin: buradaki ikinci “etiketleyici” bir insan değil, bir sözlük kuralı; yani bu, aritmetiğin bir gösterimi, bir insan uyumu çalışması değil. Karışıklık matrisini ve iki kaynağın marjinallerini isteyin, kappa’yı kendiniz hesaplayın; ham uyumu, kappa’yı, sınıfa özgü uyumu ve marjinalleri birlikte raporlayın.

  2. Kaynak sınıfın %10’unu çevirmenin etkisi nedir? Önce hangi sınıftan hangi sınıfa ve toplam kaç satır diye sorun. Burada olumsuzdan olumluya yaklaşık 253 satır ve +0,21 macro-F1; olumludan olumsuza yaklaşık 3.747 satır ve −12,58 puan ölçüldü. Aynı sınıfa bağlı oran, on beş kat farklı satır sayısı. Fark yönle, değişen satır sayısıyla, modelle ve metrikle birlikte oluşuyor: aynı sayıda etiket çevrildiğinde de yön fark etti (1.000 etikette 76,95’e karşı 71,11). Olumsuzların %40’ını çevirme koşulu baseline’a yakın kaldı; bu yalnızca bu deneyin sonucu.

  3. Etiketleme bütçesi eğitime mi, teste mi gider? İkisine de görevin maliyetlerine göre pay ayırın ve nihai testin etiket kalitesini bağımsız olarak denetleyin. Her etiketin bağımsız olarak %2 olasılıkla çevrildiği varsayımda, gerçeğe göre kusursuz bir modelin beklenen doğruluğu %98 olur; bu kesin bir skor tavanı değildir. Bu bölümde %2’lik yapay test gürültüsü aynı modelin macro-F1’ini 76,21’den 73,13’e indirdi — başka bir modelin özgün etiketlerle aldığı 73,51’in altına. Koşulu da söyleyin: bu, iki farklı etiket sürümü arasında bir karşılaştırma; iki model aynı gürültülü etiketlerle puanlandığında sıra değişmedi.

  4. Yeni bir model üretimdekini 1,2 macro-F1 puanı farkla geçiyor. Yayına alalım mı? Tek bir sayıya dayanarak değil. Aynı etiket sürümünde iki modelin ayrıştığı satırları bağımsız ve mümkünse kör olarak inceleyin; eşleştirilmiş bir belirsizlik aralığı hesaplayın (macro-F1 için bootstrap, doğruluk için McNemar). %1’lik yapay gürültünün tek bir modelin skorunu 1,53 puan kaydırması, ortak bir testte model farkının aynı miktarda kaydığı anlamına gelmez. Soru “fark büyük mü” değil, “fark, iki modelin ayrıştığı satırlardaki etiket hatalarına dayanıyor mu”dur: bu bölümde 1,2 puanlık bir farkı, en elverişsiz biçimde yerleşmiş 18 etiket değişikliği sildi; rastgele dağılmış gürültü ise 2,69 puanlık bir farkın sırasını hiç değiştirmedi.

  5. 40.000 satırın içinde incelenecek adayları nasıl bulursunuz? Out-of-fold kestirimle: her katta bütün dönüşümleri (vektörleştirici dâhil) yalnızca eğitim kısmında eğitin, modelin karşı sınıfa verdiği puanı bir inceleme sırası olarak kullanın. Bu, confident learning’den (Northcutt, Jiang, vd. 2021) esinlenen tek eşikli bir kural; asıl yöntem sınıfa özgü eşikler kullanır. Sonra ölçümün öğrettiklerini söyleyin: 0,90 eşiği eğitimde 92 adayı işaretledi (vektörleştirici kat içinde eğitilince 123) ve 92 gerçek hata sayısı değildir; olumsuz etiketli bir satırın işaretlenme oranı on üç kat yüksek, bu bir hata oranı farkı değil; işaretli satırları silmek skoru rastgele satır silmekten daha çok düşürdü (75,72’ye karşı ortalama 76,15). Ayrı bir test denetiminde seçilmiş 40 adayın 20’si tek okuyucuya göre şema sorunuydu; iki kümenin oranlarını birbirine taşımayın. İşaret bir karar değil, bir okuma listesidir.

  6. Sızıntıyı nasıl kontrol edersiniz? Birebir ve yakın yinelemeleri, grup ve zaman bölmesini, her katın içindeki ön işlemeyi ve olası benchmark bulaşmasını (Kapoor ve Narayanan 2023) ayrı ayrı denetleyin. Bu derlemde metne göre tekilleştirme 1.657 fazla satırı çıkardı (1.055 yineleme grubu; 77’si iki etiketi birden taşıyor). Kontrollü test satırı kopyalama deneyinde %10 koşulu +0,93 macro-F1 getirdi; bu, gerçek bir iyileşmeden ayırt edilemeyecek büyüklükte, ama her %10’luk sızıntının getirisi değil. Bir sızıntı bulduğunuzda performansı hedef kullanımı temsil eden bir bölmede yeniden ölçün.

  7. İnsan etiketleyiciler uyuşmuyor. Ne yaparsınız? Önce ortak örnekleri okuyup uyuşmazlık nedenlerini ayırın: kılavuz boşluğu mu, kılavuzun farklı uygulanması mı, metnin kendisinin belirsizliği mi, hedef tanımının sınırı mı. Bu bölümde iki insanın uyuşmazlığı ölçülmedi; modelin en güçlü biçimde itiraz ettiği 40 test yorumunda tek okuyucu 20 şema sorunu kaydetti — karışık yorumlar, kesilmiş metinler, ürün yerine teslimattan söz edenler. Karışık ya da uygulanamaz gibi bir sınıf eklemek bir seçenek olabilir; ama yeni bir hedef tanımı, kılavuz, sınıf dağılımı ve yeniden değerlendirme gerektirir. Uyum düşük olduğunda soru, etiketleyicilerin mi tutarsız yoksa etiket kümesinin mi eksik tanımlı olduğudur; bunu ancak okuyarak ayırabilirsiniz.

5.17 Daha derine inmek için

Makalelerin ötesi
kaynak ne olduğu
Data-Centric AI (MIT) veri kalitesini ve model geliştirmeyi birlikte ele alan bir ders; hangi müdahalenin daha yararlı olduğu göreve bağlı
cleanlab Northcutt, Jiang, vd. (2021) yönteminin kütüphane hâli; out-of-fold olasılıklardan etiket sorunu adaylarını sıralar. Kullandığınız sürümün API’sini ve girdi koşullarını denetleyin, işaretleri elle okuyun
doccano kendi ortamınızda kurabileceğiniz bir etiketleme aracı; kurulum ve yönetim süresini kurumunuzun koşullarına göre planlayın
argilla uyuşmazlığın ortalaması alınıp yok edilmek yerine korunduğu etiketleme; Aroyo ve Welty (2015) savının işler hâli
Eugene Yan’ın yazıları etiketleme, kılavuzlar ve etiketlemenin ekonomisi üzerine pratik yazılar
  • Gebru vd. (2021) ve Mitchell vd. (2019) — geri kalan her şeyin atıfta bulunduğu iki dokümantasyon geleneği. Kısa, okunabilir ve bölüm başlıklarını doğrudan kopyalamaya değer.
  • Out-of-fold işaretlemenin arkasındaki teori için Northcutt, Jiang, vd. (2021), bu yöntemin on standart benchmark’ta ne bulduğu için Northcutt, Athalye, vd. (2021) — düzeltilmiş test etiketleriyle puanlanan modellerin sırasını değiştirmek için ne kadar az etiket gürültüsünün yettiği dâhil.
  • Artstein ve Poesio (2008) — NLP’de uyum ölçülerinin varsayımlarını, ölçtükleri birimi ve hangi katsayının hangi göreve uygun olduğunu ele alan kapsamlı bir tarama.
  • Aroyo ve Welty (2015) ve Plank (2022) — etiketleyici uyuşmazlığının, ortalaması alınıp yok edilecek bir gürültü değil, görev hakkında bir sinyal olduğu savı. Bu bölümün problem diye ele aldığı şeylerin çoğunu yeniden çerçeveliyor.
  • Sambasivan vd. (2021) — veri işinin pratikte neden hafife alındığına dair 53 görüşme. İlk endüstriyel projenizden sonra değil, önce okuyun.
  • 17 bilimsel alandaki sızıntıların bir taksonomisi için Kapoor ve Narayanan (2023); belirli bir yanlılık odağı taşıyan bir dokümantasyon pratiği olarak veri beyanları (data statements) için Bender ve Friedman (2018).
  • Burada kullanılan tek out-of-fold tekniğinden fazlasını istiyorsanız, Klie vd. (2023) otomatik etiketleme hatası tespit yöntemlerini tarayan bir çalışma.
  • Pustejovsky ve Stubbs (2012), bir etiketleme projesinin nasıl yürütüleceğini kitap uzunluğunda anlatıyor — şema tasarımı, kılavuzun adım adım geliştirilmesi, uzlaştırma. Bu bölüm işin gerekçesiyse, o kitap da el kitabıdır.
  • Marcus vd. (1993) tarihsel bir belge olarak okumaya değer. Bir NLP kuşağı, ayrıştırma ağacının neye benzediği konusunda Penn Treebank kılavuzları sayesinde anlaştı. Bu kılavuzlar, yıllar boyunca ciddiye alınan “karara bağlanmış vakaların” neye benzediğini de gösteriyor.
  • Bowman ve Dahl (2021), giderek bağlayıcı kısıtın model kapasitesi değil benchmark kalitesi olduğu üzerine — bu bölümün test etiketlerinin kalitesi üzerine söylediklerinin doğal devamı.

5.18 Uygulama: küçük bir etiketleme projesini baştan sona yürütün

İkili çalışın. Uygulamanın çıktısı: gözden geçirilmiş bir etiketleme kılavuzu, iki tur için uyum ölçüleri ve uyuşmazlıkların kısa bir analizi.

  1. İki dengeli 100’lük tur hazırlayın. Türkçe yorum derleminden sabit bir seed’le, her tur için referans etiketi olumsuz 50 ve olumlu 50 örnek seçin; tur içindeki sırayı da aynı seed’le karıştırın. Sebebi Uzlaştırma kısmında: düz rastgele 200 örnekte yalnızca on üç kadar olumsuz olurdu. Dengeli 200 örneği karıştırıp ikiye bölmek yetmez, çünkü yarılar tam 50/50 çıkmayabilir ve iki turun kappa’sı bileşim farkı yüzünden de ayrışır. İki kişi de birebir aynı öğeleri alır ve referans etiketleri görmez. Bu amaçlı denge derlemin doğal sınıf oranını temsil etmez; buradan çıkan kappa seçtiğiniz orana aittir.
  2. Birlikte kılavuz v0’ı yazın — yalnızca sınıf tanımları, karara bağlanmış vaka yok. On dakika, daha fazlası değil.
  3. İlk turun 100 örneğini bağımsız olarak etiketleyin. ATLA seçeneğine izin verin. Ne kadar sürdüğünü kaydedin.
  4. Ham uyumu, karışıklık matrisini ve bootstrap aralığıyla birlikte Cohen kappa’sını raporlayın. ATLA kararlarını nasıl saydığınızı da yazın: ayrı bir kategori mi, hesap dışı mı. Kendi sayınızı bu bölümdeki 0,2698 ile karşılaştırmayın — o, insan–insan değil referans etiket–sözlük karşılaştırması ve ikisi farklı büyüklükler. Yayımlanmış çalışmaların kappa değerlerini de yalnızca görev, sınıf oranı ve kodlama düzeni sizinkine benziyorsa bağlam olarak kullanın. Düşük bir değer tek başına kılavuzun kusurlu olduğunu göstermez.
  5. Her uyuşmazlığı birlikte okuyun. Tekrar eden durumları verinin desteklediği kadar gruplayın; tek kalan ya da çözemediğiniz vakaları da kaydedin.
  6. Kılavuz v1’i yazın; tekrar eden her durumu, iki taraf için de çözülmüş birer örnekle birlikte karara bağlanmış bir vaka olarak ekleyin. Bu bölümdeki biçimi izleyin.
  7. İkinci turun 100 örneğini v1 altında bağımsız olarak etiketleyin ve uyumu yeniden hesaplayın. Değişimi raporlayın, ama yalnızca kılavuza bağlamayın: ikinci turda kılavuzla birlikte metinler ve sizin deneyiminiz de değişti. Kılavuzun katkısını ayırmak karşılaştırmalı bir tasarım ister; örneğin aynı öğeleri v0 ile etiketleyen ikinci bir çift.
  8. Verilen referans etiketlerle karşılaştırın. İkinizin uyuştuğu ama referans etiketin ayrıştığı her örneği dört başlıktan birine kaydedin: açık çelişki, hedef farkı (referans başka bir soruyu yanıtlıyor), şema sınırı (ikili etiket metni ifade edemiyor) ve çözülemeyen belirsizlik. İki kişinin uyuşması referansı kendiliğinden yanlış yapmaz; üçüncü bir bağımsız değerlendirme ya da uzlaştırma olmadan tek bir “doğru” etiketi zorlamayın. Açık çelişki ile şema sınırı, etiket denetiminde kullanılan iki kategorinin aynısı (Bölüm 5.6).

Teslim edilecek: kılavuz v1, iki karışıklık matrisi, aralıklarıyla birlikte iki kappa değeri, uyuşmazlık gruplarının listesi ve şemanızın temsil edemediği şeyi anlatan bir paragraf.

5.19 Alıştırmalar

  1. Kullanabileceğiniz açık bir veri kümesi seçin ve bu bölümdeki altı soruyu yanıtlayın: metni kim üretti, etiketleri kim ve nasıl üretti, hangi soruyu yanıtlıyorlardı, lisans ve kullanım koşulları sizin kullanımınızı kapsıyor mu, kişisel verinin işlenmesi için hangi hukuki dayanak belgelenmiş ve ne eksik. Yanıtlayamadıklarınızı “belgelenmemiş” diye kaydedin. Verinin herkese açık olmasını izin ya da rıza saymayın.
  2. İki etiketleyici 100 örneği etiketliyor ve 90’ında uyuşuyor. Önce ikisi de olumlu etiketi 50 kez, sonra ikisi de 95 kez kullanıyor. Her durum için 2×2 tabloyu kurun (bu marjinaller ve 90 uyumla yalnızca bir tablo mümkün; nedenini gösterin), iki kişinin marjinallerini ve \(p_e\) değerini yazın, Cohen kappa’sını hesaplayın. Ardından ham uyumu %90’da tutup marjinalleri değiştirin ve kappa’nın nasıl değiştiğini gösterin. İki kişinin marjinalleri ve ham uyum birlikte sabitken kappa neden değişemez? Son olarak farkı, %90 uyumun %90 uyum olduğuna inanan birine anlatın.
  3. Rastgele-100 denetimini kendi veri kümenizde tekrarlayın. Her satırı hata, karara bağlanamaz ya da tamam diye sınıflandırın; ölçütleri okumaya başlamadan önce yazın. Sayıları raporlayın. Açık hata sayısı sıfırsa, bağımsız örnekleme varsayımı altında yaklaşık %95 üst sınır olarak üç kuralını (\(3/100\)) verin. Sıfır değilse üç kuralı uygulanmaz; bir binom güven aralığı (örneğin Wilson) hesaplayın.
  4. Gürültü-yönü deneyini dengeli bir veri kümesinde tekrarlayın. İki yön arasındaki asimetri ayakta kalıyor mu? Sonucu, bu bölümde yapıldığı gibi sınıf sayılarından açıklayın.
  5. Kendi göreviniz için ikinci bir etiketleyici kurun — bir sözlük, bir regex ya da bir LLM prompt’u. Referans etiketlere karşı kappa’yı hesaplayın, sonra sınıf açısından dengelenmiş bir altörneklemde yeniden hesaplayın. İkisini de raporlayın ve hangisini bir makaleye koyacağınızı söyleyin.
  6. Ön işlemeyi her katın içinde eğiterek kendi eğitim kümeniz için out-of-fold olasılıkları üretin ve en yüksek puanlı yirmi adayı, saklanan etiketi görmeden okuyun. Her birini açık çelişki, şema ya da model hatası diye sınıflandırın. Sonra üç koşulu bağımsız bir test kümesinde karşılaştırın: adayları atmak, etiketlerini çevirmek, yalnızca elle doğruladıklarınızı onarmak. Son olarak, kurduğunuz sürümün girdi koşullarına uyarak cleanlab’in find_label_issues işlevini çalıştırın; bu işlev sınıfa özgü eşikler kullanır, 0,90’lık sabit eşikle aynı yöntem değildir. İki listenin örtüşmesini ve elle doğrulanmış aday verimini ayrı ayrı raporlayın: örtüşme bir doğruluk ölçüsü değildir.
  7. İnandığınız bir benchmark sonucu alın — kendinizinki ya da yayımlanmış bir tanesi — ve sızıntı kısmında (Bölüm 5.9) sıralanan altı sızıntı türünün hepsi için denetleyin. Hangi kontrolleri gerçekten yapabildiğinizi, hangilerini yapamadığınızı raporlayın.
  8. Bütçe ızgarasından 2.500 temiz etiketin skorunu ve 40.000 etiketin her gürültü düzeyindeki skorunu alın. Başa baş oranının hangi iki ölçülmüş düzey arasında kaldığını belirleyin. Arada doğrusal değişim varsayarak yaklaşık oranı ayrıca hesaplayın ve ara değerleme diye işaretleyin. Sonra bu tablonun, bütçeyi eğitim ve test etiketlemesi arasında bölmek için neyi içermediğini yazın: etiket başına maliyet de test etiketlerindeki hata oranının bir kestirimi de tabloda yok.
  9. Ham derlemde metne göre tekilleştirmenin çıkardığı 1.657 fazla satırın hangi yineleme gruplarından geldiğini bulun ve bölümdeki sayıları yeniden üretin: 1.055 grup, 77’si iki etiketi birden taşıyor. Bu 77 gruptan örnekler okuyun; açık hata, eksik bağlam (aynı cümle başka bir ürün için yazılmış olabilir) ve şema belirsizliğini ayırın. Aynı incelemeyi normalleştirilmiş yakın yinelemelerde yapın (“güzel ürün” hem olumlu hem olumsuz etiketlenmiş mi?). Bu seçilmiş grupların çelişki oranını rastgele-100 denetiminin genel hata kestirimiyle eşitlemeyin; neden eşitlenemeyeceğini bir cümleyle yazın.