This project implements a semantic duplicate question detection system that identifies whether two questions convey the same meaning, even if phrased differently.
It leverages Sentence-BERT (SBERT) embeddings and cosine similarity to capture deep semantic relationships between questions.
The system is evaluated using the Quora Question Pairs dataset, a widely used benchmark for duplicate question detection.
- Problem Statement
- Methodology
- Dataset
- Evaluation Metrics
- Tech Stack
- Installation
- Usage
- Limitations
- Future Improvements
- Use Cases
- Flow Diagram
Online platforms often face the issue of duplicate questions, where users ask the same question using different wording.
Traditional keyword-based approaches fail to capture semantic similarity.
This project aims to:
- Detect semantically similar (duplicate) questions
- Go beyond surface-level word matching
- Provide accurate similarity-based retrieval
The system follows a modular pipeline:
- Remove missing values
- Normalize text
- Extract unique questions
- Model used:
all-MiniLM-L6-v2(SBERT) - Each question converted into a dense vector
- Batch processing for efficiency
- Embeddings stored in
.npyformat - Metadata and mappings stored for traceability
- Cosine similarity between query and stored embeddings
- Top-k most similar questions retrieved
- Similarity threshold used to classify duplicates vs non-duplicates
Quora Question Pairs Dataset
- Contains labeled question pairs (
duplicate / non-duplicate) - Diverse real-world question phrasing
Example: Q1: How can I increase internet speed while using VPN? Q2: How do I make internet faster when VPN is connected? Label: Duplicate
- Precision
- Recall
- F1-score
- Accuracy
- ROC-AUC
- Recall@K
- Mean Reciprocal Rank (MRR)
- Best performance at similarity threshold ≈ 0.5
- High AUC (~0.89)
- Recall@5 ≈ 0.91
- Python
- Sentence-Transformers (SBERT)
- NumPy
- Scikit-learn
- Pandas
- Clone the repository:
git clone https://github.com/FatimaM05/sbert-question-similarity.git cd sbert-question-similarity
- Install required packages:
pip install -r requirements.txtNote: Make sure
requirements.txtincludessentence-transformers,numpy,pandas,scikit-learn.
- Generate embeddings for the dataset:
python generate_embeddings.py --dataset questions.csv- Check for duplicates given a query:
python query_duplicate.py --question "How do I speed up my VPN connection?"- Adjust similarity threshold in
config.pyto tune detection sensitivity.
- Dataset-specific (Quora only)
- Brute-force cosine similarity (not scalable for very large datasets)
- Contextual metadata not used (e.g., tags, user info)
- Integrate FAISS / ANN for fast similarity search
- Use larger SBERT models (e.g., MPNet)
- Extend to multilingual datasets
- Add contextual and metadata-based features
- Q&A platforms (duplicate prevention)
- Search engines
- Knowledge base optimization
- Content moderation systems