mmkocak/turkish-recipes-175K
Turkish Recipes 175K Türkçe yemek tarifi dataseti — 174.975 deduplike tarif kaydı. Halka açık Türkçe yemek tarifi kaynaklarından toplanmış; başlık, malzeme listesi, talimatlar, kategori, etiket, porsiyon, pişirme süreleri ve besin değerleri içerir. Türkçe büyük dil modellerinin (LLM) pretraining ve instruction-tuning'i için hazırlanmıştır. İçerik Split Satır Boyut train 153.978 ~417 MB validation 10.498 ~28 MB test 10.499 ~28 MB Toplam 174.975… See the full description on the dataset page: https://huggingface.co/datasets/mmkocak/turkish-recipes-175K.
Turkish Recipes 175K
Türkçe yemek tarifi dataseti — 174.975 deduplike tarif kaydı. Halka açık Türkçe yemek tarifi kaynaklarından toplanmış; başlık, malzeme listesi, talimatlar, kategori, etiket, porsiyon, pişirme süreleri ve besin değerleri içerir. Türkçe büyük dil modellerinin (LLM) pretraining ve instruction-tuning'i için hazırlanmıştır.
İçerik
Random shuffle ile 88/6/6 split, seed = 42.
Hızlı Başlangıç
from datasets import load_dataset
ds = load_dataset("mmkocak/turkish-recipes-175K")
print(ds)
# DatasetDict({
# train: Dataset({...}),
# validation: Dataset({...}),
# test: Dataset({...})
# })
sample = ds["train"][0]
print(sample["title"])
print(sample["ingredients"])
print(sample["instructions"])Schema
Her satır JSON nesnesi olarak şu alanları içerir:
Örnek satır
{
"title": "El Açması Fıstıklı Şöbiyet Tatlısı",
"description": "Binlerce kişinin defterindeki bu tarifin tüm sırları...",
"ingredients": [
"yarım su bardağı yoğurt",
"2 yumurta",
"1 çay bardağı sıvı yağ",
"yarım paket margarin",
"yarım çay kaşığı tuz",
"1 çay kaşığı sirke",
"yaklaşık 3.5 su bardağı un"
],
"instructions": [
"Önce şerbeti için su ve şekeri tencereye alıp karıştıralım, kaynayınca birkaç dakika kaynatalım.",
"Hamur için tüm malzemeleri yoğurma kabına alıp orta yumuşaklıkta bir hamur yoğuralım.",
"Hamuru eşit parçalara bölelim..."
],
"category": "Şerbetli Tatlılar",
"tags": ["Fırın", "Hamur işi", "Tatlı"],
"servings": "11",
"prep_time": "PT50M",
"cook_time": "PT50M",
"total_time": "PT100M",
"nutrition": {
"calories": "97",
"Karbonhidrat(g)": "12.1",
"Protein(g)": "1.4",
"Yağ(g)": "4.6"
},
"raw_text": "El Açması Fıstıklı Şöbiyet Tatlısı\n...",
"source": "tr_recipes"
}Veri Hazırlığı
Dedup
Çift kayıt eleme şu kompozit anahtar üzerinden yapılır:
Normalize edilmiş başlık + ilk 3 malzeme + ilk talimat cümlesi → MD5 hash.
Bu yöntem, aynı başlığa sahip farklı tarifleri (örn. "Mercimek Çorbası" başlığıyla onlarca farklı tarif) korurken kelimesi kelimesine tekrarları eler. Sadece başlık üzerinden yapılan dedup'a göre ~%34 daha fazla tarifi korur.
Filtreler
- Başlığı, en az 2 malzemesi ve en az 2 talimatı olmayan kayıtlar elenir.
- Yazar / yayın tarihi / URL gibi kişisel veya kaynak-spesifik meta veri çıktıda yer almaz.
Kullanım Örnekleri
1) Pretraining için düz metin
def to_pretrain_text(row):
parts = [f"# {row['title']}"]
if row.get("description"):
parts.append(row["description"])
parts.append("## Malzemeler\n" + "\n".join(f"- {x}" for x in row["ingredients"]))
parts.append("## Hazırlanışı\n" + "\n".join(f"{i+1}. {s}" for i, s in enumerate(row["instructions"])))
return "\n\n".join(parts)
text_ds = ds["train"].map(lambda r: {"text": to_pretrain_text(r)})2) ChatML / Instruction-tuning formatı
SYSTEM = "Sen deneyimli bir Türk şefisin. Verilen tarifi açık ve sade biçimde aktar."
def to_chatml(row):
user = f"{row['title']} tarifi verir misin?"
assistant = "## Malzemeler\n" + "\n".join(f"- {x}" for x in row["ingredients"])
assistant += "\n\n## Hazırlanışı\n" + "\n".join(f"{i+1}. {s}" for i, s in enumerate(row["instructions"]))
return {
"messages": [
{"role": "system", "content": SYSTEM},
{"role": "user", "content": user},
{"role": "assistant", "content": assistant},
]
}
sft_ds = ds["train"].map(to_chatml, remove_columns=ds["train"].column_names)Repo'daki `scripts/to_chatml.py` tam çalışan bir örnek sunar.
3) Filtreleme
# Sadece tatlı tarifleri
desserts = ds["train"].filter(lambda x: x.get("category") and "Tatlı" in (x["category"] or ""))
# Beslenme bilgisi olan tarifler
nutritional = ds["train"].filter(lambda x: bool(x.get("nutrition")))Veri Kaynağı
Bu dataset, halka açık Türkçe yemek tarifi kaynaklarından toplanmış tariflerin temizlenmiş ve deduplike edilmiş bir derlemesidir. Tariflerin kaynak siteleri / URL'leri / yazarları çıktıda yer almaz — yalnızca tarifin yapısal içeriği (başlık, malzeme, talimat, kategori) saklanır.
Sınırlamalar
- Domain: Yemek/tarif domain'ine özel. Genel amaçlı Türkçe corpus değildir.
- Format tutarsızlığı: Bazı kayıtlarda
nutrition,prep_timegibi alanlarnullolabilir. - `raw_text`: Kaynak metnin birleşik halidir; bazı kayıtlarda gürültülü olabilir, kullanım opsiyoneldir.
- Gerçeklik kontrolü: Beslenme değerleri kaynak tarif sayfalarından alınmıştır; tıbbi/diyetetik tavsiye olarak kullanılmamalıdır.
Lisans
Bu derleme Apache License 2.0 altında yayınlanmıştır — bkz. LICENSE.
Akademik ve ticari kullanım serbesttir. Atıf önerilir.
Atıf
@dataset{turkish_recipes_175k_2026,
title = {Turkish Recipes 175K},
author = {Muhammed Locak},
year = {2026},
url = {https://huggingface.co/datasets/mmkocak/turkish-recipes-175K},
note = {174,975 deduplicated Turkish recipes with ingredients, instructions, and nutrition data}
}İletişim
- HF profili: @mmkocak
- E-posta: muhammetlocak774@gmail.com
English Summary
A Turkish-language recipe dataset with 174,975 deduplicated recipes sourced from publicly available Turkish cooking content. Each record contains a title, description, ingredients list, step-by-step instructions, category, tags, servings, prep/cook/total time, and nutrition data. Suitable for pretraining or instruction-tuning Turkish LLMs in the cooking/food domain. Random 88/6/6 train/validation/test split (seed 42). Released under Apache-2.0.
