Skip to content

Staj görevlerimden biri olan Record Linkage Toolkit kütüphanesi incelemesi için dokümantasyon yardımı ile hazılanmış bir repodur.

License

Notifications You must be signed in to change notification settings

k0laa/Python-Record-Linkage-Toolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SQLite Record Linkage - Çoklu Database Sistemi

Proje Açıklaması

Bu proje, herhangi sayıdaki SQLite veritabanı arasında recordlinkage toolkit kullanarak kapsamlı kayıt eşleştirmesi yapan gelişmiş bir sistemdir. Artık sadece YAML konfigürasyon dosyası yazarak:

  • 1 Database: Deduplikasyon (tekrarlayan kayıt temizleme)
  • 2 Database: Geleneksel ikili karşılaştırma
  • 3+ Database: Tüm kombinasyonları otomatik karşılaştırma

Yeni Özellikler ⭐️⭐️⭐️

Çoklu Database Desteği

  • N tane database verildiğinde tüm ikili kombinasyonları otomatik karşılaştırır
  • Tek database verildiğinde deduplikasyon yapar
  • Sonuçlar ayrı tablolarda kaydedilir (örn: crm_ecommerce, crm_mobile_app)
  • Mevcut sistem bozulmadan korunur - geriye dönük uyumlu

Akıllı Kombinasyon Mantığı

1 DB: customers_dedup
2 DB: crm_ecommerce  
3 DB: crm_ecommerce, crm_mobile, ecommerce_mobile
4 DB: 6 farklı ikili kombinasyon
5 DB: 10 farklı ikili kombinasyon

Proje Yapısı

RecordLinkage/
├── basics/                                  # Temel recordlinkage örnekleri
├── src/                          
│   ├── config_reader.py                     # YAML okuyucu (çoklu DB desteği)
│   ├── database_manager.py                  # SQLite yönetimi (çoklu bağlantı)
│   ├── record_linker.py                     # recordlinkage engine (deduplikasyon)
│   └── main.py                              # Ana çalışma dosyası (koordinatör)
├── config/                                  # Konfigürasyon örnekleri 
│   ├──  templates/                          # Çoklu database şablonları
│   │    ├── multi_db_1_database.yaml        # Deduplikasyon örneği
│   │    ├── multi_db_2_databases.yaml       # İkili karşılaştırma
│   │    ├── multi_db_3_databases.yaml       # Üçlü sistem
│   │    ├── multi_db_4_databases.yaml       # Dörtlü sistem
│   │    ├── multi_db_5_databases.yaml       # Beşli sistem
│   │    └── template.yaml                   # Geleneksel örnek
│   └── customers_example.yaml               # Geleneksel şablon
├── data/                                    # SQLite veritabanları
├── results/                                 # Sonuç dosyaları
├── requirements.txt                         # Gerekli Python paketleri
└── README.md                                # Proje açıklaması ve kullanım kılavuzu

Hızlı Başlangıç

Kurulum

  # Gerekli paketleri yükleyin
  pip install -r requirements.txt

Kullanım Örnekleri

main.py de main fonksiyonunda config dosyasını belirterek çalıştırabilirsiniz.

# src/main.py
if __name__ == "__main__":
    config_path = "config/multi_db_1_database.yaml"
  python src/main.py 

Konfigürasyon Formatları

Yeni Çoklu Database Formatı

# ÇOKLU VERİTABANI SİSTEMİ
databases:
  - name: "crm"
    path: "../data/crm.db"
    table: "customers"
    columns:
      id: "customer_id"
      name: "full_name"
      email: "email_address"
      # ... diğer alanlar

  - name: "ecommerce"  
    path: "../data/ecommerce.db"
    table: "users"
    columns:
      id: "user_id"
      name: "display_name"
      email: "email"
      # ... diğer alanlar

# Çıktı ayarları
output:
  save_to_db: true
  results_database_path: "../data/multi_linkage_results.db"
  table_prefix: "linkage"
  export_csv: true
  csv_base_path: "../results/multi"

Klasik Format (Hala Destekleniyor)

# KAYNAK VERİTABANI
source_database:
  path: "../data/source.db"
  table: "customers"
  # ...

# HEDEF VERİTABANI  
target_database:
  path: "../data/target.db"
  table: "users"
  # ...

Kullanılan Teknolojiler

  • Python 3.8+ - Ana dil
  • recordlinkage - Linkage library
  • SQLite3 - Database
  • PyYAML - Configuration files
  • Pandas - Data manipulation

Record Linkage Detayları

Indexing Methods

# Block indexing
indexer.block('email')

# Sorted neighbourhood - Orta hız
indexer.sortedneighbourhood('name', window=5)

# Full comparison - Yavaş ama kapsamlı
indexer.full()

Comparison Functions

# Exact match
compare.exact('email', 'email')

# String similarity
compare.string('name', 'name', method='jarowinkler', threshold=0.85)

# Numeric comparisona
compare.numeric('age', 'age', method='linear')

Classification Methods

# Threshold - Eşik değeri
classifier = rl.ThresholdClassifier(0.7)

# Machine Learning yaklaşımları
classifier = rl.ECMClassifier()  # Expectation-Maximization
classifier = rl.SVMClassifier()  # Support Vector Machine

Karşılaşılabilecek Hatalar

  1. Database bulunamadı: Path kontrolü yapın
  2. Sütun eşleşmiyor: Schema validation loglarını kontrol edin
  3. Çok az eşleşme: Threshold değerlerini düşürün
  4. Çok yavaş: Indexing metodunu 'block' yapın

Kaynaklar

Lisans

MIT License - Detaylar için LICENSE dosyasına bakın.

About

Staj görevlerimden biri olan Record Linkage Toolkit kütüphanesi incelemesi için dokümantasyon yardımı ile hazılanmış bir repodur.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages