add semispervised learning