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
| 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. | |