  Natural language understanding (NLU) converts sentences into structured
semantic forms. The paucity of annotated training samples is still a
fundamental challenge of NLU. To solve this data sparsity problem, previous
work based on semi-supervised learning mainly focuses on exploiting unlabeled
sentences. In this work, we introduce a dual task of NLU, semantic-to-sentence
generation (SSG), and propose a new framework for semi-supervised NLU with the
corresponding dual model. The framework is composed of dual pseudo-labeling and
dual learning method, which enables an NLU model to make full use of data
(labeled and unlabeled) through a closed-loop of the primal and dual tasks. By
incorporating the dual task, the framework can exploit pure semantic forms as
well as unlabeled sentences, and further improve the NLU and SSG models
iteratively in the closed-loop. The proposed approaches are evaluated on two
public datasets (ATIS and SNIPS). Experiments in the semi-supervised setting
show that our methods can outperform various baselines significantly, and
extensive ablation studies are conducted to verify the effectiveness of our
framework. Finally, our method can also achieve the state-of-the-art
performance on the two datasets in the supervised setting. Our code is
available at \url{https://github.com/rhythmcao/slu-dual-learning.git}.
