Ders 07 / 24
İçerik Envanteri ve Gruplama
Yapının içerikten türetilmesi; envanterin sütunları, kart gruplama verisinden benzerlik matrisi kurulması, eşikle gruplama ve üzerinde uzlaşılmayan kartların saptanması.
İçindekiler
Problem tanımlandı ve çözüm alanı açık. İlk soru ekranların kendisi değil, aralarındaki yapıdır. Katalog arayüzü binlerce kayıt, onlarca konu ve bir dizi işlem taşıyor; bunların hangi başlıklar altında toplanacağı bir üslup sorusu değildir. Yanlış gruplama, kullanıcının aradığı şeyi doğru yerde aramamasına ve hiçbir arama kutusunun kurtaramayacağı bir kayba yol açar.
Bilgi mimarisi (information architecture), içeriğin gruplanması, adlandırılması ve aralarındaki ilişkilerin kurulmasıdır. Bu ders yapının nereden türetildiğini gösterir: önce elde ne olduğunu sayan bir envanter, sonra kullanıcıların bu ögeleri nasıl grupladığını ölçen bir çalışma.
Envanter Neyi Sayar
İçerik envanteri (content inventory), arayüzün taşıdığı her ögenin listesidir. Liste olmadan gruplama yapılamaz; gruplanan şeyin ne olduğu bilinmez. Envanterin beş sütunu vardır.
- Öge. İçeriğin adı. Ekran adı değil, içeriğin kendisi: “ödünç koşulları” bir ögedir, “yardım sayfası” bir kaptır.
- Tür. Kayıt mı, açıklama metni mi, işlem mi, dış bağlantı mı. Tür, ögenin nasıl gösterileceğini değil, nasıl gruplanabileceğini belirler.
- Görev bağı. Öge hangi göreve hizmet ediyor. Üçüncü derste kurulan görev envanterine bağlanır. Hiçbir göreve bağlanamayan öge, envanterde bir soru işaretiyle kalır.
- Sahip. İçeriği kim güncelliyor. Sahibi olmayan içerik eskir ve eskimiş içerik yanlış bilgidir.
- Son güncelleme. Ögenin ne kadar zamandır değişmediği.
Son iki sütun gruplama kararını doğrudan etkilemez ama envanterin en çok işe yarayan parçasıdır: yapı kurulmadan önce silinmesi gereken içerik burada görünür. Katalog arayüzünde hiçbir göreve bağlanamayan ve iki yıldır güncellenmemiş bir öge, gruplanacak değil kaldırılacak bir ögedir.
Kullanıcı Gruplaması Ölçülür
Gruplamayı tasarım ekibinin yapması, kurumun kendi yapısını arayüze kopyalamasıyla sonuçlanır. Kütüphanenin iç örgütlenmesinde “ödünç birimi” ile “referans birimi” ayrı olabilir; kullanıcı bu ayrımı bilmez ve “kurumlar arası ödünç” ögesini hangi birimin yürüttüğüne göre aramaz.
Kart gruplama (card sorting), katılımcılara envanterdeki ögeleri kart olarak verip kendilerine göre gruplamalarını istemektir. Grup adlarını katılımcı koyuyorsa açık, adlar önceden veriliyorsa kapalı gruplamadır. Açık gruplama yapıyı ve adlandırmayı birlikte ölçer; kapalı gruplama var olan bir yapının sınanmasına yarar.
Sonuç bir örüntü yığınıdır ve tek tek okunamaz. On katılımcının on ayrı gruplaması, kartların birlikte gruplanma sayısına indirgenir.
// kart-gruplama.mjs — kart gruplama verisinden benzerlik matrisi ve gruplama // Envanterdeki 15 icerik ogesi ve her ogenin beklenen kumesi (dogrulanacak varsayim) const KARTLAR = [ ["arama ipuclari", "kesif"], ["konu basliklari", "kesif"], ["yeni gelenler", "kesif"], ["veri tabanlari", "kesif"], ["odunc kosullari", "odunc"], ["gecikme ucreti", "odunc"], ["uzatma", "odunc"], ["rezervasyon", "odunc"], ["kurumlar arasi odunc", "odunc"], ["raf plani", "yerinde"], ["calisma salonlari", "yerinde"], ["acilis saatleri", "yerinde"], ["uye olma", "hesap"], ["sifre yenileme", "hesap"], ["iletisim", "belirsiz"], ]; const KUMELER = ["kesif", "odunc", "yerinde", "hesap"]; // Belirlenimci sozde rastgele uretec (mulberry32) function uretec(tohum) { let a = tohum >>> 0; return () => { a = (a + 0x6d2b79f5) >>> 0; let t = Math.imul(a ^ (a >>> 15), 1 | a); t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; return ((t ^ (t >>> 14)) >>> 0) / 4294967296; }; } const rnd = uretec(20260101); // 10 katilimcinin kartlari gruplamasi: beklenen kumeye %80 uyum, "belirsiz" kart serbest const KATILIMCI = 10; const sortlar = []; for (let k = 0; k < KATILIMCI; k++) { sortlar.push( KARTLAR.map(([, beklenen]) => beklenen === "belirsiz" || rnd() > 0.8 ? KUMELER[Math.floor(rnd() * KUMELER.length)] : beklenen ) ); } // Benzerlik matrisi: kac katilimci i ile j'yi ayni gruba koydu const n = KARTLAR.length; const M = Array.from({ length: n }, () => new Array(n).fill(0)); for (const s of sortlar) for (let i = 0; i < n; i++) for (let j = 0; j < n; j++) if (i !== j && s[i] === s[j]) M[i][j]++; console.log("benzerlik matrisi (10 katilimcinin kaci ayni gruba koydu)"); console.log(" ".repeat(24) + KARTLAR.map((_, i) => String(i + 1).padStart(3)).join("")); KARTLAR.forEach(([ad], i) => { console.log( `${String(i + 1).padStart(2)} ${ad.padEnd(21)}` + M[i].map((v, j) => (i === j ? " ." : String(v).padStart(3))).join("") ); }); // Uzaklik = 1 - benzerlik; ortalama bag ile birlestir, esik 0.5'te dur const uzak = (i, j) => 1 - M[i][j] / KATILIMCI; let gruplar = KARTLAR.map((_, i) => [i]); const bagUzakligi = (a, b) => { let t = 0; for (const i of a) for (const j of b) t += uzak(i, j); return t / (a.length * b.length); }; const ESIK = 0.5; while (gruplar.length > 1) { let en = Infinity, cift = null; for (let i = 0; i < gruplar.length; i++) for (let j = i + 1; j < gruplar.length; j++) { const d = bagUzakligi(gruplar[i], gruplar[j]); if (d < en) { en = d; cift = [i, j]; } } if (en > ESIK) break; const [i, j] = cift; gruplar = gruplar.filter((_, x) => x !== i && x !== j).concat([gruplar[i].concat(gruplar[j])]); } gruplar = gruplar.map((g) => g.sort((a, b) => a - b)).sort((a, b) => a[0] - b[0]); console.log(`\nesik ${ESIK} ile olusan gruplar (${gruplar.length} grup)`); for (const g of gruplar) console.log(` ${g.map((i) => KARTLAR[i][0]).join(", ")}`); // Her kartin kendi grubuna ve en yakin ikinci gruba baglilik farki console.log("\nkart kendi grubu en yakin diger fark"); const ortBenzerlik = (i, g) => { const d = g.filter((x) => x !== i); return d.length ? d.reduce((t, j) => t + M[i][j], 0) / d.length / KATILIMCI : 0; }; for (let i = 0; i < n; i++) { const kendi = gruplar.find((g) => g.includes(i)); const a = ortBenzerlik(i, kendi); const digerleri = gruplar.filter((g) => g !== kendi).map((g) => ortBenzerlik(i, g)); const b = digerleri.length ? Math.max(...digerleri) : 0; console.log( `${KARTLAR[i][0].padEnd(20)} ${a.toFixed(2).padStart(11)} ${b.toFixed(2).padStart(14)} ${(a - b).toFixed(2)}${a - b < 0.2 ? " BELIRSIZ" : ""}` ); }
benzerlik matrisi (10 katilimcinin kaci ayni gruba koydu)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 arama ipuclari . 9 8 10 1 1 0 0 1 0 1 1 2 0 2
2 konu basliklari 9 . 7 9 1 1 0 0 1 0 2 2 2 0 2
3 yeni gelenler 8 7 . 8 0 2 1 1 2 0 0 1 2 1 3
4 veri tabanlari 10 9 8 . 1 1 0 0 1 0 1 1 2 0 2
5 odunc kosullari 1 1 0 1 . 8 8 9 7 0 1 0 1 0 2
6 gecikme ucreti 1 1 2 1 8 . 8 9 7 0 0 1 0 0 3
7 uzatma 0 0 1 0 8 8 . 9 7 0 1 0 1 1 3
8 rezervasyon 0 0 1 0 9 9 9 . 8 0 1 0 0 0 3
9 kurumlar arasi odunc 1 1 2 1 7 7 7 8 . 0 1 0 1 1 3
10 raf plani 0 0 0 0 0 0 0 0 0 . 6 8 2 1 5
11 calisma salonlari 1 2 0 1 1 0 1 1 1 6 . 7 0 1 3
12 acilis saatleri 1 2 1 1 0 1 0 0 0 8 7 . 1 0 3
13 uye olma 2 2 2 2 1 0 1 0 1 2 0 1 . 7 2
14 sifre yenileme 0 0 1 0 0 0 1 0 1 1 1 0 7 . 1
15 iletisim 2 2 3 2 2 3 3 3 3 5 3 3 2 1 .
esik 0.5 ile olusan gruplar (5 grup)
arama ipuclari, konu basliklari, yeni gelenler, veri tabanlari
odunc kosullari, gecikme ucreti, uzatma, rezervasyon, kurumlar arasi odunc
raf plani, calisma salonlari, acilis saatleri
uye olma, sifre yenileme
iletisim
kart kendi grubu en yakin diger fark
arama ipuclari 0.90 0.20 0.70
konu basliklari 0.83 0.20 0.63
yeni gelenler 0.77 0.30 0.47
veri tabanlari 0.90 0.20 0.70
odunc kosullari 0.80 0.20 0.60
gecikme ucreti 0.80 0.30 0.50
uzatma 0.80 0.30 0.50
rezervasyon 0.88 0.30 0.57
kurumlar arasi odunc 0.72 0.30 0.42
raf plani 0.70 0.50 0.20 BELIRSIZ
calisma salonlari 0.65 0.30 0.35
acilis saatleri 0.75 0.30 0.45
uye olma 0.70 0.20 0.50
sifre yenileme 0.70 0.10 0.60
iletisim 0.00 0.37 -0.37 BELIRSIZ
Matrisin Okunması
Matris, tek tek gruplamalardan çıkarılamayan bir yapıyı gösterir. Birinci ve dördüncü kartlar — arama ipuçları ile veri tabanları — on katılımcının onunda aynı gruba konmuş. Beşinci ile sekizinci kartlar dokuz katılımcıda birlikte. Bu değerler bir uzlaşma ölçüsüdür: yüksek sayı, kullanıcıların o iki ögeyi aynı işin parçası saydığını gösterir.
Eşik 0.5 seçildi; yani iki öge, katılımcıların en az yarısında birlikte gruplanıyorsa aynı gruba giriyor. Eşik bir doğa yasası değil, denetlenebilir bir karardır. Yükseltilirse daha çok ve daha küçük grup çıkar, düşürülürse gruplar birleşir. Önemli olan eşiğin yazılmış olmasıdır: “bunlar birlikte durmalı” cümlesi tartışılabilir, “birlikte gruplanma oranı 0.7, eşik 0.5” cümlesi denetlenebilir.
Beş grup çıktı ve dördü kendi içinde tutarlı. Beşinci “grup” tek kart taşıyor.
Uzlaşılmayan Kart Yapının En Önemli Bulgusudur
Son tablodaki bağlılık farkı, her kartın kendi grubuna olan ortalama bağlılığı ile en yakın ikinci gruba olan bağlılığı arasındaki farktır. Fark büyükse kart yerini bulmuştur; küçükse katılımcılar uzlaşmamıştır.
İletişim kartı hiçbir grubun içinde kalmadı. En yüksek bağlılığı 0.37 ile yerinde kullanım grubuna; hiçbir eşiği geçmiyor. Bu bir veri kusuru değil, bir bulgudur: kullanıcılar iletişim bilgisinin nerede aranacağı konusunda uzlaşmıyor. Böyle bir kart için üç seçenek vardır ve seçim veriye göre yapılır.
- Birden çok yerde gösterilir. Bilgi ucuzsa ve kısaysa yinelenmesi zararsızdır; iletişim bilgisi hem yerinde kullanım grubunda hem hesap grubunda görünebilir.
- Yapının dışına alınır. Bazı ögeler gruplara değil, her ekranda erişilebilir bir alana aittir. Altbilgi bunun için vardır.
- Bölünür. “İletişim” tek bir öge olmayabilir: rafla ilgili soru sorma ile üyelik sorunu bildirme ayrı işlerdir ve ayrı gruplara giderler. Uzlaşmama, ögenin kendi içinde ikiye ayrıldığının işareti olabilir.
Raf planı kartı da işaretlendi: kendi grubuna bağlılığı 0.70 ama iletişim kartıyla birlikte gruplanma oranı 0.50. Katılımcıların yarısı, rafın yerini sormakla rafın planına bakmayı aynı iş sayıyor. Bu, dördüncü derste ölçülen “kitap rafta bulunamıyor” probleminin bilgi mimarisi tarafındaki izidir: kullanıcı raf bilgisini nerede arayacağını bilmiyor.
Grupların Adlandırılması
Gruplar oluştu ama adları yok. Ad, kart gruplamanın açık biçiminde katılımcıların kendi koyduğu adlardan çıkarılır; aynı grubu adlandıran on iki ifade içinden en sık kullanılan sözcük seçilir. Kurumun iç sözlüğü buraya karışmamalıdır: kullanıcı “dolaşım hizmetleri” demiyorsa başlık “dolaşım hizmetleri” olmaz.
Adlandırmada iki ölçüt vardır. Ad, grubun bütününü kapsamalıdır; “uzatma” başlığı beş ögeli ödünç grubunun yalnızca birini adlandırır. Ad, komşu gruptan ayırt edici olmalıdır; “kütüphane bilgileri” ile “genel bilgi” başlıkları yan yana durduğunda kullanıcı hangisine gireceğini seçemez ve seçemediği için ikisini de dener.
Kart Gruplamanın Etik Çerçevesi
Kart gruplama bir araştırma oturumudur ve önceki dersteki kurallar burada da geçerlidir: katılımcı ne için gruplama yaptığını bilerek onay verir, oturum kaydı kod adıyla tutulur ve ham kayıt çözümlemeden sonra saklama sınırı içinde silinir. Yukarıdaki matriste tek bir katılımcının gruplaması görünmüyor; yalnızca birlikte gruplanma sayıları var.
Envanterin kendisine ait iki kural daha eklenir. Kişisel veri taşıyan içerik envanterde işaretlenir: ödünç geçmişi, üyelik bilgisi ve arama geçmişi kişiye bağlıdır ve bunların gruplama kararı erişim kararıyla birlikte verilir. Envanterde her kişisel veri ögesinin saklama süresi yazılır; süresi yazılmayan bir öge, arayüzde bir yere konmadan önce belirsiz süreli saklanıyor demektir.
Özet
- İçerik envanteri öge, tür, görev bağı, sahip ve son güncelleme sütunlarını taşır; hiçbir göreve bağlanamayan ve güncellenmeyen öge gruplanacak değil kaldırılacak ögedir.
- Kart gruplama, yapının kurumun iç örgütlenmesinden değil kullanıcının zihinsel gruplamasından türetilmesini sağlar; açık biçim yapıyı ve adlandırmayı birlikte ölçer.
- Tek tek gruplamalar okunamaz; veri, kartların birlikte gruplanma sayısını veren benzerlik matrisine indirgenir ve yazılı bir eşikle gruplanır.
- Bağlılık farkı düşük olan kart bir kusur değil bulgudur; örnek veride bir kart hiçbir gruba bağlanamadı ve çözümü yineleme, yapının dışına alma ya da ögeyi bölmedir.
- Grup adları katılımcıların sözcüklerinden seçilir; ad grubun bütününü kapsamalı ve komşu gruptan ayırt edici olmalıdır.
- Kişisel veri taşıyan içerik envanterde işaretlenir ve saklama süresiyle birlikte yazılır.
Sonraki Adım
Beş grup ve grup adları elde edildi, ama bu henüz bir gezinme değil. Grupların kaç tanesinin aynı anda gösterileceği, alt kırılımların kaç düzey ineceği ve kullanıcının bir ögeye kaç tıklamayla ulaşacağı ayrı bir karardır. Sonraki ders hiyerarşik, düz ve matris gezinme modellerini karşılaştırır; menü genişliği ile derinlik arasındaki ödünleşimi hesaplar ve toplam tarama maliyetini en küçükleyen genişliği bulur.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.