rwalk/gsdmm
rwalk/gsdmm has 362 GitHub stars and 90 forks. Star changes are not measured yet. Last checked 2026-11-13 21:15 UTC. Last push 2022-12-28.
Measured star growth
- in 24h
- Collecting history
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
GSDMM: Short text clustering
Developer ToolsREADME.md
OriginalGSDMM: 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
Kon 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).
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
562,325 starspublic-apis/public-apis
A collective list of free APIs
498,764 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
457,409 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,393 stars