A PHP library for stemming words using the English Porter 2 algorithm.
A stemmer takes a given word and follows a set of rules to reduce this word to search-index-usable stem (as opposed to the actual word root). For example, aggravate, aggravated, and aggravates all reduce to "aggrav," thus creating a commonality between those words.
Martin Porter's English (Porter 2) Algorithm improves on the original Porter stemmer as described here.
The included /demo/index.php
file contains a conversion form demonstration.
Make your code aware of the Porter2
class via your favorite method (e.g.,
use
or require
)
Then pass a string of text into the class:
$text = Porter2::stem('consistently');
echo $text; // consist
$text = Porter2::stem('consisting');
echo $text; // consist
$text = Porter2::stem('consistency');
echo $text; // consist
A verification list of 29,000 words and their expected stems can be run (after
composer install
via phpunit
).
- External file support for protected words: Now you can add protected words to this stemmer. Protected words won't be stemmed. For example, I have added 'training' as protected word so that it doesn't get stemmed to 'train'. Add words in newline in file src/protwords.txt (more instructions in protwords.txt file).