Semi-Supervised Learning and Domain Adaptation in Natural Language Processing