turk-tokenizer / turk_tokenizer /_acronym_dict.py
nmstech's picture
Initial release: TurkTokenizer v1.0.0 — TR-MMLU 92%
ca41c16 verified
"""Fix 11: Acronym/abbreviation expansion dictionary."""
from __future__ import annotations
ACRONYM_EXPANSIONS: dict[str, str] = {
# International organizations
"NATO": "Kuzey Atlantik Antlaşması Örgütü",
"UN": "Birleşmiş Milletler",
"UNESCO": "BM Eğitim, Bilim ve Kültür Örgütü",
"UNICEF": "BM Çocuklara Yardım Fonu",
"WHO": "Dünya Sağlık Örgütü",
"IMF": "Uluslararası Para Fonu",
"WTO": "Dünya Ticaret Örgütü",
"EU": "Avrupa Birliği",
"INTERPOL": "Uluslararası Kriminal Polis Örgütü",
"FIFA": "Uluslararası Futbol Federasyonları Birliği",
"IOC": "Uluslararası Olimpiyat Komitesi",
"UEFA": "Avrupa Futbol Birliği",
# Turkish institutions
"TBMM": "Türkiye Büyük Millet Meclisi",
"MEB": "Milli Eğitim Bakanlığı",
"TDK": "Türk Dil Kurumu",
"TTK": "Türk Tarih Kurumu",
"TCMB": "Türkiye Cumhuriyet Merkez Bankası",
"BDDK": "Bankacılık Düzenleme ve Denetleme Kurumu",
"SPK": "Sermaye Piyasası Kurulu",
"SGK": "Sosyal Güvenlik Kurumu",
"KDV": "Katma Değer Vergisi",
"ÖTV": "Özel Tüketim Vergisi",
"ÖSYM": "Ölçme, Seçme ve Yerleştirme Merkezi",
"YÖK": "Yükseköğretim Kurulu",
"TÜİK": "Türkiye İstatistik Kurumu",
"TÜBİTAK": "Türkiye Bilimsel ve Teknolojik Araştırma Kurumu",
"ASELSAN": "Askeri Elektronik Sanayii",
# Turkish exams
"TUS": "Tıpta Uzmanlık Sınavı",
"DUS": "Diş Hekimliğinde Uzmanlık Sınavı",
"YDUS": "Yabancı Dil Uzmanlık Sınavı",
"KPSS": "Kamu Personeli Seçme Sınavı",
# Medical
"CMV": "Sitomegalovirüs", "EBV": "Epstein-Barr Virüsü",
"VZV": "Varisella-Zoster Virüsü", "HHV": "İnsan Herpes Virüsü",
"HSV": "Herpes Simplex Virüsü", "HIV": "İnsan İmmün Yetmezlik Virüsü",
"HBV": "Hepatit B Virüsü", "HCV": "Hepatit C Virüsü",
"RSV": "Respiratuar Sinsisyal Virüs", "HPV": "İnsan Papilloma Virüsü",
"HAV": "Hepatit A Virüsü",
"SLE": "Sistemik Lupus Eritematozus",
"COPD": "Kronik Obstrüktif Akciğer Hastalığı",
"DM": "Diabetes Mellitus", "HTN": "Hipertansiyon",
"MI": "Miyokard İnfarktüsü", "DVT": "Derin Ven Trombozu",
"PE": "Pulmoner Emboli",
"AML": "Akut Myeloid Lösemi", "CML": "Kronik Myeloid Lösemi",
"ALL": "Akut Lenfoblastik Lösemi", "CLL": "Kronik Lenfositik Lösemi",
"ECG": "Elektrokardiyogram", "EEG": "Elektroensefalogram",
"MRI": "Manyetik Rezonans Görüntüleme",
"CT": "Bilgisayarlı Tomografi", "USG": "Ultrasonografi",
"CBC": "Tam Kan Sayımı",
"INR": "Uluslararası Normalleştirilmiş Oran",
"LDL": "Düşük Yoğunluklu Lipoprotein",
"HDL": "Yüksek Yoğunluklu Lipoprotein",
"SMMM": "Serbest Muhasebeci Mali Müşavir",
"YMM": "Yeminli Mali Müşavir",
"SM": "Serbest Muhasebeci",
# Technology
"AI": "Yapay Zeka", "ML": "Makine Öğrenmesi",
"LLM": "Büyük Dil Modeli", "NLP": "Doğal Dil İşleme",
"API": "Uygulama Programlama Arayüzü",
"CPU": "Merkezi İşlem Birimi", "GPU": "Grafik İşlem Birimi",
"RAM": "Rastgele Erişim Belleği",
"SQL": "Yapılandırılmış Sorgu Dili",
"HTML": "HiperMetin İşaretleme Dili",
"CSS": "Basamaklı Stil Sayfaları",
"OS": "İşletim Sistemi",
"BERT": "Çift Yönlü Kodlayıcı Temsiller",
"GPT": "Üretici Önceden Eğitilmiş Dönüştürücü",
# Economics
"OPEC": "Petrol İhraç Eden Ülkeler Örgütü",
"NAFTA": "Kuzey Amerika Serbest Ticaret Anlaşması",
# Sports
"NBA": "Ulusal Basketbol Birliği",
"NFL": "Ulusal Futbol Ligi",
}
def reclassify_acronyms(tokens: list[dict]) -> list[dict]:
"""Add ``_expansion`` field to known acronyms in the token stream."""
result: list[dict] = []
for tok in tokens:
if tok["type"] == "ROOT" and (tok.get("_acronym") or tok.get("_caps")):
expansion = ACRONYM_EXPANSIONS.get(tok["token"].strip().upper())
if expansion:
result.append({**tok, "_expansion": expansion, "_known_acronym": True})
continue
result.append(tok)
return result