1 Introduction  
2 Data Construction  
2.1 The Requirements of Data Construction  
2.2 Approaches of Data Construction  
3 Neural Frameworks  
3.1 Encoding Architectures  
3.2 Decoding Architectures  
3.3 Reinforcement Learning  
3.4 Data Retrieval  
3.5 Exploiting Sequential Features  
3.6 Leveraging Auxiliary Tasks  
3.7 Hybrid Frameworks  
4 Training and Inference Strategies  
4.1 Sampling Strategies  
4.2 Masking Strategies  
4.3 Adversarial Training  
4.4 Knowledge Distillation  
4.5 Pre-training  
4.6 Other Methods  
5 Evaluation Metrics  
5.1 Untrained Automatic Metrics  
5.2 Machine-Learned Metrics  
5.3 Human-Centric Metrics  
5.4 The Trends of Evaluation Metrics  
6 Discussion and Further Directions  
6.1 Development with Neural Pipeline Frameworks  
6.2 Exploiting Background Knowledge  
7 Conclusion