Snowball est un langage de traitement de petites chaînes permettant de créer des algorithmes de recherche de radicaux destinés à être utilisés dans la recherche d'informations, ainsi qu'une collection d'algorithmes de recherche de radicaux implémentés à l'aide de celui-ci.
Snowball a été conçu et construit à l'origine par Martin Porter. Martin a pris sa retraite du développement en 2014 et Snowball est désormais maintenu en tant que projet communautaire. Martin a initialement choisi le nom Snowball en hommage à SNOBOL, l'excellent langage de gestion des chaînes des années 1960. Il sert désormais également de métaphore sur la façon dont le projet se développe en rassemblant des contributions au fil du temps.
Le compilateur Snowball traduit un programme Snowball en code source dans un autre langage - actuellement Ada, ISO C, C#, Go, Java, Javascript, Object Pascal, Python et Rust sont pris en charge.
Ce référentiel contient le code source du compilateur boule de neige et les algorithmes de stemming. Le compilateur boule de neige est écrit en ISO C - vous aurez besoin d'un compilateur C prenant en charge C99 pour le construire (mais le code C qu'il génère devrait fonctionner avec n'importe quel compilateur ISO C).
Voir https://snowballstem.org/ pour plus d'informations sur Snowball.
Le stemmer mappe différentes formes du même mot sur un « radical » commun - par exemple, le stemmer anglais mappe connection , connections , connective , Connected et Connection to Connect . Ainsi, une recherche de connecté trouverait également des documents qui n'ont que les autres formes.
Cette forme radicale est souvent un mot lui-même, mais ce n'est pas toujours le cas car ce n'est pas une exigence pour les systèmes de recherche de texte, qui constituent le domaine d'utilisation prévu. Nous visons également à confondre les mots ayant le même sens, plutôt que tous les mots ayant une racine linguistique commune (donc impressionnant et affreux n'ont pas la même racine), et la sur-radicalisation est plus problématique que la sous-radicalisation, nous avons donc tendance à ne pas le faire. intervenir dans des cas difficiles à résoudre. Si vous souhaitez toujours réduire les mots à une forme racine et/ou obtenir une forme racine qui est elle-même un mot, les algorithmes de recherche de racines de Snowball ne sont probablement pas la bonne réponse.