Paraphrase Generation Text Generation

# Paraphrase Generation & Text Generation

## Introduction & Motivation

Paraphrase Generation: generate semantically similar text. Diverse rewording; data augmentation. Applications: text augmentation, document simplification, machine translation.

Motivation: Create text variations; preserve meaning; improve robustness.

Applications: Data augmentation, document simplification, quality improvement.

---

## Core Concepts & Theory

### Semantic Similarity

Preserve meaning across paraphrases.

### Lexical Diversity

Vary vocabulary and structure.

### Back-Translation

Translate and translate back.

### Controlled Generation

Generate with specific attributes.

---

## Mathematical Formulation

Seq2Seq Loss:
$$L = -\sum_t \log P(y_t | y_{<t}, x)$$

Diversity Penalty:
$$L_ ext{div} = -\lambda \log(1 - \cos( ext{emb}(y_i), ext{emb}(y_j))) ext{ for } i eq j$$

Similarity Metric:
$$ ext{BLEU}(x, y) = \exp(\sum_{n=1}^{N} w_n \log p_n)$$

---

## Advanced Theory & Extensions

### Variational Autoencoders (VAE)

Latent space paraphrase generation.

### Reinforcement Learning

Reward diverse paraphrases.

### Plug-and-Play Language Models

Control generation attributes.

---

## Computational Considerations

Seq2seq: O(n·m·d²).

Diversity computation: O(N²).

Beam search: O(beam_size·seq_len).

---

## Practical Implementation Strategies

### Beam Search Diversity

Avoid similar hypotheses in beam.

### Temperature Sampling

Control randomness in generation.

### Diverse Beam Search

Maximize diversity across beams.

---

## Benchmark Datasets & Evaluation

PAWS: 108K paraphrase pairs.

STS Benchmark: Semantic textual similarity.

ParaNMT: Paraphrase generation dataset.

---

## Key Challenges & Limitations

### Semantic Preservation

Maintaining meaning accuracy.

### Diversity-Fidelity Trade-off

Balancing variation and meaning.

### Rare Phenomenon Generation

Uncommon paraphrase patterns.

---

## Hyperparameter Tuning

Beam size: 4-10.

Length penalty: 0.6-1.2.

Diversity strength: 0.1-0.5.

---

## Real-World Applications & Case Studies

Question Paraphrasing: Diversity in QA datasets.

Document Simplification: Readability improvement.

Augmentation: Increase training data variety.

---

## Integration with Other Methods

Paraphrase generation + data augmentation for robustness; + summarization for document processing.

---

## Summary & Key Takeaways

Paraphrase Generation via seq2seq and controlled generation enables diverse text creation.

Principles:
1. Semantic preservation: Meaning consistency.
2. Seq2seq architecture: Encoder-decoder.
3. Diverse sampling: Varied hypotheses.
4. Back-translation: Indirect augmentation.
5. Reinforcement learning: Reward optimization.

---

---

## Appendix: Practical Labs

### Lab 1: Back-Translation

import numpy as np

def back_translate(text, forward_model, backward_model):
 """Generate paraphrase via back-translation"""
 # Simulate forward translation
 intermediate = forward_model(text)
 
 # Simulate backward translation
 paraphrase = backward_model(intermediate)
 
 return paraphrase

# Test
def mock_forward(text):
 return "mocked translation"

def mock_backward(text):
 return "translated back paraphrase"

original = "Hello world"
paraphrase = back_translate(original, mock_forward, mock_backward)

assert isinstance(paraphrase, str), "Paraphrase string"
print("✓ Back-translation working")

if __name__ == "__main__":
 print("Lab 1: BackTranslation - PASSED")

### Lab 2: Diversity Penalty

import numpy as np

def compute_diversity_penalty(candidates, lambda_div=0.1):
 """Compute penalty for similar candidates"""
 n = len(candidates)
 diversity_loss = 0
 
 for i in range(n):
 for j in range(i + 1, n):
 # Simplified: compute embedding similarity
 sim = np.random.rand()
 
 # Penalty for similar outputs
 if sim > 0.8:
 diversity_loss += lambda_div * sim
 
 return diversity_loss

# Test
candidates = ["Hello", "Hi", "Hey there"]

penalty = compute_diversity_penalty(candidates)

assert penalty >= 0, "Penalty non-negative"
print("✓ Diversity penalty working")

if __name__ == "__main__":
 print("Lab 2: DiversityPenalty - PASSED")

### Lab 3: Temperature Sampling

import numpy as np

def sample_with_temperature(logits, temperature=1.0, k=10):
 """Sample from logits with temperature"""
 # Scale logits by temperature
 scaled_logits = logits / temperature
 
 # Compute probabilities
 probs = np.exp(scaled_logits - np.max(scaled_logits))
 probs = probs / probs.sum()
 
 # Top-k sampling
 top_k_indices = np.argsort(probs)[-k:]
 top_k_probs = probs[top_k_indices]
 top_k_probs = top_k_probs / top_k_probs.sum()
 
 # Sample
 sampled = np.random.choice(top_k_indices, p=top_k_probs)
 
 return sampled

# Test
logits = np.random.randn(1000)

sample_low_temp = sample_with_temperature(logits, temperature=0.5)
sample_high_temp = sample_with_temperature(logits, temperature=2.0)

assert 0 <= sample_low_temp < 1000, "Valid sample"
assert 0 <= sample_high_temp < 1000, "Valid sample"
print("✓ Temperature sampling working")

if __name__ == "__main__":
 print("Lab 3: TemperatureSampling - PASSED")

### Lab 4: Beam Search Diversity

import numpy as np

def diverse_beam_search(scores, diversity_strength=0.5, beam_size=5):
 """Diverse beam search"""
 beams = []
 
 # First beam: greedy
 top_idx = np.argmax(scores)
 beams.append(top_idx)
 
 # Remaining beams with diversity penalty
 for b in range(1, beam_size):
 penalized_scores = scores.copy()
 
 # Penalize similar to existing beams
 for existing_idx in beams:
 similarity = np.abs(existing_idx - np.arange(len(scores))) / (len(scores) + 1e-8)
 penalized_scores -= diversity_strength * similarity
 
 top_idx = np.argmax(penalized_scores)
 beams.append(top_idx)
 
 return beams

# Test
scores = np.random.rand(100)

beams = diverse_beam_search(scores, beam_size=5)

assert len(beams) == 5, "Correct beam count"
assert len(set(beams)) == 5, "Diverse beams"
print("✓ Diverse beam search working")

if __name__ == "__main__":
 print("Lab 4: DiverseBeamSearch - PASSED")

Go deeper with CFSGPT

Get AI-powered deep-dives, save terms, and run advanced simulations — free account.

Create Free Account