I. INTRODUCTION
II. PROBLEM
2.1 Notation and Definition
2.2 Datasets
2.3 Annotation
2.4 Shared Tasks
III. APPROACHES
3.1 SMT Based Approaches
3.2 NMT Based Approaches
3.3 Classification Based Approaches
3.4 LM Based Approaches
3.5 Hybrid Approaches
3.6 Others
IV. PERFORMANCE BOOSTING TECHNIQUES
4.1 Pre-training
4.2 Reranking
4.3 Model Ensemble
4.4 Iterative Correction
4.5 Auxiliary Task Learning
4.6 Edit-weighted Objective
V. DATA AUGMENTATION
5.1 Noise Injection
5.2 Back Translation
5.3 Others
VI. EXPERIMENT
6.1 Evaluation
6.2 Analysis of Approaches
6.3 Analysis of the Techniques
6.4 Analysis of GEC Systems
VII. PROSPECTIVE DIRECTION
VIII. CONCLUSION