Files
insta/namecreate/management/commands/seed_name_vocab.py
Beyhan Oğur 2be3a313ad first commit
2026-04-26 22:26:46 +03:00

126 lines
5.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Türkçe kökenli isimler öncelikli olarak NameVocab tablosunu doldurur.
Kullanım: python manage.py seed_name_vocab
"""
from django.core.management.base import BaseCommand
from namecreate.models import NameVocab
# -----------------------------------------------------------------------
# Türkçe kökenli isimler — en yüksek öncelik
# -----------------------------------------------------------------------
TURKCE_ERKEK = [
("Alp", 80), ("Alpay", 60), ("Alperen", 100), ("Altan", 70),
("Aydın", 90), ("Baran", 85), ("Barış", 120), ("Batuhan", 95),
("Berk", 75), ("Berkay", 80), ("Burak", 140), ("Çağan", 50),
("Çağrı", 65), ("Deniz", 110), ("Doğan", 70), ("Doruk", 55),
("Emre", 160), ("Enes", 90), ("Eren", 130), ("Erhan", 75),
("Furkan", 85), ("Görkem", 60), ("Güven", 45), ("Haluk", 50),
("İlker", 70), ("Kaan", 95), ("Kadir", 80), ("Kerem", 100),
("Koral", 45), ("Korhan", 50), ("Mert", 130), ("Oğuz", 75),
("Onur", 90), ("Orkun", 55), ("Selim", 85), ("Sercan", 70),
("Serdar", 80), ("Soner", 65), ("Tarık", 75), ("Tuna", 50),
("Tunahan", 60), ("Uğur", 85), ("Umut", 100), ("Ufuk", 55),
("Volkan", 80), ("Yiğit", 90), ("Yunus", 95), ("Zafer", 60),
]
TURKCE_KADIN = [
("Aslı", 110), ("Aylin", 100), ("Aynur", 75), ("Ayşen", 65),
("Banu", 70), ("Bahar", 90), ("Başak", 80), ("Belgin", 55),
("Bengü", 50), ("Berrak", 60), ("Burcu", 95), ("Büşra", 85),
("Cansu", 100), ("Ceren", 120), ("Çiğdem", 80), ("Deniz", 90),
("Ebru", 95), ("Elçin", 65), ("Elif", 150), ("Esra", 110),
("Ezgi", 100), ("Gizem", 90), ("Gül", 75), ("Gülşen", 55),
("Güneş", 50), ("Hande", 85), ("İlayda", 75), ("İpek", 80),
("Melike", 90), ("Meltem", 95), ("Merve", 130), ("Nilay", 80),
("Nur", 70), ("Özge", 100), ("Pınar", 90), ("Seda", 85),
("Selin", 100), ("Sibel", 80), ("Simge", 75), ("Tuğba", 85),
("Tülay", 60), ("Ülkü", 50), ("Yasemin", 110), ("Zeynep", 120),
("Zümra", 55),
]
# Türkçe soyisimler
TURKCE_SOYISIM = [
("Yılmaz", 200), ("Kaya", 180), ("Demir", 170), ("Çelik", 150),
("Şahin", 140), ("Yıldız", 130), ("Arslan", 120), ("Doğan", 115),
("Kılıç", 110), ("Aslan", 105), ("Çetin", 100), ("Bulut", 95),
("Aydın", 90), ("Özdemir", 90), ("Demirci", 85), ("Güler", 80),
("Erdoğan", 75), ("Çakır", 75), ("Polat", 70), ("Koç", 70),
("Acar", 65), ("Kurt", 65), ("Yavuz", 65), ("Ateş", 60),
("Güneş", 60), ("ık", 60), ("Karaca", 55), ("Türk", 55),
("Özkan", 55), ("Bay", 50), ("Toker", 50), ("Şimşek", 50),
("Akay", 45), ("Boz", 45), ("Deniz", 45), ("Ercan", 45),
("Güçlü", 40), ("Kaplan", 40), ("Savaş", 40), ("Turan", 40),
("Baş", 35), ("Çam", 35), ("Kara", 35), ("Taş", 35),
("Dağ", 30), ("Duman", 30), ("Gür", 30), ("Köse", 30),
("Uçar", 30), ("Yurt", 30),
]
# -----------------------------------------------------------------------
# Batı kökenli isimler — ikinci öncelik
# -----------------------------------------------------------------------
BATI_ERKEK = [
("Can", 110), ("Cem", 90), ("Cenk", 75), ("Sarp", 60),
("Alper", 70), ("Enver", 55),
]
BATI_KADIN = [
("Ece", 100), ("Derya", 85), ("Sera", 60), ("Lara", 70),
("Nisa", 80), ("Sena", 75),
]
# -----------------------------------------------------------------------
# Arapça kökenli isimler — son öncelik (küçük liste)
# -----------------------------------------------------------------------
ARAPCA_ERKEK = [
("Ahmet", 160), ("Ali", 150), ("Mehmet", 170), ("Hasan", 100),
("Hüseyin", 95), ("İbrahim", 90), ("Mustafa", 140), ("Ömer", 80),
]
ARAPCA_KADIN = [
("Fatma", 120), ("Ayşe", 130), ("Hatice", 90), ("Havva", 70),
("Meryem", 80), ("Rabia", 65),
]
def _bulk_create(entries, name_type, gender, origin):
objs = []
for name, freq in entries:
objs.append(NameVocab(
name=name,
name_type=name_type,
gender=gender,
origin=origin,
frequency=freq,
))
# ignore_conflicts: aynı kayıt varsa atla
NameVocab.objects.bulk_create(objs, ignore_conflicts=True)
return len(objs)
class Command(BaseCommand):
help = 'NameVocab tablosunu Türkçe kökenli isimler öncelikli olarak doldurur'
def handle(self, *args, **options):
total = 0
# Türkçe — birinci öncelik
total += _bulk_create(TURKCE_ERKEK, 'first', 'E', 'turkce')
total += _bulk_create(TURKCE_KADIN, 'first', 'K', 'turkce')
total += _bulk_create(TURKCE_SOYISIM, 'last', 'U', 'turkce')
# Batı — ikinci öncelik
total += _bulk_create(BATI_ERKEK, 'first', 'E', 'bati')
total += _bulk_create(BATI_KADIN, 'first', 'K', 'bati')
# Arapça — son öncelik
total += _bulk_create(ARAPCA_ERKEK, 'first', 'E', 'arapca')
total += _bulk_create(ARAPCA_KADIN, 'first', 'K', 'arapca')
self.stdout.write(self.style.SUCCESS(
f'{total} isim işlendi. '
f'Türkçe: {NameVocab.objects.filter(origin="turkce").count()}, '
f'Batı: {NameVocab.objects.filter(origin="bati").count()}, '
f'Arapça: {NameVocab.objects.filter(origin="arapca").count()}'
))