safetensors bert generated_from_trainer paraphrase-identification glue mrpc en dataset:glue base_model:google-bert/bert-base-uncased base_model:finetune:google-bert/bert-base-uncased license:apache-2.0 model-index region:us
---
base_model: bert-base-uncased
datasets:
- glue
language: en
license: apache-2.0
metrics:
- accuracy
- f1
tags:
- generated_from_trainer
- paraphrase-identification
- bert
- glue
- mrpc
model-index:
- name: bert-base-uncased-finetuned-mrpc
  results:
  - task:
      type: text-classification
      name: Paraphrase Identification
    dataset:
      name: GLUE MRPC
      type: glue
      args: mrpc
    metrics:
    - type: accuracy
      value: 0.8652
      name: Accuracy
    - type: f1
      value: 0.9057
      name: F1
---

# BERT Fine-tuned on MRPC

This model is a fine-tuned version of [bert-base-uncased](https://huggingface.co/bert-base-uncased) on the MRPC (Microsoft Research Paraphrase Corpus) dataset from the GLUE benchmark. It is designed to determine whether two given sentences are semantically equivalent.

## Model description

The model uses the BERT base architecture (12 layers, 768 hidden dimensions, 12 attention heads) and has been fine-tuned specifically for the paraphrase identification task. The output layer predicts whether the input sentence pair expresses the same meaning.

Key specifications:
- Base model: bert-base-uncased
- Task type: Binary classification (paraphrase/not paraphrase)
- Training method: Fine-tuning all layers
- Language: English

## Intended uses & limitations

### Intended uses
- Paraphrase detection
- Semantic similarity assessment
- Question duplicate detection
- Content matching
- Automated text comparison

### Limitations
- Only works with English text
- Performance may degrade on out-of-domain text
- May struggle with complex or nuanced semantic relationships
- Limited to comparing pairs of sentences (not longer texts)

## Training and evaluation data

The model was trained on the Microsoft Research Paraphrase Corpus (MRPC) from the GLUE benchmark:
- Training set: 3,667 sentence pairs
- Validation set: 408 sentence pairs
- Each pair is labeled as either paraphrase (1) or non-paraphrase (0)
- Class distribution: approximately 67.4% positive (paraphrase) and 32.6% negative (non-paraphrase)

## Training procedure

### Training hyperparameters
The following hyperparameters were used during training:
- Learning rate: 3e-05
- Batch size: 8 (train and eval)
- Optimizer: AdamW (betas=(0.9,0.999), epsilon=1e-08)
- LR scheduler: Linear decay
- Number of epochs: 3
- Max sequence length: 512
- Weight decay: 0.01

### Training results
| Training Loss | Epoch | Step | Validation Loss | Accuracy | F1     |
|:-------------:|:-----:|:----:|:---------------:|:--------:|:------:|
| No log        | 1.0   | 459  | 0.3905         | 0.8382   | 0.8878 |
| 0.5385        | 2.0   | 918  | 0.4275         | 0.8505   | 0.8961 |
| 0.3054        | 3.0   | 1377 | 0.5471         | 0.8652   | 0.9057 |

### Framework versions
- Transformers 4.46.2
- PyTorch 2.5.1+cu121
- Datasets 3.1.0
- Tokenizers 0.20.3

## Performance analysis

The model achieves strong performance on the MRPC validation set:
- Accuracy: 86.52%
- F1 Score: 90.57%

These metrics indicate that the model is effective at identifying paraphrases while maintaining a good balance between precision and recall.

## Example usage

```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Load model and tokenizer
tokenizer = AutoTokenizer.from_pretrained("real-jiakai/bert-base-uncased-finetuned-mrpc")
model = AutoModelForSequenceClassification.from_pretrained("real-jiakai/bert-base-uncased-finetuned-mrpc")

# Example function
def check_paraphrase(sentence1, sentence2):
    inputs = tokenizer(sentence1, sentence2, return_tensors="pt", padding=True, truncation=True)
    outputs = model(**inputs)
    prediction = outputs.logits.argmax().item()
    return "Paraphrase" if prediction == 1 else "Not paraphrase"

# Example usage
sentence1 = "The cat sat on the mat."
sentence2 = "A cat was sitting on the mat."
result = check_paraphrase(sentence1, sentence2)
print(f"Result: {result}")
```