Projects

This page lists projects which are related to Snowball in some way.


Wrappers

These projects allow Snowball-generated stemmers to be used from other languages.

Aside from PyStemmer, we've not tested them to see if they successfully wrap the Snowball-generated code, are well implemented, etc. These projects aren't endorsed or recommended as such, but we hope they may be of interest.

libstemmer in Go

(added Feb 2013) Miki Tebeka has ported libstemmer_c to the Go programming language.

PyStemmer

Richard Boulton put together some new Python bindings for snowball, inspired by Andreas Jung's initial implementation of PyStemmer from 2001, but with a different API. PyStemmer's current home is as part of the snowballstem github project.

Lingua::Stem::Snowball

Lingua::Stem::Snowball is an XS module which provides a Perl interface to the C versions of the Snowball stemmers. The Snowball stopwords lists are also wrapped by Lingua::StopWords.

PHP Stemmer

PHP bindings written by Andrea Maccis, and largely inspired by Richard Boulton's PyStemmer.

Node.js Stemmer

A Node.js interface to the Snowball stemming algorithms, written by Andrea Maccis and largely inspired by Richard Boulton's PyStemmer.


Reimplementations of the Stemming Algorithms

These projects reimplement the Snowball algorithms, either in hand-written code, or in code manually translated from the generated output for another language.

We've not tested them to see if they correctly implement the stemming algorithms, are well implemented, etc. These projects aren't endorsed or recommended as such, but we hope they may be of interest.

If you want to use one of these stemmers, we suggest you take the sample vocabulary for the corresponding natural language, and check that the stemmer produces the corresponding stemmed output.

Oleander Stemming Library

A reimplementation of the Snowball stemming algorithms in C++.

English (porter2) Stemmer in C++11

(added Oct 2012) Sean Massung of the University of Illinois has implemented the porter2 stemmer in C++11.

NLTK

(added June 2010) Python versions of nearly all the stemmers have been made available by Peter Stahl at NLTK’s code repository.

Javascript stemmers

Javascript versions of nearly all the stemmers, created by Oleg Mazko by hand from the C/Java output of the Snowball compiler.

js-lingua-stem-ru

This is a different implementation of the Russian stemmer in Javascript, created by Mark A. Prisyazhnyuk.

XSLT 3 Porter2 stemmer

(added July 2019). Martin Holmes has implemented Porter2 in XSLT 3. In the same repo, there is also a re-implementation of Porter2 in JavaScript.

Contributed Stemmers on the old Snowball Website

Martin and Richard collected and hosted contributed stemmers in a number of programming languages, which you can still find on the old website.


Consumers

These projects use Snowball stemmers:

Xapian

A probabilistic search engine which supports stemming using Snowball.

TextIndexNG

A fulltext indexing solution for Zope with support for stemming using Snowball.

urim

(added Sep 2010) Developed by Oleg Mazko, Urim is a standalone, offline tag-cloud builder engine, fully written in JavaScript and so capable of integration into all Internet browsers. Available as a Firefox add-on. With a JavaScript port of the Snowball stemmers (danish, dutch, english, finnish, french, german, hungarian, italian, norwegian, portuguese, russian, spanish, swedish, romanian, turkish) also available as a separate library ready for developers.

OpenFTS

OpenFTS is an advanced PostgreSQL-based search engine, which supports using Snowball for stemming.

Manticore Search

Manticore Search in an open source search server which supports stemming using Snowball.

Snowball support in other tools

These projects add Snowball support to other tools, or are tools including support for Snowball.

Pygments

Pygments is a syntax highlighter written in Python, and includes support for syntax highlighting Snowball code (since version 2.2).


Contact us if you have a project that you would like to be listed here.