Sharing Clusters among Related Groups: Hierarchical Dirichlet Processes