--- language: - ckb - kur license: apache-2.0 library_name: sentence-transformers pipeline_tag: sentence-similarity base_model: haryads/kurdish-roberta tags: - sentence-transformers - sentence-similarity - feature-extraction - kurdish - sorani - central-kurdish - ckb - embeddings - semantic-search - retrieval --- # Kurdish Sorani Sentence Embedding Model A **Kurdish Sorani sentence embedding model** for Central Kurdish (`ckb`). It maps Kurdish sentences to 512-dimensional vectors for semantic search, retrieval (RAG), clustering and sentence similarity. Unlike the multilingual models adapted for Kurdish by vocabulary trimming, this model was **trained on Kurdish text**: a RoBERTa base trained from scratch on a 1-million-sentence Kurdish corpus with a custom 32k Kurdish BPE tokenizer, then fine-tuned with contrastive learning (MultipleNegativesRankingLoss) on ~22k Kurdish sentence pairs with hard negatives. If you searched for a "Kurdish sentence embedding model", a "Sorani semantic search model", or a "ckb text embedding model" — this is one, and it is trained on Kurdish rather than repurposed from a multilingual model. ## Usage ```python from sentence_transformers import SentenceTransformer model = SentenceTransformer("haryads/kurdish-sentence-embeddings") sentences = [ "کەشوهەوای ئەمڕۆ زۆر باراناوییە", "ئەمڕۆ ئاسمان دەگرێت و باران دەبارێت", "من حەزم لە خواردنی شۆربای نیسکە", ] emb = model.encode(sentences) print(model.similarity(emb, emb)) ``` ## Evaluation Measured on an internal Kurdish benchmark: a retrieval task (match a sentence to its lemmatized form among 1,000 candidates) and a topic-separation task (800 triplets). Compared against `paraphrase-multilingual-MiniLM-L12-v2` on identical data. | Model | Retrieval R@1 | MRR | Topic accuracy | |-------|:---:|:---:|:---:| | **This model** | **0.978** | **0.984** | **0.931** | | paraphrase-multilingual-MiniLM-L12-v2 | 0.960 | 0.970 | 0.786 | | RoBERTa base, mean-pooled (no fine-tuning) | 0.930 | 0.944 | 0.635 | The model outperforms the multilingual baseline on Kurdish for both retrieval and topic separation. ## Details - Output dimension: 512 - Max sequence length: 128 tokens - Pooling: mean, with L2 normalization - Base: from-scratch Kurdish RoBERTa + 32k Kurdish BPE tokenizer - Fine-tuning: MultipleNegativesRankingLoss on paraphrase, lemma and topic pairs with hard negatives - Language: Central Kurdish / Sorani (`ckb`), Arabic script ## Intended use and limits Best for Kurdish semantic search, retrieval (RAG), clustering and similarity. Sorani only for now. Trained on news-heavy text, so very domain-specific or colloquial input may need in-domain fine-tuning. For best results, normalize input (Arabic vs. Kurdish `ی`/`ک`, ZWNJ, digits) before encoding. ## License Apache-2.0.