Instructions to use moganai/fasttext-tr-quality-classifier with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- fastText
How to use moganai/fasttext-tr-quality-classifier with fastText:
from huggingface_hub import hf_hub_download import fasttext model = fasttext.load_model(hf_hub_download("moganai/fasttext-tr-quality-classifier", "model.bin")) - Notebooks
- Google Colab
- Kaggle
File size: 7,185 Bytes
3b1c2bb 024d1ea 3b1c2bb 024d1ea 3b1c2bb 024d1ea | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | ---
language:
- tr
- en
license: mit
tags:
- fasttext
- text-classification
- quality-filter
- turkish
- pretraining-data
pipeline_tag: text-classification
---
# fastText-TR-Quality-Classifier
*[Türkçe açıklama için aşağı kaydırın / Scroll down for Turkish description](#türkçe)*
## English
A binary text quality classifier — labels Turkish web pages as **`clean`**
(usable for LLM pretraining) or **`garbage`** (spam/ads/low-quality) for
LLM pretraining corpus construction.
### Model Details
- **Architecture:** fastText supervised classifier
- **Dimension:** 100
- **Labels:** `__label__clean`, `__label__garbage`
- **Vocabulary:** ~3.5M words/n-grams
- **Language:** Turkish
**Training hyperparameters:**
| Parameter | Value | Meaning |
|---|---|---|
| `lr` (learning rate) | 1.0 | A standard/above-default learning rate for fastText |
| `epoch` | 25 | 25 passes over the training data |
| `wordNgrams` | 2 | Word bigrams used as features in addition to unigrams |
| `dim` | 100 | Word vector dimension |
| `loss` | softmax | Standard softmax loss (2-class here) |
### Training Data
- **Source:** Turkish web text extracted from CommonCrawl (2025/2026 monthly
crawls) with trafilatura, from raw HTML.
- **Size:** ~480,000 labeled examples.
- **Labeling method:** Predictions from a fine-tuned Turkish BERT classifier
(0-5 quality score) were converted into binary (clean/garbage) labels and
used as training data — i.e. this model distills the decisions of a much
slower BERT classifier at scale (knowledge distillation).
- The BERT model itself was fine-tuned on 5,876 manually/LLM-scored examples.
### Performance
- On a validation chunk the BERT model had never seen, this fastText
model's predictions agreed with the source BERT model's predictions
**94.4%** of the time.
- On a synthetic test set (8 hand-written examples: betting/escort spam,
academic summary, news text, product description, etc.), 8/8 correct
classifications, mostly with ≥96.9% confidence.
- fastText inference is ~90x faster than BERT on the same hardware (Apple
M4 Pro, CPU): ~8,880 docs/sec vs ~96.5 docs/sec.
### Files
- `model.bin` — the full classifier (word vectors + classification layer).
Use this for inference (predicting `clean`/`garbage`).
- `model.vec` — plain-text word vectors only (no classification layer).
Useful if you want to reuse the learned word embeddings elsewhere, e.g.
as `pretrainedVectors` when training a different fastText model.
### Usage
```python
import fasttext
model = fasttext.load_model("model.bin")
text = "example Turkish web text here"
labels, scores = model.predict(text.replace("\n", " "), k=-1)
label_scores = dict(zip(labels, scores))
if label_scores.get("__label__clean", 0) >= 0.5:
print("Usable content")
else:
print("Flagged as low quality / spam")
```
### Limitations
- Trained on general CommonCrawl web content; performance on very
different domains (e.g. social media, code, academic PDFs) was not
tested.
- The `clean` label means "usable for LLM pretraining", not "factually
correct" or "non-toxic" — separate filters (PII masking, toxicity/spam
keyword lists) are still recommended.
- Training labels were ultimately derived from a BERT model's predictions,
so this model may inherit that model's own errors/biases.
### License
MIT. Training data was derived from CommonCrawl (a public web crawl);
see CommonCrawl's own terms of use.
---
## Türkçe
İkili (binary) metin kalite sınıflandırıcısı — Türkçe web sayfalarını LLM
ön-eğitim (pretraining) verisi olarak **`clean`** (kullanılabilir) veya
**`garbage`** (spam/reklam/düşük-kalite) olarak etiketler.
### Model Detayları
- **Mimari:** fastText supervised classifier
- **Boyut (dim):** 100
- **Etiketler:** `__label__clean`, `__label__garbage`
- **Kelime dağarcığı:** ~3.5M kelime/n-gram
- **Dil:** Türkçe
**Eğitim hiperparametreleri:**
| Parametre | Değer | Anlamı |
|---|---|---|
| `lr` (learning rate) | 1.0 | fastText için standart/varsayılan-üstü bir öğrenme oranı |
| `epoch` | 25 | Eğitim verisi üzerinden 25 tur geçildi |
| `wordNgrams` | 2 | Tekli kelimelerin yanı sıra kelime ikilileri (bigram) da özellik olarak kullanıldı |
| `dim` | 100 | Kelime vektör boyutu |
| `loss` | softmax | Çok sınıflı (burada 2 sınıflı) standart softmax kaybı |
### Eğitim Verisi
- **Kaynak:** CommonCrawl'dan (2026 ve 2025 aylık crawl'ları) çekilip
trafilatura ile ham HTML'den çıkarılmış Türkçe web metinleri.
- **Boyut:** ~480.000 etiketli örnek.
- **Etiketleme yöntemi:** Fine-tune edilmiş bir Türkçe BERT sınıflandırıcının
(0-5 arası kalite puanı) tahminleri, ikili (clean/garbage) etikete
dönüştürülüp eğitim verisi olarak kullanıldı — yani bu model, daha yavaş
çalışan bir BERT sınıflandırıcının kararlarını büyük ölçekte "distile"
ediyor (knowledge distillation).
- BERT modelinin kendisi, 5.876 elle/LLM ile puanlanmış örnek üzerinde
eğitilmişti.
### Performans
- Doğrulama seti (BERT'in hiç görmediği bir CommonCrawl chunk'ı) üzerinde,
bu fastText modelinin tahminleri ile kaynak BERT modelinin tahminleri
arasında **%94.4 uyum** gözlemlendi.
- Sentetik test setinde (8 el-yapımı örnek: bahis/escort spam'i, akademik
özet, haber metni, ürün açıklaması vb.) 8/8 doğru sınıflandırma,
çoğunlukla ≥%96.9 güvenle.
- fastText'in inference hızı, aynı donanımda (Apple M4 Pro, CPU) BERT'e göre
~90 kat daha hızlı ölçüldü (~8.880 doküman/saniye vs ~96.5 doküman/saniye).
### Dosyalar
- `model.bin` — tam sınıflandırıcı (kelime vektörleri + sınıflandırma katmanı).
Inference (clean/garbage tahmini) için bunu kullanın.
- `model.vec` — sadece düz metin (text) formatında kelime vektörleri,
sınıflandırma katmanı yok. Öğrenilen kelime embedding'lerini başka bir
yerde (örn. farklı bir fastText modelini `pretrainedVectors` ile
başlatmak için) yeniden kullanmak isterseniz faydalıdır.
### Kullanım
```python
import fasttext
model = fasttext.load_model("model.bin")
text = "örnek Türkçe web metni buraya"
labels, scores = model.predict(text.replace("\n", " "), k=-1)
label_scores = dict(zip(labels, scores))
if label_scores.get("__label__clean", 0) >= 0.5:
print("Kullanılabilir içerik")
else:
print("Düşük kalite / spam olarak işaretlendi")
```
### Sınırlamalar
- Model, CommonCrawl kaynaklı genel web içeriği üzerinde eğitildi; çok
farklı bir alan/tür (örn. sosyal medya, kod, akademik PDF) üzerinde
performansı test edilmedi.
- `clean` etiketi "LLM pretraining için kullanılabilir" anlamına gelir,
"faktüel doğru" ya da "toksik değil" anlamına gelmez — ayrı filtreler
(PII maskeleme, toksisite/spam kelime listesi) hâlâ önerilir.
- Eğitim etiketleri nihayetinde bir BERT modelinin tahminlerinden türetildi,
o modelin kendi hatalarını/önyargılarını miras almış olabilir.
### Lisans
MIT. Eğitim verisi CommonCrawl'dan (kamuya açık web taraması) türetilmiştir;
CommonCrawl'ın kendi kullanım şartlarına bakınız.
|