TglStemmer
A Python library for Tagalog word stemming.
About
TglStemmer is a library that finds the root form of Tagalog words. It works on inflected words, even those with mixed Tagalog-English (Taglish) terms or those not found in dictionaries. It removes affixes, reduces repeated syllables, and applies transformation rules to find possible root forms. These are filtered using a list of valid words and conditions, and the best root is then chosen based on how much was changed during the process.
Installation
pip install tglstemmer
Usage
TglStemmer acts as a standalone library that can be imported via
from tglstemmer import stemmer.
get_stem
Gets the root of a word. Takes a word and returns its stem as a Stem object
(basically a string with affixes, reduplication, transformations, etc. as
additional attributes).
stem = stemmer.get_stem("nagsulat")
print(stem)
# Output: 'sulat'
Since get_stem returns a Stem object, the properties used in the stemming
process can be accessed as attributes.
prefix = stem.pre
print(prefix)
# Output: 'nag'
suffix = stem.suf
print(suffix)
# Output: None
get_stems
Gets the root of each word in a text. Takes a text and returns the stem of
each word as a list of Stem objects.
stems = stemmer.get_stems("nagsulat, binasa, at punitin")
print(stems)
# Output: ['sulat', 'basa', 'at', 'punit']
get_stem_candidates
Gets all the stem candidates of a word. Takes a word and returns the possible
stems as a list of Stem objects. This is helpful for loose checking,
considering candidate selection is not perfect.
candidates = stemmer.get_stem_candidates("pinakamahusay't")
print(candidates)
# Output: ['husay', 'mahusay', 'pinakamahusay']
Accuracy
The accuracy was tested using a list of stems and their corresponding inflections. The list is manually derived from the examples in Balarila ng Wikang Pambansa (Santos, 1939), particularly the sections "Palabuuan ng mga Salita" (pp. 28-34) and "Mga Sangkap ng Pananalita" (pp. 35-37). This is not a "gold" standard dataset but was chosen for testing since the book provides varied examples of inflections during its discussion of the affixation process. Each inflection was stemmed by TglStemmer and then compared to the original stem, across 266 stem-inflection pairs.
| Metric | Value |
|---|---|
| Accuracy | 75.19% |
| Correct Attempts | 200 |
| Incorrect Attempts | 66 |
| Understemming Avg | 0.69 |
| Overstemming Avg | 0.12 |
| Understemming Total | 184 |
| Overstemming Total | 33 |
Development
This project uses uv for dependency management.
Clone the repo and sync dependencies (including dev and test groups):
git clone https://github.com/andrianllmm/tagalog-stemmer.git
cd tagalog-stemmer
uv sync --all-groups
Run the tests:
uv run pytest
Contributing
Contributions are welcome! See CONTRIBUTING.md for more details.
License
Distributed under the MIT License.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tglstemmer-0.1.1.tar.gz.
File metadata
- Download URL: tglstemmer-0.1.1.tar.gz
- Upload date:
- Size: 137.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.11.33 {"installer":{"name":"uv","version":"0.11.33","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
027be731b2f923b8cc1190ebfa583826b78943dc83019264243cf6bd24aa920c
|
|
| MD5 |
360825d03012cc1a77ddafdf16d963b7
|
|
| BLAKE2b-256 |
ed09842b5ee9beae126c3bf5aef4c0db806f102495fd525d7647984c71f8c71b
|
File details
Details for the file tglstemmer-0.1.1-py3-none-any.whl.
File metadata
- Download URL: tglstemmer-0.1.1-py3-none-any.whl
- Upload date:
- Size: 135.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.11.33 {"installer":{"name":"uv","version":"0.11.33","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
895823c8180339fcc61aacfade562b8ee12f934098e66c0a755926a8bfd665ea
|
|
| MD5 |
448c49961003ff641353e6a19f2c60ef
|
|
| BLAKE2b-256 |
a83dcd4bfe6d031def017eddf4a298c952231253c2228f09d7f0374b91fb8ddc
|