shorttext at 4.1.0: two development branches, a changelog that stops at 4.0.4, and a TensorFlow floor that predates its own Python claim
Various Algorithms for Short Text Mining
At a glance
- What is it?
- The shorttext package wraps gensim topic models, word embeddings, cosine distance, ConvNet, C-LSTM, maximum entropy, seq2seq and spell correction behind one import name. Its packaging file is where the gaps sit: the install command and the contributor note name different branches, the news list stops short of the shipped version, and the TensorFlow floor cannot be installed on two of the three Python versions the project claims.
- Who is it for?
- shorttext is a working library with a fast release record and a dependency set that will install on a clean 3.11 interpreter, so reach for it when short, sparse text is exactly your problem and gensim or Keras are already in your stack. Before you commit, resolve the branch question for yourself, since the documented development install pulls master while the contributor note asks for develop.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 11, 2026, and from our analysis. They are not legal advice.
Editorial analysis
master is what you install, develop is where pull requests go
The installation section offers a development install that pins a branch by name:
>>> pip install git+https://github.com/stephenhky/PyShortTextCategorization@masterThe contributor note further down the same README asks for pull requests against a different branch, `develop`. The repository's default branch is `master`, which is the ref that `@master` resolves to. Two sentences describe the same intention, getting the most current code, and they point at two refs that are never reconciled in the file. A contributor who opens a pull request against `develop` is not sending code to the branch the documented development install pulls. The one place a ref is pinned precisely is a link to an earlier version by commit hash, used for a blog post demonstration. The release record behind all this is fast: 1.0.0 on 07/14/2018, 2.0.0 on 07/12/2024, 3.0.0 on 08/10/2025, 4.0.0 on 04/19/2026, with 1.x carrying patch releases for five and a half years.
Version 4.1.0 shipped on 2026-10-01 and the news list stops at 4.0.4
`pyproject.toml` declares `version = "4.1.0"`, and the newest tag is 4.1.0 dated 2026-10-01, with the last push recorded on the same day. The News list at the bottom of the README agrees with the tag history everywhere it goes, down to the dates: `07/02/2026: shorttext 4.0.4 released`, `05/26/2026: shorttext 4.0.3 released`, `05/18/2026: shorttext 4.0.2 released`. Then it stops. There is no line for 4.1.0, even though the version sits in the packaging file and the tag exists. The list also carries a typo in the 2026 entries, with `03/02/2026: shorttext 3.1.0 reelased` spelled with a doubled letter. It runs back past fifty entries and ends part way through a word, at `10/27/2017: shorttext 0.5.7 relea`. Nothing in the file says what changed between 4.0.4 and 4.1.0, so the release notes for the version you are installing do not exist in the repository.
The TensorFlow floor predates two of the three Python versions claimed
The README states that the package runs on Python 3.11, 3.12, and 3.13. `pyproject.toml` repeats that claim in `requires-python = ">=3.11"` and in three classifiers. The dependency list sets the floor at `tensorflow>=2.13.0` and, separately, `keras>=3.0.0`. Every one of those is a lower bound with no ceiling, so a resolver picks the newest release that ships a wheel for the interpreter in front of it. TensorFlow 2.13.0 was cut for Python 3.8 through 3.11, which puts the stated floor out of reach on 3.12 and on 3.13. The Keras floor points the same way, since the Keras 3 line pairs with TensorFlow 2.16 and newer. Two more floors pull in the same direction: `numba>=0.57.0`, whose 0.57 line caps NumPy below 1.25, sits beside `numpy>=1.23.3`, so an environment holding that old numba cannot satisfy the stated NumPy floor. Confirm which TensorFlow build your interpreter resolves to before assuming the file describes what lands on disk.
A cli package and a click dependency with no command line in the feature list
Eleven characteristics are enumerated for the package. Not one of them is a command line tool. The packaging file registers `shorttext.cli` as a subpackage and makes `click>=8.0.0` a hard dependency, so both halves of a console interface are declared in the metadata while the feature list stays silent about it. The visible part of the file shows no entry point declaration to tie the two together. The eleven items themselves reach across a wide range: text preprocessing, pre-trained word embedding support, gensim topic models, topic model representation for scikit-learn, cosine distance classification, neural network classification including ConvNet and C-LSTM, maximum entropy classification, phrase difference metrics with a soft Jaccard score and Word Mover's distance, character-level seq2seq, and spell correction. A reader choosing a tool from that list never learns a console interface exists.
The documentation links split across two hostnames and three schemes
The Documentation section sends readers to `http://shorttext.rtfd.io/`, the retired short domain, over plain http. The tutorial link below it uses `http://shorttext.readthedocs.io/en/latest/tutorial.html`, also plain http. The FAQ link uses `https://shorttext.readthedocs.io/en/latest/faq.html`, and the installation guide uses `https://shorttext.readthedocs.io/en/latest/install.html`. The Useful Links block points back at `http://shorttext.readthedocs.io`. The packaging file then declares `Documentation = "https://shorttext.readthedocs.io"`. Six links to the documentation, two hostnames, three schemes, and no stated preference. The rtfd.io form in the first link is the one that redirects, so a reader following the introduction takes one hop before reaching the host the rest of the file already assumes. The repository does carry a `.readthedocs.yml`, so the documentation is built from a checked-in config even though the first link still points at the old address.
Two badges repeat and the documentation badge points at another site
The badge row at the top of the README is eight links long, and two of them are exact repeats: the pyup badge appears twice in a row and the PyPI badge appears twice in a row. The remaining entries are CircleCI, the releases page, the readthedocs badge, and the repository link. That readthedocs badge is the odd one out. It points at `https://pyqentangle.readthedocs.io/en/latest/?badge=latest`, which serves documentation for a different project, while every prose link in the same file aims at the shorttext host. The tree holds both a `.circleci/` directory and a `.github/` directory, so two automation systems are present, yet only CircleCI is advertised. Nothing in the file states which one runs the tests, and no test command appears anywhere. The tree also carries `MANIFEST.in`, `docs/`, `examples/`, `src/`, `test/` and `.readthedocs.yml` at the top level, with the package itself living under `src/`.
One example directory, and it covers the last item on the list
Exactly one example directory appears in the tree: `examples/sakaguchi_spell/`. Spell correction is the eleventh and final characteristic, and it is the only entry with a worked example shipped beside the source. Topic modeling, word embeddings, cosine distance, ConvNet, C-LSTM, maximum entropy, seq2seq and the phrase difference metrics have no matching directory. The bundled data is described as partial too, with subject keywords and NIH RePORT given as examples of what ships. The one example folder is named after a different dataset entirely, so even the data story and the example story do not point at the same thing. Elsewhere the file points at a tutorial and an FAQ for how to use the rest, and at an earlier commit of the repository for a demonstration of deep neural networks and word embedding models. Treat the eleven items as a catalogue of intentions and the single folder as the only worked answer.
Subpackages are registered by hand in an array that starts with three names
The packaging file declares `packages` as an explicit list rather than letting setuptools discover subpackages:
[tool.setuptools]
packages = [
"shorttext",
"shorttext.cli",
"shorttext.utils",
"The visible portion ends inside the fourth entry, so the full set of shipped modules cannot be read off the file. What is readable shows a hand-maintained surface: any module added later has to be typed into that array or it is not part of the built distribution. The same care shows in the layout, with `MANIFEST.in` beside `pyproject.toml` and the package under `src/`. The license field uses the table form `license = {text = "MIT"}`, which current packaging guidance has moved away from in favour of a plain SPDX string, and no license file entry accompanies it even though a `LICENSE` file sits at the repository root. The description differs between the two places it appears, as `Short Text Mining` in the packaging file against `Various Algorithms for Short Text Mining` on the repository.
Editorial conclusion
shorttext is a working library with a fast release record and a dependency set that will install on a clean 3.11 interpreter, so reach for it when short, sparse text is exactly your problem and gensim or Keras are already in your stack. Before you commit, resolve the branch question for yourself, since the documented development install pulls master while the contributor note asks for develop. Read the dependency floors as lower bounds rather than as the versions you will get, and confirm the TensorFlow build your interpreter actually resolves to.
Frequently asked questions
Which Python versions does the shorttext package support?
The README states that it runs on Python 3.11, 3.12, and 3.13. `pyproject.toml` matches that with `requires-python = ">=3.11"` and classifiers for each of the three interpreters.
How do I install the development version of shorttext from GitHub?
Use `pip install git+https://github.com/stephenhky/PyShortTextCategorization@master`, which pulls the `master` branch. The same README asks contributors to send pull requests to the `develop` branch instead.
Which classification and topic modeling methods does shorttext include?
gensim topic models for LDA, LSI and Random Projections plus an autoencoder, topic model representation for scikit-learn, cosine distance classification, neural network classification including ConvNet and C-LSTM, maximum entropy classification, and phrase difference metrics including a soft Jaccard score and Word Mover's distance.
Where is the shorttext documentation and tutorial hosted?
At `shorttext.readthedocs.io`, with a tutorial at `en/latest/tutorial.html` and an FAQ at `en/latest/faq.html`. The introduction links instead to the retired `http://shorttext.rtfd.io/` address over plain http, while the packaging file declares the https readthedocs.io form.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/stephenhky-pyshorttextcategorization)