Labelled Topic Clustering
Labelled Topic Clustering is as the name suggests, feed it an array of sentences and it will cluster them with human-readable names.
The aim of this project is to make it as easy-as-possible to:
- generate topic clusters on a text dataset using a cosine-similarity approach.
- get human-readable labels for those clusters
Installation
To use the TopicClusterer class, you need to install the required packages. Assuming you have a package manager like pip, you can install the dependencies as follows:
pip install torch sentence-transformers spacy
Usage
- Initialize the TopicClusterer:
from topic_clusterer import TopicClusterer
hf_token = "your_hugging_face_token"
model = "your_model_name"
clusterer = TopicClusterer(hf_token, model, debug=True)
- Get clusters:
sentences = [
"the weather is great",
"This is some perfect weather",
"we're having some really good weather",
"my dog ate my homework",
"why do dogs love homework?",
"dog keeps devouring my homework"
]
clusters = clusterer.get_clusters(sentences)
Example Output
[[0, 1, 2], [3, 4, 5]]
clusters will be a 2d array representing clusters with sentence indicies for the original dataset
- Get labels from clusters:
clusters_labelled = clusterer.get_labels_from_clusters(clusters, sentences)
Example Output
{'Weather great perfect': [0, 1, 2], 'Dog eat homework': [3, 4, 5]}
clusters_labelled is a dictionary where the keys are topic labels, and the values are arrays of sentence indices corresponding to the original dataset.
You can also just get it all at once:
# Get clusters with labels
labelled_clusters = clusterer.get_clusters_with_labels(sentences)
print(labelled_clusters)
Looing Forward
I have done virtually no performance testing as I wrote this once and it was all I needed for a side project.
Some ideas to work on:
- Allow custom tokenizers
- Benchmark performance on large datasets
- Allow for feature extraction locally
Metadata
Release files for labelled-topic-clustering 1.0.17
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| labelled-topic-clustering-1.0.17.tar.gz | 6.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| labelled_topic_clustering-1.0.17-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.7 kB
Release files / labelled-topic-clustering-1.0.17.tar.gz
| Download URL | labelled-topic-clustering-1.0.17.tar.gz |
|---|---|
| Size | 6.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
35d19ca05fdb590e16c61ff1ca9cb1799ebbfb3997ce05e589d8f41c5cad828d
|
|
BLAKE2b-256 checksum How to use checksums |
21fcaf4903166202eadd997682ed44a992bc45a7461d023fa5ac96f8da52ee94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.9.19
|
Release files / labelled_topic_clustering-1.0.17-py3-none-any.whl
| Download URL | labelled_topic_clustering-1.0.17-py3-none-any.whl |
|---|---|
| Size | 7.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
616d80c3c98ce34a12bc2511ad96b0561e4a963ed81d90f7474fdb0c3409810e
|
|
BLAKE2b-256 checksum How to use checksums |
2596e6ec1a8d988275f1d004fc3add1154244d565bdde842332231adbd5534ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.9.19
|