Ne işe yarar (iş diliyle)

Kullanıcılar aynı kelimeyi farklı yazar: ENERJI, Enerji, enerji, enerjı, enerji (sondaki boşluk). Bu yetenek hepsini tek “enerji” aggregate’i altında sayar; aynı zamanda gösterimde orijinal en sık kullanılan formatı korur. Anket, oylama, etiket bulutu, müşteri geri-bildirim gruplamada veri kalitesinin temeli — yoksa “5 kişi enerji dedi” yerine “1+1+1+1+1” görürsünüz.

Hangi müşteri/projelerde işe yarar

  • Anket / oylama platformu (mevcut)
  • Etiket bulutu (sosyal medya yorumları, ürün etiketleri)
  • Müşteri geri-bildirim gruplaması (NPS açık metin)
  • Soru toplama platformu (aynı soru farklı yazımlarla)
  • Türkçe arama autocomplete (kullanıcı yazım hatası affı)
  • Email / form girdi deduplikasyonu
  • CMS etiket sistemi (admin tek tek temizlemesin)

Nasıl çalışır (kısa, sade)

Gelen kelime şu adımlardan geçer: baş/son boşluk silinir → Türkçe locale ile küçük harfe çevrilir → Türkçe karakter map’i uygulanır (ı→i, ğ→g, ü→u, ş→s, ö→o, ç→c) → alfanümerik olmayan karakterler temizlenir → çoklu boşluk tekleştirilir. Bu normalize edilmiş form veritabanında unique index’lidir (event + normalized_word). Aynı normalize değer geliyorsa count+1; yoksa yeni satır eklenir. Display için ilk girilen veya en sık kullanılan form saklanır.

Olgunluk

canlida-kanitlanmis. Basit ve hızlı; morfolojik kök (lemma) ayrımı yapmaz — “enerji” ve “enerjisi” ayrı aggregate’lerdir. Morfoloji gerekiyorsa Zemberek entegrasyonu küçük ek iş.

Teknik (geliştiriciler için)

  • Kod: server/src/lib/normalize.ts (saf fonksiyon, side-effect yok), server/src/db/schema.ts (word_aggregates tablosu + uniqueEventWord index on (event_id, normalized_word)), server/src/routes/public-event.ts (submit handler upsert akışı).
  • Girdi: raw_word (string).
  • Çıktı: { normalized_word, display_word }. Submission tablosunda raw + normalized birlikte saklanır (audit + replay imkanı için).
  • Sınır: morfolojik kök ayrımı yok (“enerjisi” ve “enerji” ayrı); Türkçe-dışı diller için map güncellenmeli (Arapça, Rusça vb. transliterasyon farkı); noktalama ile birleşik kelimeler (örn. “enerji-tasarrufu”) tek alfanümerik token olarak normalize edilir, semantic tek-kelime korumak istenirse pre-processing kuralı eklenmeli.