PyStemmer
Snowball stemming algorithms, for information retrieval
What it is and what it does
PyStemmer wraps the Snowball project's libstemmer library to provide efficient word stemming in Python. Stemming reduces words to a common base form by removing morphological endings—for example, 'cycling', 'cycled', and 'cycles' all stem to a shared root. This is primarily useful for search engines and information retrieval systems where matching variants of the same word improves recall.
The package supports stemming algorithms for many languages including Arabic, Armenian, Basque, Catalan, Czech, Danish, Dutch, English, Finnish, French, German, Greek, Hindi, Hungarian, Indonesian, Italian, Lithuanian, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Tamil, Turkish, and Yiddish. It also provides access to the classic Porter stemming algorithm for English, which may be useful for reproducing historical information retrieval experiments. The package has no runtime dependencies and installs via pre-built wheels on most common platforms.
Use it for:
- Build a search engine that matches query variants to documents containing morphological forms of the same word
- Normalize text for information retrieval systems to improve recall across morphological variants
- Preprocess multilingual text corpora for natural language processing or machine learning pipelines
- Implement the classic Porter algorithm for English stemming in academic or historical IR experiments
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PyStemmer provides word stemming algorithms for multiple languages, reducing words to their morphological base form to improve search and information retrieval.
Yes. PyStemmer is stable (Production/Stable status), actively maintained, has no runtime dependencies, and solves a well-defined problem in search and information retrieval. Medium install friction is acceptable for a compiled library with broad platform coverage. No known vulnerabilities. Install if you need stemming for search, IR, or NLP preprocessing.
Install
pystemmer on PyPI
pip
pip install pystemmeruv
uv add pystemmerpoetry
poetry add pystemmerInstalling PyStemmer
Before you install
Medium install friction due to compiled C extensions, but wheels are available for common platforms (macOS, Linux, Windows across x86_64, ARM, and other architectures). Active maintenance with a recent release 84 days ago.
License in practice
Dual-licensed under MIT and BSD, both permissive licenses allowing commercial and private use with minimal restrictions.
Quickstart
pip install pystemmer
import pystemmer
# Use the package for stemming operations
Requires a C compiler or pre-built wheel for your platform; wheels cover common architectures but less common platforms may need to build from source.
Verify before relying
- Whether the package supports Python 3.13 and 3.14 (listed in classifiers but requires_python is unspecified)
- Specific API and usage patterns for accessing stemming algorithms across supported languages
- Performance characteristics and typical stemming speed for large document collections
Package facts
| License | MIT, BSD (permissive) |
| Python support | not specified |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 84 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,490,220/month — #3,043 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pystemmer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl; pystemmer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl; pystemmer-3.1.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl; pystemmer-3.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pystemmer-3.1.0-cp310-cp310-musllinux_1_2_aarch64.whl; pystemmer-3.1.0-cp310-cp310-musllinux_1_2_x86_64.whl; pystemmer-3.1.0-cp310-cp310-win32.whl; pystemmer-3.1.0-cp310-cp310-win_amd64.whl; pystemmer-3.1.0-cp310-cp310-win_arm64.whl; pystemmer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl; pystemmer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl; pystemmer-3.1.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl; pystemmer-3.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pystemmer-3.1.0-cp311-cp311-musllinux_1_2_aarch64.whl; pystemmer-3.1.0-cp311-cp311-musllinux_1_2_x86_64.whl; pystemmer-3.1.0-cp311-cp311-win32.whl; pystemmer-3.1.0-cp311-cp311-win_amd64.whl; pystemmer-3.1.0-cp311-cp311-win_arm64.whl; pystemmer-3.1.0-cp312-cp312-macosx_10_13_x86_64.whl; pystemmer-3.1.0-cp312-cp312-macosx_11_0_arm64.whl
Keywords: python, information retrieval, language processing, morphological analysis, stemming algorithms, stemmers
Tags
More Database packages
psycopg2-binary is a PostgreSQL database…
copyleft · top 1,000 on PyPI
redisPython client library for connecting to and…
permissive · top 1,000 on PyPI
ydbYDB Python SDK is the official client library…
permissive · top 1,000 on PyPI
snowflake-connector-pythonConnects Python applications to Snowflake data…
permissive · top 1,000 on PyPI
sqlparsesqlparse tokenizes SQL text into a tree of…
permissive · top 1,000 on PyPI
dbt-adaptersProvides base adapter protocols and shared…
permissive · top 1,000 on PyPI
py-rust-stemmersProvides fast, parallel word stemming using…
unclear · top 5,000 on PyPI
SastrawiSastrawi reduces inflected Indonesian words to…
permissive · top 15,000 on PyPI
snowballstemmerProvides stemming algorithms for 34 languages,…
permissive · top 1,000 on PyPI
pyphenPyphen hyphenates text in multiple languages…
copyleft · top 1,000 on PyPI
pymorphy3Morphological analyzer and POS tagger for…
permissive · top 15,000 on PyPI
pyspellcheckerDetects misspelled words and suggests…
permissive · top 5,000 on PyPI
pymorphy2Morphological analyzer and inflection engine…
permissive · top 15,000 on PyPI
gensimGensim is a Python library for topic modeling,…
copyleft · top 5,000 on PyPI
jiebaJieba segments Chinese text into words using…
permissive · top 5,000 on PyPI
simplemmaSimplemma converts inflected word forms to…
permissive · top 15,000 on PyPI