Hierarchical Dirichlet Process (with Split-Merge Operations), originally by Chong Wang