Learning with not Enough Data Part 1: Semi-Supervised Learning