Snowballは、情報検索で使用するステミングアルゴリズムを作成するために設計された、小さな文字列処理プログラミング言語です。[ 1 ]
Snowball という名前は、SNOBOLプログラミング言語への敬意を表して選ばれました。「SNOBOL と、プログラムの流れを制御するために使用されるシグナルを配信する文字列パターンの概念を共有しています。」[ 2 ] Snowball の作成者であるMartin Porter 博士は、「効果的に「STRIPPER GRAMmar」という接尾辞を提供する」ため、「strippergram」という名前を検討していました。[ 1 ]
SnowballコンパイラはSnowball スクリプト (.sbl ファイル) をスレッドセーフなANSI C、Java、Ada、C#、Go、JavaScript、Object Pascal、Python、または Rust のプログラムに変換します。[ 3 ] [ 4 ] ANSI C の場合、各 Snowball スクリプトはプログラム ファイルと対応するヘッダー ファイル (拡張子 .c と .h) を生成します。[ 3 ] Snowball コンパイラはスクリプトの一貫性をチェックし、このチェックはLovinsによる重要な学術論文の30 年間発見されなかったタイプミスを発見するために使用されました。 [ 5 ]
Snowball で扱われる基本的なデータ型は、文字列、符号付き整数、ブール値の真偽値、またはより簡単に言えば文字列、整数、ブール値です。Snowball の文字は、使用モードに応じて 8 ビット幅または 16 ビット幅になります。特に、ASCIIと16 ビット Unicode の両方がサポートされています。[ 2 ] SNOBOL プログラミング言語と同様に、Snowball の制御フローは、C や他の多くのプログラミング言語に見られる if、then、break などの構造を明示的に使用するのではなく、シグナルを暗黙的に使用することによって構成されます (各ステートメントは真または偽の値を返します) 。[ 2 ]
マーティン・ポーター博士と同僚のリチャード・ボルトン氏が管理していたオリジナルのSnowball ウェブサイトは、ポーター博士の退職に伴い 2014 年に閉鎖されましたが、 [ 1 ] [ 4 ] [ 6 ]サイト自体はまだアクセス可能で、この言語はGitHub 上のコミュニティ プロジェクトとして開発が続けられています。[ 1 ] [ 4 ]さらに、 Python 用のNatural Language Toolkit (NLTK)のような大規模プロジェクトでは、ポーター博士や Snowball 言語の他の貢献者によって設計されたステミング アルゴリズムとともに Snowball が使用されています。[ 7 ] [ 8 ]