Konu Başlıkları
Yükleniyor...

El Yazısı Tanıma Hatası Aramayı Nerede Kırar

El Yazısı Notlarda Arama: Kelime Hatası, İndeks ve Arayüz Kararları

El yazısı tanımada karakter hatası küçük görünür, kelime hatası büyüktür, arama ise kelimelerle çalışır. Bu üç halkalı zincir, kalemle not tutulan uygulamalarda "yazdığımı sonra bulamıyorum" şikayetinin neredeyse tamamını açıklıyor. Çözüm tanıma doğruluğunu birkaç puan daha kovalamak değil; indeksi ve arayüzü, metnin hatalı olacağını baştan kabul ederek kurmak.

Karakter hatası ile kelime hatası aynı ölçek değil

Karakter başına %1,6 hata yapan bir tanıyıcı düşünün. Kulağa iyi geliyor. Ama kullanıcı karakter aramaz, kelime arar.

Hataların birbirinden bağımsız dağıldığını varsayalım. Altı harfli bir kelimenin tamamen doğru çıkma ihtimali 0,984 üzeri 6, yani yaklaşık 0,91. Kelime düzeyinde hata oranı %9 civarına oturuyor: her on bir kelimeden biri bozuk. Karakter tarafındaki %1,6 ile kelime tarafındaki %9 arasındaki fark, bir ölçüm farkı değil, aynı ölçümün iki farklı birimde okunması.

Türkçede tablo daha da sertleşiyor, çünkü eklerle uzayan kelimeler zincirin halkasını uzatıyor. "Defterlerimdeki" gibi on beş harfi geçen bir kelimede aynı karakter hatasıyla doğru çıkma ihtimali 0,75'e düşer. Yani uzun kelimelerin dörtte biri bozuk gelir. Aramada takıldığınız kelimeler tam olarak bunlar oluyor, çünkü ayırt edici olanlar da genelde uzun olanlar.

Pratikte gerçek kelime hatası bu hesabın biraz altında kalır: hatalar rastgele serpilmez, kötü yazılmış birkaç kelimede kümelenir. Bu iyi haber sayılmaz, sadece bozuk kelimelerin sayısını azaltıp aynı kelimeleri sürekli bozuk verir.

Tam eşleşme aramasının çalışmayacağını kabul edin

Anahtar kelime eşleşmesi bu veri üzerinde işe yaramaz. Tek harfi bozulan kelime indekste bambaşka bir dizedir, aramanız sıfır sonuç döner ve kullanıcı notun kayıp olduğunu sanır. Sıfır sonuç, kullanıcı deneyimi açısından yanlış sonuçtan daha zararlıdır; en azından yanlış sonuç aramaya devam edilecek bir iz bırakır.

Aramayı ham tanıma çıktısında kelime kelime çalıştırmayın, karakter n-gramları üzerinden indeksleyin. Altı harfli bir kelimede tek karakter bozulduğunda o kelimenin trigramlarının çoğu ayakta kalır, dolayısıyla eşleşme skoru düşer ama sonuç listeden düşmez. PostgreSQL'de pg_trgm, Elasticsearch'te ngram analizörü bunu hazır veriyor; üçüncü parti bir arama servisine geçmeden önce mevcut veritabanınızda deneyin, çoğu not uygulamasının hacminde farkı kullanıcı hissetmez.

İkinci katman, tanıyıcının ürettiği alternatifleri saklamaktır. Tanıma motorları zaten her kelime için sıralı adaylar üretir ve çoğu uygulama en üstteki adayı alıp gerisini çöpe atar. İkinci ve üçüncü adayı da indekse yazmak, arama tarafında ciddi bir kazanç sağlar ve depolama maliyeti ihmal edilebilir düzeyde kalır.

Semantik arama neyi kurtarır, neyi kurtarmaz

Latent semantic indexing ve benzeri semantik yöntemler, kelimeler arasındaki istatistiksel ilişkiyi kullanarak doğrudan eşleşme olmadan da ilgili içeriği getirir. Uzun notlarda işe yarar. Aynı kavram metin boyunca birkaç kez geçtiği için birkaç kelimenin bozulması dokümanın konumunu bozmaz.

Kısa notlarda çalışmaz. Üç satırlık bir toplantı notunda kavramın tekrar etme şansı yok, sinyal zaten zayıf ve bir bozuk kelime sinyalin yarısını götürüyor.

Asıl sınır başka yerde: semantik yöntemler benzerlik üzerinden çalışır, benzeri olmayan şeyi bulamaz. Özel isim, telefon numarası, fatura no, ilaç dozu, bir API anahtarının ilk hanesi. Bunların istatistiksel komşusu yoktur; "Kayaalp" bozuk tanındığında hiçbir semantik model onu geri getirmez. Kullanıcının bir nota altı ay sonra dönme sebebi ise çoğunlukla tam olarak bu tekil bilgiler oluyor.

"Tanıma hataları bilgiye erişimi ciddi biçimde kısıtlamaz" cümlesi bu yüzden yarım doğru. Konu bazlı gezinmede ve hatırlamada doğru. Tekil bir veriyi geri çağırmada yanlış, üstelik kullanıcı için en pahalı anda yanlış.

Arayüz kararı: mürekkebi atmayın

Bu problemin en sağlam çözümü tanıma tarafında değil, saklama kararında. Kalem darbelerini ham haliyle tutun ve arama sonucunda kullanıcıya tanınmış metni değil, orijinal el yazısının o parçasını gösterin. Tanıyıcı yanılmış olsa bile insan gözü kendi yazısını okur. Vektör verisi olarak bir sayfa mürekkep, aynı sayfanın görüntüsünün çok altında yer kaplar; bu bir depolama tercihi değil, kurtarma mekanizması.

İkinci karar, güveni görünür kılmak. Tanıyıcı düşük skorla ürettiği kelimeyi biliyor. O kelimeyi metinde belli belirsiz işaretleyin, dokunulduğunda alternatifleri açılsın. Böylece düzeltme, ayrı bir "notlarını temizle" seansı olmaktan çıkıp okuma anına dağılır. Kullanıcı zaten oraya bakıyorken bir dokunuşla düzeltiyorsa düzeltir; ayrı bir iş olarak sunulursa yapmaz.

Kalemle giriş klavyeden yavaştır ve bu değişmeyecek. Kalemin kazandığı yer, biçimin serbest olması: şema, ok, kenar notu, denklem. Uygulamanın işi bu serbestliği metne zorla çevirmek değil, aranabilir bir katmanı yanına eklemek. Tanınmış metni tek gerçek kabul eden her tasarım kararı, o %9'u kullanıcının sırtına yıkıyor.