Arama kutusu gözünüzle aynı karşılaştırmayı yapmayabilir

Notlarınızda aynı başlığı arıyorsunuz. Gözünüze göre iki satır aynı, fakat eşitlik kontrolü yalnızca birini buluyor. Yapay zekâya “bütün metinleri temizle” demek kolaydır. Ancak temizlik sırasında üst simgeleri, harfleri veya ürün kodlarını da değiştirirseniz yeni eşleşmelerin doğru olup olmadığını anlayamazsınız. Önce farkın nereden geldiğini tanımlamak, sonra yalnızca gereken dönüşümü uygulamak gerekir.

Bu uygulama dört sentetik karakter çiftini kullanır. Gerçek kişi, kurum veya hesap eşleştirmesi yapmıyoruz. Görevimiz iki metnin aynı karakter dizisi olup olmadığını ve dar kapsamlı bir normalleştirmeden sonra eşleşip eşleşmediğini belirlemek. Bir satırın başka satırla aynı kurumu temsil ettiği sonucunu çıkarmayacağız. Karakter eşitliği bir veri hazırlığı koşuludur; gerçek dünyadaki kimlik eşitliğini tek başına kanıtlamaz.

Sentetik karşılaştırma çiftleri · kod noktaları farkı görünür kılar
ÇiftSol metinSağ metinKritik kod noktaları
U1şU+015F / U+0073 U+0327
U2m2U+00B2 / U+0032
U3IıU+0049 / U+0131
U4AАU+0041 / U+0410

U1’de solda tek kod noktasıyla yazılmış ş, sağda s ve birleşen çengel bulunur. Yazı tipi bunları aynı gösterebilir. U4’te ise soldaki Latin A ile sağdaki Kiril А farklı harflerdir. Bunları yalnızca görünüşe göre birleştiren kural, arama sonucunu genişletirken kod veya başlık ayrımlarını da silebilir. Tablo bu nedenle görünür metnin yanına kod noktalarını koyar.

Bu çalışmada yalnızca NFC kullanıyoruz

Unicode normalleştirmesi kanonik eşdeğerlik ile uyumluluk eşdeğerliğini ayırır. NFC kanonik normalleştirme ve birleştirme uygular; NFKC uyumluluk dönüşümlerini de kapsar. Bu örnekte U1’in iki yazımı NFC ile eşitlenir. Üst simgeli ² ise NFC’de korunur, NFKC ile 2’ye dönüşebilir. Hangi ayrımın korunacağını belirlemeden “en güçlü temizliği” seçmek uygun bir veri sözleşmesi değildir.Kaynak: Unicode — UAX #15 Normalization Forms

Çalışma kuralımız şu: ham metin değişmeden tutulacak, karşılaştırma anahtarı ayrı bir alanda NFC ile üretilecek. Küçük harfe çevirme, aksan kaldırma, boşluk silme veya benzer görünen harfleri değiştirme eklenmeyecek. Böylece bir eşleşmenin hangi işlemden kaynaklandığını izleyebiliriz. Türkçe I/ı ilişkisi de bu uygulamada harf küçültme kuralı olmadığı için ayrı kalır. Dil duyarlı arama ihtiyacı varsa o kural başka bir test grubuyla tasarlanmalıdır.

Kopyalanabilir metin denetimi
U1: U+015F ile U+0073 U+0327; U2: m² ile m2; U3: I ile ı; U4: Latin A ile Kiril А. Her çift için ham karakter dizisi eşitliğini ve yalnızca NFC sonrası eşitliği göster. Ham metinleri değiştirme. NFKC, küçük harfe çevirme, aksan silme veya benzer harf dönüşümü ekleme. Eşleşmeyenleri otomatik birleştirmek yerine ayrı inceleme listesine koy. Bir karakter eşleşmesini kişi veya kurum kimliği doğrulaması olarak sunma.
Açıklama amacıyla hazırlanmış beklenen sonuç
ÇiftHam eşitlikNFC sonrası eşitlikKarar
U1HayırEvetKanonik karşılaştırmada eşleşir
U2HayırHayırÜst simge farkını koru
U3HayırHayırHarf kuralı ayrıca değerlendirilmeli
U4HayırHayırFarklı yazı sistemlerini birleştirme

Sonuç tablosunda yalnızca U1 otomatik eşleşmeye uygundur; bu karar sadece tanımladığımız karakter karşılaştırması içindir. U2 bir alan ölçüsü, ürün adı veya sıradan metin olabilir. Bağlamı bilmeden m² ile m2’yi eşdeğer kabul etmiyoruz. U3’te Türkçe harf dönüşümü gerekebilir, fakat bu gereksinimi kullanıcı veya kaynak sistemi doğrulamalıdır. U4’ün görsel yakınlığı da kanonik eşitlik sağlamaz.

