Create README.md
Browse files
README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 🧠 Text Similarity Model using Sentence-BERT
|
| 2 |
+
|
| 3 |
+
This project fine-tunes a Sentence-BERT model (`paraphrase-MiniLM-L6-v2`) on the **STS Benchmark** English dataset (`stsb_multi_mt`) to perform **semantic similarity scoring** between two text inputs.
|
| 4 |
+
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
## 🚀 Features
|
| 8 |
+
|
| 9 |
+
- 🔁 Fine-tunes `sentence-transformers/paraphrase-MiniLM-L6-v2`
|
| 10 |
+
- 🔧 Trained on the `stsb_multi_mt` dataset (English split)
|
| 11 |
+
- 🧪 Predicts cosine similarity between sentence pairs (0 to 1)
|
| 12 |
+
- ⚙️ Uses a custom PyTorch model and manual training loop
|
| 13 |
+
- 💾 Model is saved as `similarity_model.pt`
|
| 14 |
+
- 🧠 Supports inference on custom sentence pairs
|
| 15 |
+
|
| 16 |
+
---
|
| 17 |
+
|
| 18 |
+
## 📦 Dependencies
|
| 19 |
+
|
| 20 |
+
Install required libraries:
|
| 21 |
+
|
| 22 |
+
```python
|
| 23 |
+
pip install -q transformers datasets sentence-transformers evaluate --upgrade
|
| 24 |
+
```
|
| 25 |
+
|
| 26 |
+
# 📊 Dataset
|
| 27 |
+
- Dataset: stsb_multi_mt
|
| 28 |
+
- Split: "en"
|
| 29 |
+
- Purpose: Provides sentence pairs with similarity scores ranging from 0 to 5, which are normalized to 0–1 for training.
|
| 30 |
+
|
| 31 |
+
```python
|
| 32 |
+
|
| 33 |
+
from datasets import load_dataset
|
| 34 |
+
|
| 35 |
+
dataset = load_dataset("stsb_multi_mt", name="en", split="train")
|
| 36 |
+
dataset = dataset.shuffle(seed=42).select(range(10000)) # Sample subset for faster training
|
| 37 |
+
```
|
| 38 |
+
|
| 39 |
+
## 🏗️ Model Architecture
|
| 40 |
+
# ✅ Base Model
|
| 41 |
+
- sentence-transformers/paraphrase-MiniLM-L6-v2 (from Hugging Face)
|
| 42 |
+
|
| 43 |
+
# ✅ Fine-Tuning
|
| 44 |
+
- Cosine similarity computed between the CLS token embeddings of two inputs
|
| 45 |
+
|
| 46 |
+
- Loss: Mean Squared Error (MSE) between predicted similarity and true score
|
| 47 |
+
|
| 48 |
+
# 🧠 Training
|
| 49 |
+
|
| 50 |
+
- Epochs: 3
|
| 51 |
+
|
| 52 |
+
- Optimizer: Adam
|
| 53 |
+
|
| 54 |
+
- Loss: MSELoss
|
| 55 |
+
|
| 56 |
+
- Manual training loop using PyTorch
|
| 57 |
+
|
| 58 |
+
# Files and Structure
|
| 59 |
+
|
| 60 |
+
📦text-similarity-project
|
| 61 |
+
┣ 📜similarity_model.pt # Trained PyTorch model
|
| 62 |
+
┣ 📜training_script.py # Full training and inference script
|
| 63 |
+
┣ 📜README.md # Documentation
|