ENH add latent semantic analysis/sparse truncated SVD

Fixes #1519.