Dönüşümü görünür bir ara alanla sınayın

Bir betik veya veri aracı kullanıyorsanız önce bu dört çifti çalıştırın. Girdi metni, girdi kod noktaları, normalleştirilmiş anahtar ve karar ayrı sütunlarda bulunmalı. Yapay zekânın görsel metni yeniden yazması, Unicode işleminin gerçekten yapıldığına kanıt değildir. Örneğin sağdaki birleşen karakteri fark etmeden soldakiyle aynı biçimde kopyalayabilir. Kontrol çıktısında hangi kod noktalarının işlendiğini görmek bu yanılgıyı azaltır.

JavaScript ile yerel kontrol örneği
const sol = "ş";
const sag = "ş";
sol === sag; // false
sol.normalize("NFC") === sag.normalize("NFC"); // true
"m²".normalize("NFC") === "m2"; // false
"m²".normalize("NFKC") === "m2"; // true

Bu kısa kod yalnızca açıkça verilen sabit metinleri karşılaştırır. Dosya değiştirmez, kayıt silmez veya dış hizmet çağırmaz. Çıktıları kendi çalışma aracınızda doğrularken araya otomatik harf düzeltmesi girip girmediğine dikkat edin. Ham metni başka bir editörden kopyalamak, incelemek istediğiniz karakter dizisini daha test başlamadan değiştirebilir. Mümkünse kod noktalarıyla kurulmuş küçük bir girdi kullanın.

  • Ham veriyi ve kaynak satır kimliğini saklayın; anahtar üretmek silme yetkisi vermez.
  • NFC işlemini ikinci kez uygulamak anahtarı değiştirmemeli.
  • U1 eşleşirken U2, U3 ve U4 ayrı kalmalı; hepsinin eşleşmesi fazla dönüşüm belirtisidir.
  • Anahtarı aynı olan satırları raporlayın; içerikleri birleştirmek için ayrıca görev kuralı gerekir.

Kendi not arşivinizde bir anahtar birden fazla satıra karşılık gelebilir. Bu her zaman yinelenen kayıt bulunduğu anlamına gelmez; aynı başlıkla iki ayrı not yazmış olabilirsiniz. Bu yüzden çıktı “silinecekler” listesi olmamalıdır. Aynı karşılaştırma anahtarını paylaşan satırlar, tarih ve belge kimliği gibi bağlamlarıyla incelenmelidir. Normalleştirme aramayı tutarlı yapmaya yardım ederken kayıtların geçmişini korumalıdır.

é ile e ve birleşen vurgu için karar verin

Alıştırmada sol metin U+00E9, sağ metin U+0065 U+0301 olsun. Ham eşitlik ve NFC sonucu için tahmininizi yazın. Ardından ikinci bir çift olarak e ile é kullanın. Bu iki karşılaştırmanın neden aynı kararı vermediğini açıklayın. Burada aksanların dildeki işlevini tartışmanız gerekmez; yalnızca izin verilen normalleştirme işleminin kapsamını uygulayın.

Alıştırmanın cevap anahtarı
U+00E9 ile U+0065 U+0301 ham olarak farklı, NFC sonrasında eşittir. e ile é ise NFC sonrasında da farklıdır. NFC aksan silme işlemi değildir. İkinci çift için başka arama kuralı isteniyorsa bu ayrı tanımlanmalı ve test edilmelidir.

Teslim edeceğiniz küçük kontrol dosyasında dönüşümün adı ve sürümü kullanılan araçla birlikte yazsın. Böylece başka biri yalnızca görünen son tabloyu değil, aynı kararın nasıl üretildiğini de kontrol edebilir. Yeni bir temizleme adımı önerildiğinde önce hangi çiftlerin kararını değiştireceğini sorun. Beklenmeyen birleşmeler varsa kapsamı genişletmeden önce gerekçesini araştırın.

Kaynaklar ve doğrulama

İlgili okumalar

Üretken Yapay Zekâ ile İş Verimliliği

Üretken Yapay Zekâ ile İş Verimliliği programında kullanmak üzere küçük bir metin kontrol dosyası hazırlayabilirsiniz. Ham ifadeyi koruyan karşılaştırma tablonuz, otomatik temizleme önerilerini değerlendirmenizi kolaylaştırır.

  • Bireysel tarih henüz açıklanmadı