Downloads · 30 days
5
13% of all-time downloads
dbbiyte/ottoman-turkish-etymology-classifier
ottoman-turkish-etymology-classifier is a text classification model from dbbiyte. Use it when you need a label for a piece of text. The card lists the license as mit.
Osmanlı/modern Türkçe kelimeleri köken bakımından 4 sınıfa ayıran hibrit bir karakter-CNN modeli: ARABIC (Arapça), PERSIAN (Farsça), TURKISH (Türkçe), WESTERN (Batı kökenli — Fransızca kökenli kelimeler de eğitim veri…
Downloads · 30 days
5
13% of all-time downloads
All-time downloads
40
Public
Parameters
153K
1.2 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors614 KB · 98%
From the Hugging Face model README
Osmanlı/modern Türkçe kelimeleri köken bakımından 4 sınıfa ayıran hibrit bir karakter-CNN modeli: ARABIC (Arapça), PERSIAN (Farsça), TURKISH (Türkçe), WESTERN (Batı kökenli — Fransızca kökenli kelimeler de eğitim verisi düzeyinde WESTERN sınıfına dahil edilmiştir).
Türkçe kelime dağarcığının etimolojik bileşiminin tarihsel bir Türkçe metin külliyatının farklı baskıları arasında nasıl değiştiğini incelemek amacıyla geliştirilmiştir.
[karakter dizisi] → Embedding(32d) → Conv1D(k=3,4,5; her biri 128 filtre) → GlobalMaxPool → 384d ──┐
├→ FC(256) → FC(4)
[kural özellik vektörü, 10d] ─────────────────────────────────────────────────────────────────────────┘
Her kelime için 10 boyutlu bir kural özellik vektörü hesaplanır ve CNN'in ürettiği vektörle birleştirilir: sözlük üyeliği (2 özellik), Farsça/Arapça/Batı kökenli ek kalıpları (3 özellik), ünlü uyumu, düzeltme işareti (â/î/û) varlığı ve 3 kelime-uzunluğu grubu.
Bu depo, ilk 2 kural özelliği için kullanılan Türkçe/Farsça sözlük dosyalarını içermemektedir — bu yüzden çıkarım sırasında bu 2 özellik her zaman 0 olarak hesaplanır ve isabet oranı aşağıdaki (tam özellik setiyle elde edilen) sonuçların biraz altında kalır. Geri kalan her şey (karakter CNN + diğer 8 kural özelliği) tam olarak çalışır durumdadır.
| Metrik | Değer |
|---|---|
| Test isabeti (accuracy) | 83.62% |
| Test makro F1 | 0.8363 |
from huggingface_hub import snapshot_download
import sys
path = snapshot_download("dbbiyte/ottoman-turkish-etymology-classifier")
sys.path.insert(0, path)
from inference import load_model, predict_word
model, vocab, config = load_model(path)
print(predict_word(model, vocab, config, "şehir"))
# [('PERSIAN', 0.5773), ('ARABIC', 0.4056), ('WESTERN', 0.0105)]
Bir metin dosyasındaki tüm kelimeleri sınıflandırma:
import re
from collections import Counter
text = open("metin.txt", encoding="utf-8").read()
words = re.findall(r"[a-zA-ZçğıöşüÇĞİÖŞÜâîûÂÎÛ]+", text.lower())
counts = Counter(words)
results = Counter()
for word, freq in counts.items():
label, _ = predict_word(model, vocab, config, word, top_k=1)[0]
results[label] += freq
total = sum(results.values())
for label, freq in results.most_common():
print(f"{label:<10} {freq/total*100:.2f}%")
| Dosya | Açıklama |
|---|---|
model.safetensors | eğitilmiş ağırlıklar |
config.json | mimari hiperparametreler + sınıf etiketleri |
vocab.json | karakter düzeyinde sözlük (vocabulary) |
inference.py | bağımsız model tanımı + load_model() / predict_word() |
Bu model İzmir Yüksek Teknoloji Enstitüsü - Dijital Beşeri Bilimler ve Yapay Zekâ Laboratuvarı bünyesinde geliştirilmiştir:
Bu çalışma, Türkiye Bilimsel ve Teknolojik Araştırma Kurumu (TÜBİTAK) tarafından 323K372 numaralı proje ile desteklenmiştir. Projeye verdiği destekten ötürü TÜBİTAK'a teşekkürlerimizi sunarız.
MIT