eda

**EDA (Easy Data Augmentation)** is a **set of four simple, universal text augmentation operations — Synonym Replacement, Random Insertion, Random Swap, and Random Deletion** — that require no pretrained models, no external APIs, and no GPU, yet deliver significant accuracy improvements on small text classification datasets (up to +3% on benchmarks with 500 training examples), proving that even trivially simple augmentation techniques can meaningfully reduce overfitting in NLP. **What Is EDA?** - **Definition**: A paper and technique (Wei & Zou, 2019) that proposes four dead-simple text augmentation operations that can be applied to any text classification dataset with a single line of code, using only a WordNet synonym dictionary. - **The Philosophy**: Before reaching for BERT-based augmentation or back-translation, try the simplest thing first. EDA showed that naive word-level operations work surprisingly well — especially on small datasets where overfitting is the main bottleneck. - **Key Finding**: On datasets with only 500 training examples, EDA improved accuracy by an average of 3.0%. On larger datasets (5,000+ examples), the improvement was smaller (~0.8%) because there's less overfitting to fix. **The Four Operations** | Operation | Process | Example | |-----------|---------|---------| | **Synonym Replacement (SR)** | Replace n random words with WordNet synonyms | "The **quick** brown fox" → "The **fast** brown fox" | | **Random Insertion (RI)** | Insert a random synonym of a random word at a random position | "I love this movie" → "I love this **fantastic** movie" | | **Random Swap (RS)** | Randomly swap two words in the sentence | "I love this movie" → "love I this movie" | | **Random Deletion (RD)** | Delete each word with probability p | "I love this movie so much" → "I love movie much" | **Hyperparameters** | Parameter | Meaning | Recommended | |-----------|---------|-------------| | **α (alpha)** | Fraction of words to change per operation | 0.1 (change ~10% of words) | | **n_aug** | Number of augmented sentences per original | 1-4 for small datasets, 1 for large | For a 10-word sentence with α=0.1: change ~1 word per operation. **Impact by Dataset Size** | Training Examples | Accuracy Without EDA | Accuracy With EDA | Improvement | |------------------|---------------------|-------------------|------------| | 500 | 78.3% | 81.3% | +3.0% | | 2,000 | 85.2% | 86.4% | +1.2% | | 5,000 | 88.5% | 89.3% | +0.8% | | Full dataset | 91.2% | 91.5% | +0.3% | **Implementation** ```python import random from nltk.corpus import wordnet def synonym_replacement(sentence, n=1): words = sentence.split() for _ in range(n): idx = random.randint(0, len(words) - 1) synonyms = wordnet.synsets(words[idx]) if synonyms: words[idx] = synonyms[0].lemmas()[0].name() return ' '.join(words) ``` **EDA vs Other NLP Augmentation** | Method | Quality | Speed | Requirements | Best For | |--------|---------|-------|-------------|----------| | **EDA** | Good | Instant | WordNet only | Quick baseline, small datasets | | **Back-Translation** | Excellent | Slow (needs translation model) | GPU or API | Best paraphrases | | **Contextual (BERT)** | Very good | Moderate (needs GPU) | Transformer model | Semantically coherent | | **nlpaug** | Very good | Varies | pip install | Flexible multi-level | | **LLM Paraphrasing** | Excellent | Slow + expensive | API access | Highest quality | **EDA is the proof that simple text augmentation works** — demonstrating that four trivial word-level operations with nothing more than a WordNet dictionary can meaningfully improve text classification on small datasets, serving as the essential NLP augmentation baseline that more complex methods (back-translation, BERT-based) must justify their additional complexity against.

Go deeper with CFSGPT

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

Create Free Account