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.18
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.18.tar.gz | 6.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| labelled_topic_clustering-1.0.18-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.2 kB
Release files / labelled-topic-clustering-1.0.18.tar.gz
| Download URL | labelled-topic-clustering-1.0.18.tar.gz |
|---|---|
| Size | 6.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
be96bf968cc5f32ee99175aea885da500e7b7450111b00c02cddc098933cbd4e
|
|
BLAKE2b-256 checksum How to use checksums |
86c85f4fd0353ce621e83b41468b1f5bd672492a572d6af516996a3db2bf2c6f
|
| 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.18-py3-none-any.whl
| Download URL | labelled_topic_clustering-1.0.18-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e9f1976dc2c16aad39a88657d20908f27ed3e3912b4bc7f1fcc2fe1a64bd45a9
|
|
BLAKE2b-256 checksum How to use checksums |
300ad6189871f9611a7fc5649ac215364e8f7b5d3315359bde4f851782198979
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.9.19
|