A Flexible Generative Framework for Graph-based Semi-supervised Learning