All Projects → rwalk → Gsdmm

rwalk / Gsdmm

Licence: mit
GSDMM: Short text clustering

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Gsdmm

Matrixprofile
A Python 3 library making time series data mining tasks, utilizing matrix profile algorithms, accessible to everyone.
Stars: ✭ 141 (-19.43%)
Mutual labels:  clustering
Instance Segmentation With Discriminative Loss Tensorflow
Tensorflow implementation of "Semantic Instance Segmentation with a Discriminative Loss Function"
Stars: ✭ 158 (-9.71%)
Mutual labels:  clustering
Mars
Asynchronous Block-Level Storage Replication
Stars: ✭ 168 (-4%)
Mutual labels:  clustering
Docker Blinkt Workshop
Get into physical computing with Docker and Raspberry Pi
Stars: ✭ 151 (-13.71%)
Mutual labels:  clustering
Ml Course
Starter code of Prof. Andrew Ng's machine learning MOOC in R statistical language
Stars: ✭ 154 (-12%)
Mutual labels:  clustering
Khiva
An open-source library of algorithms to analyse time series in GPU and CPU.
Stars: ✭ 161 (-8%)
Mutual labels:  clustering
Hazelcast Go Client
Hazelcast IMDG Go Client
Stars: ✭ 140 (-20%)
Mutual labels:  clustering
Micro Cluster
Run multiple micro servers and a front proxy at a time
Stars: ✭ 173 (-1.14%)
Mutual labels:  clustering
Isee
R/shiny interface for interactive visualization of data in SummarizedExperiment objects
Stars: ✭ 155 (-11.43%)
Mutual labels:  clustering
Slot Attention
Implementation of Slot Attention from GoogleAI
Stars: ✭ 168 (-4%)
Mutual labels:  clustering
Machine Learning With Python
Practice and tutorial-style notebooks covering wide variety of machine learning techniques
Stars: ✭ 2,197 (+1155.43%)
Mutual labels:  clustering
Hdbscan
A high performance implementation of HDBSCAN clustering.
Stars: ✭ 2,032 (+1061.14%)
Mutual labels:  clustering
Dbscan
Density Based Clustering of Applications with Noise (DBSCAN) and Related Algorithms - R package
Stars: ✭ 161 (-8%)
Mutual labels:  clustering
Docker Rabbitmq Cluster
Cluster RabbitMQ (official docker image)
Stars: ✭ 144 (-17.71%)
Mutual labels:  clustering
Rayo.js
Micro framework for Node.js
Stars: ✭ 170 (-2.86%)
Mutual labels:  clustering
Practical Machine Learning With Python
Master the essential skills needed to recognize and solve complex real-world problems with Machine Learning and Deep Learning by leveraging the highly popular Python Machine Learning Eco-system.
Stars: ✭ 1,868 (+967.43%)
Mutual labels:  clustering
Danmf
A sparsity aware implementation of "Deep Autoencoder-like Nonnegative Matrix Factorization for Community Detection" (CIKM 2018).
Stars: ✭ 161 (-8%)
Mutual labels:  clustering
Splitter
A Pytorch implementation of "Splitter: Learning Node Representations that Capture Multiple Social Contexts" (WWW 2019).
Stars: ✭ 177 (+1.14%)
Mutual labels:  clustering
Flexsearch Server
High-performance FlexSearch Server for Node.js (Cluster)
Stars: ✭ 172 (-1.71%)
Mutual labels:  clustering
Newsrecommender
A news recommendation system tailored for user communities
Stars: ✭ 164 (-6.29%)
Mutual labels:  clustering

GSDMM: Short text clustering

This project implements the Gibbs sampling algorithm for a Dirichlet Mixture Model of Yin and Wang 2014 for the clustering of short text documents. Some advantages of this algorithm:

  • It requires only an upper bound K on the number of clusters
  • With good parameter selection, the model converges quickly
  • Space efficient and scalable

This project is an easy to read reference implementation of GSDMM -- I don't plan to maintain it unless there is demand. I am however actively maintaining the much faster Rust version of GSDMM here.

The Movie Group Process

In their paper, the authors introduce a simple conceptual model for explaining the GSDMM called the Movie Group Process.

Imagine a professor is leading a film class. At the start of the class, the students are randomly assigned to K tables. Before class begins, the students make lists of their favorite films. The professor repeatedly reads the class role. Each time the student's name is called, the student must select a new table satisfying one or both of the following conditions:

  • The new table has more students than the current table.
  • The new table has students with similar lists of favorite movies.

By following these steps consistently, we might expect that the students eventually arrive at an "optimal" table configuration.

Usage

To use a Movie Group Process to cluster short texts, first initialize a MovieGroupProcess:

from gsdmm import MovieGroupProcess
mgp = MovieGroupProcess(K=8, alpha=0.1, beta=0.1, n_iters=30)

It's important to always choose K to be larger than the number of clusters you expect exist in your data, as the algorithm can never return more than K clusters.

To fit the model:

y = mgp.fit(docs)

Each doc in docs must be a unique list of tokens found in your short text document. This implementation does not support counting tokens with multiplicity (which generally has little value in short text documents).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].