Snowball — это небольшой язык обработки строк для создания алгоритмов стеммирования для использования в информационном поиске, а также набор алгоритмов стемминга, реализованных с его помощью.
Snowball был первоначально спроектирован и построен Мартином Портером. Мартин ушел из разработки в 2014 году, и теперь Snowball поддерживается как общественный проект. Первоначально Мартин выбрал название Snowball как дань уважения SNOBOL, превосходному языку обработки строк 1960-х годов. Теперь это также служит метафорой того, как проект растет за счет сбора пожертвований с течением времени.
Компилятор Snowball транслирует программу Snowball в исходный код на другом языке — в настоящее время поддерживаются Ada, ISO C, C#, Go, Java, Javascript, Object Pascal, Python и Rust.
Этот репозиторий содержит исходный код компилятора Snowball и алгоритмов стемминга. Компилятор Snowball написан на ISO C — для его сборки вам понадобится компилятор C, поддерживающий C99 (но генерируемый им код C должен работать с любым компилятором ISO C).
См. https://snowballstem.org/ для получения дополнительной информации о Snowball.
Стемминг сопоставляет разные формы одного и того же слова с общей «основой» — например, английский стеммер отображает соединение , соединения , соединительное , связанное и соединение для соединения . Таким образом, поиск связанных также приведет к поиску документов, которые имеют только другие формы.
Эта основа часто является самим словом, но это не всегда так, поскольку это не является требованием для систем текстового поиска, которые являются предполагаемой областью использования. Мы также стремимся объединить слова с одинаковым значением, а не все слова с общим языковым корнем (чтобы трепет и ужас не имели одной и той же основы), а чрезмерное определение корней более проблематично, чем недостаточное, поэтому мы склонны не в случаях, которые трудно разрешить. Если вы хотите всегда сводить слова к корневой форме и/или получать корневую форму, которая сама по себе является словом, то алгоритмы стеммирования Snowball, вероятно, не являются правильным решением.