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
fastText-TR-Quality-Classifier
Türkçe açıklama için aşağı kaydırın / Scroll down for Turkish description
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 (predictingclean/garbage).model.vec— plain-text word vectors only (no classification layer). Useful if you want to reuse the learned word embeddings elsewhere, e.g. aspretrainedVectorswhen training a different fastText model.
Usage
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
cleanlabel 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 modelinipretrainedVectorsile başlatmak için) yeniden kullanmak isterseniz faydalıdır.
Kullanım
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.
cleanetiketi "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.
- Downloads last month
- 9