Exploring latent structure in data: algorithms and implementations