Öğretici — sıfırdan ilk ölçüme¶
Bu sayfa tek bir akıştır: kurulumdan başlayıp elinizde okunabilir bir sayı tablosuyla bitirir. Dallanma yok; seçenekleri Nasıl yapılır bölümünde bulursunuz.
Süre: yaklaşık 15 dakika, çoğu model indirmekle geçer.
1. Kütüphaneyi kurun¶
2. Dil verisini kurun¶
pip install Python bağımlılıklarını kurar, dil verisini kurmaz.
Kullandığınız dilin verisini bir kez kurun:
# Türkçe — 156 MB. Model turkish-nlp-suite'e ait ve spaCy'nin kayıt
# defterinde yok, bu yüzden wheel doğrudan kurulur:
pip install https://huggingface.co/turkish-nlp-suite/tr_core_news_md/resolve/main/tr_core_news_md-1.0-py3-none-any.whl
# İngilizce — iki parça: spaCy modeli (12 MB) ve hece sayımı için CMU
# telaffuz sözlüğü (1 MB)
python -m spacy download en_core_web_sm
python -m nltk.downloader cmudict
# İsteğe bağlı — iki wordfreq_* özniteliği için
pip install 'wordfreq>=3.0'
Türkçe modelde hata sanacağınız iki şey
Wheel kendisiyle çelişiyor. Dosya adı 1.0 diyor, içindeki üstveri
3.4.2 diyor. pip bunu kabul eder ve kurar; daha katı kurucular
bozuk wheel diye reddeder.
Yüklenirken W094 uyarısı basar. Modelin kendi meta.json'ı spaCy
sürüm aralığını gevşek yazmış. Zararsızdır, iki tarafta da
düzeltilecek bir şey yoktur.
Kurulumu doğrulayın:
3. İlk ölçüm¶
import turkish_linguistic_features as tlf
metin = (
"Renksiz yeşil fikirler öfkeyle uyur. Chomsky bu tümceyi, dilbilgisine "
"uygun bir tümcenin anlamsız da olabileceğini göstermek için kurdu. Bu "
"kütüphane de anlamı değil, biçimi ölçer."
)
oz = tlf.analyze(metin, lang="tr")
print(len(oz))
Metnin ilk tümcesi Chomsky'nin Syntactic Structures (1957) kitabından.
lang verilmezse varsayılan "tr"'dir; İngilizce metin için lang="en"
yazmanız gerekir.
analyze düz bir sözlük döndürür: anahtarlar öznitelik adları, değerler
sayılar. İç içe yapı yok, sınıf yok, pandas zorunluluğu yok.
4. Çıktıyı okuyun¶
208 sayıya birden bakmanın anlamı yok. Birkaçına bakalım:
for k in ("ttr", "word_len_mean", "sent_len_mean",
"syllable_mean", "atesman", "entropy"):
print(f"{k:20s} {oz[k]}")
Bunlar ne anlatıyor:
| Anahtar | Değer | Okunuşu |
|---|---|---|
ttr |
0.96 | Tip/token oranı. 25 sözcüğün 24'ü farklı; yalnız bu iki kez geçiyor. Kısa metinde TTR 1'e yakındır, metin uzadıkça düşer. |
word_len_mean |
6.04 | Sözcük başına 6,04 karakter. |
sent_len_mean |
8.3333 | Tümce başına 8,33 sözcük. |
syllable_mean |
2.48 | Sözcük başına 2,48 hece. |
atesman |
77.441 | Ateşman (1997) okunabilirlik puanı. Olağan düzyazı 0–100 arasına düşer, ama bu bir sınır değildir. 70–89 "kolay" bandı. |
entropy |
3.163424 | Sözcük dağılımının Shannon entropisi, nat (doğal logaritma). |
5. Neden bazı değerler nan?¶
Metin 25 sözcük; mattr en az 100 sözcük ister. Kütüphane eksik veriyle
sayı uydurmaz, nan döndürür.
Ne kadarı nan olur, bakalım:
kisa = tlf.analyze("Kısa bir tümce.", lang="tr")
nan_olan = [k for k, v in kisa.items() if isinstance(v, float) and v != v]
print(len(kisa), len(nan_olan))
Üç sözcüklük bir metinde 208 öznitelikten 36'sı nan döner. Bu bir hata
değildir. Ayrıntı: NaN ne demek.
6. Bir özniteliğin kaynağını görün¶
Bir sayıyı çalışmanızda kullanacaksanız nereden geldiğini bilmelisiniz:
Covington & McFall (2010); default window 50 — C&M recommend a window of 500; 50 is used here so that texts of 100+ words can be measured (mattr needs 2 × window)
Covington, M. A., & McFall, J. D. (2010). Cutting the Gordian knot: The moving-average type–token ratio (MATTR). Journal of Quantitative Linguistics, 17(2), 94–100. DOI 10.1080/09296171003643098
references alanı kaynakçanıza kopyalayacağınız şeydir. citation
kısa işaretçidir ve ne bilmediğimizi de söyler — yukarıdaki örnekte
varsayılan pencere boyunun kaynaktan gelmediğini açıkça yazıyor. Sözlükteki öbür
alanlar (formül, ölçek, gereken en az veri…): Bir özniteliğin kaynağını
bul.
7. Bir korpusu tabloya çevirin¶
Tek metin nadiren yeterlidir. Dizin yapınız şöyle olsun:
satirlar = tlf.analyze_corpus("korpus/", lang="tr")
tlf.save_csv(satirlar, "oznitelikler.csv")
print("satır sayısı:", len(satirlar))
print("sütun sayısı:", len(satirlar[0]))
Her dosya bir satır olur. 211 sütun = 208 öznitelik + üç kimlik sütunu:
label=yazar_a source=metin1 segment_id=0
label=yazar_a source=metin2 segment_id=0
label=yazar_b source=metin3 segment_id=0
label klasör adıdır (çoğu çalışmada yazar ya da sınıf), source dosya
adıdır. CSV'nin ilk satırı:
Bu dosyayı pandas, R ya da SPSS ile doğrudan açabilirsiniz.
Bitti — sırada ne var¶
Elinizde çalışan bir kurulum ve bir öznitelik tablosu var. Şimdi:
- Belirli bir iş yapmanız gerekiyorsa → Nasıl yapılır
- Metinleriniz çok uzunsa ve parçalamanız gerekiyorsa → Metni parçalara böl
- Sayıların ne kadarına güvenebileceğinizi merak ediyorsanız → Doğrulama sistemi ve Sınırlılıklar