Türkçe şirket unvanlarında tekrar kayıt bulma: 'Ltd. Şti.' ile 'Limited Şirketi' aynı mı?
Genel normalizasyon neden yetmez?
CRM, fatura ve tedarikçi listelerinde aynı şirket farklı yazılır: 'ABC TEKSTİL SANAYİ VE TİCARET LİMİTED ŞİRKETİ', 'Abc Tekstil San. ve Tic. Ltd. Şti.', 'ABC TEKSTIL SAN.VE TIC.LTD.STI.'. İnsan için üçü de aynı. Bir bilgisayar için üç ayrı kayıt.
- Harf kuralları: Python'da 'İSTANBUL'.lower() sonucu 'istanbul' değil, i harfinin üstüne ayrı bir nokta işareti eklenmiş 9 karakterlik bir dizgedir. 'IŞIK'.lower() ise 'ışık' değil 'işik' verir.
- Türkçe karakter: aynı unvan bazen TEKSTİL, bazen TEKSTIL diye girilir.
- Yasal ek: 'SANAYİ VE TİCARET ANONİM ŞİRKETİ', 'SAN. VE TİC. A.Ş.', 'SAN.TİC.A.Ş.' aynı şeyi söyler ama karakter karakter çok farklıdır.
Gerçek sicil verisinde ölçüm
GLEIF sicilinden indirilen 9.992 gerçek Türk tüzel kişi unvanına, doğru cevabı bilinen dağınık kopyalar eklendi (toplam 13.403 satır, 4.252 gerçek tekrar çifti). Eşik 0,05.
| Ayar | Kesinlik | Duyarlılık | F1 |
|---|---|---|---|
| Varsayılan | 0,409 | 0,240 | 0,302 |
| Genel yasal ek temizleme | 0,411 | 0,242 | 0,305 |
| Türkçe mod | 0,546 | 0,542 | 0,544 |
| Türkçe mod + yasal ek | 0,662 | 0,839 | 0,740 |
| Türkçe mod + yasal ek + çift kuralları | 0,977 | 0,797 | 0,878 |
fuzzy-dedupe 0.6.0, bench/turkish_quality.py, 4 Ekim 2026. Sicil zamanla değiştiği için örneklem ve rakamlar her indirmede biraz değişir; repodaki tablo farklı bir günün indirmesidir.
Dikkat çeken satır ikincisi: genel amaçlı yasal ek temizleme Türkçe unvanlarda neredeyse hiçbir şey kazandırmıyor. Kazanç, Türkçe harf kurallarından ve Türkçe eklerin tanınmasından geliyor.
Çift kuralları ne işe yarar?
Düzenleme mesafesinin bir kör noktası var: uzun bir şablonu paylaşan iki farklı şirket. 'NEO PORTFÖY BİRİNCİ SERBEST FON' ile 'NEO PORTFÖY İKİNCİ SERBEST FON' kırk karakterde tek kelime farklı, ama iki ayrı fon. İki kural bunu kapatır: rakam ve sıra sayısı içeren kelimeler aynı olmalı, ve iki unvanın paylaşmadığı kelimeler kendi içinde de benzer olmalı. Yazım hatası geçer; bütün bir kelimenin değişmesi geçmez.
Kodla
from fuzzy_dedupe import find_duplicates
find_duplicates(["ABC TEKSTİL SANAYİ VE TİCARET LİMİTED ŞİRKETİ",
"Abc Tekstil San. ve Tic. Ltd. Şti.",
"ABC TEKSTIL SAN.VE TIC.LTD.STI."],
threshold=0.0, strip_suffixes=True, turkish=True)
# [(0, 1, 0.0), (0, 2, 0.0), (1, 2, 0.0)]Sonuçlar yaklaşık değil, tam: filtreler yalnızca eşleşemeyeceği kanıtlanan çiftleri atlar, kalan her çift tam karşılaştırılır. Aynı makinede 100.000 şirket adında RapidFuzz'dan 115 kat hızlı ve aynı çiftleri döndürüyor (0.6.0, 4 Ekim 2026).
Sınır
Aynı unvan her zaman aynı şirket demek değildir: farklı şehirlerde aynı adı taşıyan iki ayrı firma olabilir. Birleştirme kararı için vergi numarası gibi ikinci bir anahtar ya da insan onayı gerekir. Eşik ve yanlış pozitif maliyeti verinize göre ayarlanmalıdır.