Elimizde yaklaşık 50.000 tez kaydı var. Her tezin bir özeti (abstract) ve kullanıcılar tarafından atanmış konu etiketleri bulunuyor. Etiketler "Bilgisayar Mühendisliği", "Tarih", "Psikoloji" gibi 198 farklı konu alanından oluşuyor.
Sorun şu: etiketler insanlar tarafından atandığı için hatalar kaçınılmaz. Bir yapay zeka tezi "Tarih" olarak etiketlenmiş olabilir, disiplinlerarası bir tezde ilgili ikinci etiket eksik bırakılmış olabilir, ya da çok niş bir konu yanlış bir genel kategoriye sokulmuş olabilir. 50.000 kaydı tek tek elle kontrol etmek mümkün değil.
Amaç: Bu hataları otomatik olarak tespit edip, insan incelemesi gereken kayıtları daraltmak.
Her tezin özetini bir yapay zeka modeli (embedding modeli) ile sayısal bir vektöre çeviriyoruz. Bu vektör, metnin anlamını yüksek boyutlu bir uzayda temsil eder. Aynı konudaki tezlerin vektörleri birbirine yakın, farklı konudakilerin vektörleri birbirinden uzak olur.
Bu özelliği kullanarak şu mantığı kuruyoruz: eğer bir tezin vektörü, atanmış etiketinin tipik vektöründen çok uzaksa, o etiket muhtemelen yanlış veya eksiktir.
İlk akla gelen yaklaşım, tüm tezleri kümeleme algoritmasıyla gruplayıp küme ile etiket uyuşmazlığına bakmaktır. Ancak bu bizim verimizde iyi çalışmıyor çünkü:
Bunun yerine etiket-merkezli bir yaklaşım kullanıyoruz: kümeleme yapmıyoruz, zaten var olan etiketleri referans noktası olarak kullanıyoruz.
Her etiket için, o etikete sahip tüm tezlerin vektör ortalamasını alıyoruz. Bu ortalama vektöre "centroid" diyoruz. Centroid, o konunun tipik tezini temsil eder.
"Tarih" centroid'i = 1.438 tarih tezinin vektör ortalaması
"Kimya" centroid'i = 724 kimya tezinin vektör ortalaması
...
Her tez için üç bağımsız sinyal hesaplıyoruz:
Sinyal 1 — Etiket mesafesi: Tezin vektörü ile atanmış etiketlerinin centroid'leri arasındaki uzaklık. Yüksek mesafe = tez etiketine benzemiyor.
Örnek: Bir tez "Tarih" etiketli ama vektörü Tarih centroid'inden çok uzak → şüpheli
Sinyal 2 — Daha iyi etiket var mı? Atanmamış etiketlerden herhangi biri, atanmış etiketlerden daha mı yakın? Pozitif fark = başka bir etiket daha uygun görünüyor.
Örnek: Tez "Eğitim" etiketli ama "Uluslararası İlişkiler" centroid'ine daha yakın → etiket yanlış olabilir
Sinyal 3 — Grup içi aykırı mı? Aynı etiketteki diğer tezlerle karşılaştırıldığında, bu tez grubun en uç noktasında mı? Her etiket grubunun centroid'ine en uzak %10'u aykırı olarak işaretleniyor.
Örnek: 1.438 tarih tezinden biri, Tarih centroid'ine en uzak %10'da → grup içi aykırı
Üç sinyal tek bir skora birleştiriliyor. Bu skor, verinin kendi dağılımına göre (Z-score + percentile) değerlendiriliyor ve her kayda bir aksiyon atanıyor:
| Aksiyon | Anlam | Ne Yapılmalı |
|---|---|---|
| SORUN_YOK | Etiket tutarlı görünüyor | İşlem gerektirmez |
| DUSUK_ONCELIK | Hafif sapma var | Toplu temizlikte bakılabilir |
| GOZDEN_GECIR | Orta düzey şüphe | Zaman olduğunda kontrol |
| ETIKET_DEGISIKLIK_ONERISI | Başka etiket daha uygun | Önerilen etiketle karşılaştır |
| MUTLAKA_INCELE | Yüksek şüphe | Öncelikli manuel kontrol |
| KUCUK_ETIKET_KONTROL | Etiketin kendisi çok az kayıtlı | Etiket güvenilirliğini değerlendir |
Duplike etiketler: Aynı konunun farklı yazımları tespit edilip birleştirilmiştir. Örneğin "Healtcare Management" (yazım hatası) ve "Healthcare Management" aynı etiket olarak işlenmektedir.
Küçük etiketler: 10'dan az kayıtlı etiketlerin (ör. "Askeri Sağlık Hizmetleri" — 1 kayıt) centroid'i istatistiksel olarak güvenilir değildir. Bu etiketlere sahip kayıtlar ayrı değerlendirilmektedir.
Multi-label kayıtlar: Bir tez birden fazla etikete sahipse, mesafe hesabı tüm etiketlerin centroid'lerinin ortalamasına göre yapılmaktadır.
Sistem dört dosya üretmektedir:
| Dosya | İçerik |
|---|---|
outlier_report.csv |
Her tez için şüphe skoru, aksiyon önerisi, önerilen alternatif etiket |
missing_labels.csv |
Atanmamış ama çok yakın çıkan etiket önerileri |
intra_label_outliers.csv |
Kendi etiket grubu içinde aykırı olan kayıtlar |
summary.json |
Genel istatistikler ve skor dağılımı |
Bu yaklaşım iki deney üzerinden geliştirilmiştir: