Turkish Semantic Similarity Model - BGE-M3 (STS-B Fine-tuned)
This is a Turkish semantic textual similarity model fine-tuned from BAAI/bge-m3 on the Turkish STS-B dataset using AnglELoss (Angle-optimized Embeddings). The model excels at measuring the semantic similarity between Turkish sentence pairs, achieving state-of-the-art performance on the Turkish STS-B benchmark.
Overview
Base Model: BAAI/bge-m3 (1024-dimensional embeddings)
Training Task: Semantic Textual Similarity (STS)
Framework: Sentence Transformers (v5.1.1)
Language: Turkish (multilingual base model)
Dataset: Turkish STS-B (stsb-deepl-tr) - 5,749 training samples
Loss Function: AnglELoss (Angle-optimized with pairwise angle similarity)
Training Status: Completed (5 epochs)
Best Checkpoint: Epoch 1.0 (Step 45) - Validation Loss: 5.682
Final Spearman Correlation: 86.29%
Final Pearson Correlation: 85.75%
Context Length: 1024 tokens
Training Time: ~8 minutes (single task)
Performance Metrics
Final Evaluation Results
Best Model: Epoch 1.0 (Step 45)
Metric
Score
Spearman Correlation
0.8629 (86.29%)
Pearson Correlation
0.8575 (85.75%)
Validation Loss
5.682
Best checkpoint saved at step 45 (epoch 1.0) based on validation loss
Training Progression
Step
Epoch
Training Loss
Validation Loss
Spearman
Pearson
10
0.22
7.2492
-
-
-
15
0.33
-
6.8784
0.8359
0.8322
30
0.67
6.0701
5.8729
0.8340
0.8355
45
1.0
-
5.682
0.8535
0.8430
60
1.33
5.5751
5.7641
0.8572
0.8524
105
2.33
5.3594
6.0607
0.8629
0.8551
150
3.33
5.1111
6.1735
0.8634
0.8586
165
3.67
-
6.2597
0.8636
0.8571
225
5.0
-
6.5089
0.8629
0.8575
Bold row indicates the best checkpoint selected by early stopping
Score Range: 0.0 (completely dissimilar) to 5.0 (semantically equivalent)
Normalized Range: 0.0 to 1.0 (divided by 5.0 during preprocessing)
Average Sentence Length: ~10-15 tokens per sentence
Data Format
Each training example consists of:
Sentence 1: Turkish sentence (6-30 tokens)
Sentence 2: Turkish sentence (6-26 tokens)
Similarity Score: Float value 0.0-1.0 (normalized from 0-5 scale)
Sample Data
Sentence 1
Sentence 2
Score
Bir uçak kalkıyor.
Bir uçak havalanıyor.
0.2
Bir adam büyük bir flüt çalıyor.
Bir adam flüt çalıyor.
0.152
Bir adam pizzanın üzerine rendelenmiş peynir serpiyor.
Bir adam pişmemiş bir pizzanın üzerine rendelenmiş peynir serpiyor.
0.152
Capabilities
This model is specifically optimized for:
Semantic Similarity Scoring: Predicting similarity scores between Turkish sentence pairs
Paraphrase Detection: Identifying paraphrases and semantically equivalent sentences
Duplicate Detection: Finding duplicate or near-duplicate Turkish content
Question-Answer Matching: Matching questions with semantically similar answers
Document Similarity: Comparing semantic similarity of Turkish documents
Sentence Clustering: Grouping semantically similar Turkish sentences
Textual Entailment: Understanding semantic relationships between sentences
Usage
Installation
pip install -U sentence-transformers
Semantic Similarity Scoring
python
1from sentence_transformers import SentenceTransformer, util
23# Load the model4model = SentenceTransformer("newmindai/bge-m3-stsb-turkish", trust_remote_code=True)56# Turkish sentence pairs7sentence_pairs =[8["Bir uçak kalkıyor.","Bir uçak havalanıyor."],9["Bir adam flüt çalıyor.","Bir kadın zencefil dilimliyor."],10["Bir çocuk sahilde oynuyor.","Küçük bir çocuk kumda oynuyor."]11]1213# Compute similarity scores14for sent1, sent2 in sentence_pairs:15 emb1 = model.encode(sent1, convert_to_tensor=True)16 emb2 = model.encode(sent2, convert_to_tensor=True)1718 similarity = util.pytorch_cos_sim(emb1, emb2).item()19print(f"Similarity: {similarity:.4f}")20print(f" - '{sent1}'")21print(f" - '{sent2}'")22print()
Batch Encoding
python
1from sentence_transformers import SentenceTransformer
23model = SentenceTransformer("newmindai/bge-m3-stsb-turkish", trust_remote_code=True)45# Turkish sentences6sentences =[7"Bir adam çiftliğinde çalışıyor.",8"Yaşlı bir adam çiftliğinde çalışırken bir inek onu tekmeler.",9"Bir kedi yavrusu yürüyor.",10"İki Hintli kadın sahilde duruyor."11]1213# Encode sentences14embeddings = model.encode(sentences)15print(f"Embeddings shape: {embeddings.shape}")16# Output: (4, 1024)1718# Compute similarity matrix19similarities = model.similarity(embeddings, embeddings)20print("Similarity matrix:")21print(similarities)
Finding Most Similar Sentences
python
1from sentence_transformers import SentenceTransformer, util
23model = SentenceTransformer("newmindai/bge-m3-stsb-turkish", trust_remote_code=True)45# Query and corpus6query ="Bir adam çiftlikte çalışıyor."7corpus =[8"Yaşlı bir adam çiftliğinde çalışırken bir inek onu tekmeler.",9"Bir kedi yavrusu yürüyor.",10"Bir kadın kumu kazıyor.",11"Kayalık bir deniz kıyısında bir adam ve köpek.",12"İki Hintli kadın sahilde iki Hintli kızla birlikte duruyor."13]1415# Encode16query_emb = model.encode(query, convert_to_tensor=True)17corpus_emb = model.encode(corpus, convert_to_tensor=True)1819# Find most similar20hits = util.semantic_search(query_emb, corpus_emb, top_k=3)[0]2122print(f"Query: {query}\n")23print("Top 3 most similar sentences:")24for hit in hits:25print(f"{hit['score']:.4f}: {corpus[hit['corpus_id']]}")
Training Details
Complete Hyperparameters
Parameter
Value
Per-device train batch size
8
Number of GPUs
4
Physical batch size
32
Gradient accumulation steps
4
Effective batch size
128
Learning rate
5e-05
Weight decay
0.01
Warmup steps
89
LR scheduler
linear
Max gradient norm
1.0
Num train epochs
5
Save steps
45
Eval steps
15
Logging steps
10
AnglELoss scale
20.0
Batch sampler
batch_sampler
Load best model at end
True
Optimizer
adamw_torch_fused
Framework Versions
Python: 3.10.12
Sentence Transformers: 5.1.1
PyTorch: 2.8.0+cu128
Transformers: 4.57.0
CUDA: 12.8
Accelerate: 1.10.1
Datasets: 4.2.0
Tokenizers: 0.22.1
Use Cases
Chatbot Response Matching: Find the most semantically similar pre-defined response for user queries
FAQ Search: Match user questions to the most relevant FAQ entries
Content Recommendation: Recommend articles or documents with similar semantic content
Plagiarism Detection: Identify semantically similar text for academic integrity checks
Customer Support: Match support tickets to similar previously resolved issues
Document Clustering: Group documents by semantic similarity for organization
Paraphrase Mining: Automatically detect paraphrases in large Turkish text corpora
Semantic Search: Build semantic search engines for Turkish content
Question Answering: Match questions to semantically relevant answer candidates
Text Summarization: Identify redundant sentences for summary generation
Citation
AnglELoss
bibtex
1@inproceedings{li-li-2024-aoe,
2 title = "{A}o{E}: Angle-optimized Embeddings for Semantic Textual Similarity",
3 author = "Li, Xianming and Li, Jing",
4 year = "2024",
5 publisher = "Association for Computational Linguistics",
6 url = "https://aclanthology.org/2024.acl-long.101/",
7 doi = "10.18653/v1/2024.acl-long.101"
8}
Sentence Transformers
bibtex
1@inproceedings{reimers-2019-sentence-bert,
2 title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
3 author = "Reimers, Nils and Gurevych, Iryna",
4 booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
5 month = "11",
6 year = "2019",
7 publisher = "Association for Computational Linguistics",
8 url = "https://arxiv.org/abs/1908.10084",
9}
Base Model (BGE-M3)
bibtex
1@misc{bge-m3,
2 title={BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation},
3 author={Jianlv Chen and Shitao Xiao and Peitian Zhang and Kun Luo and Defu Lian and Zheng Liu},
4 year={2024},
5 eprint={2402.03216},
6 archivePrefix={arXiv},
7 primaryClass={cs.CL}
8}