Snowball は、情報検索で使用するステミング アルゴリズムを作成するための小さな文字列処理言語と、それを使用して実装されたステミング アルゴリズムのコレクションです。
Snowball はもともと Martin Porter によって設計および構築されました。 Martin は 2014 年に開発から引退し、Snowball は現在コミュニティ プロジェクトとして維持されています。 Martin はもともと、1960 年代の優れた文字列処理言語である SNOBOL に敬意を表して Snowball という名前を選びました。現在では、時間の経過とともに貢献を集めることでプロジェクトがどのように成長するかを示す比喩としても機能しています。
Snowball コンパイラは、Snowball プログラムを別の言語のソース コードに変換します。現在、Ada、ISO C、C#、Go、Java、JavaScript、Object Pascal、Python、Rust がサポートされています。
このリポジトリには、snowball コンパイラとステミング アルゴリズムのソース コードが含まれています。 Snowball コンパイラは ISO C で書かれています。これを構築するには C99 をサポートする C コンパイラが必要です (ただし、生成される C コードはどの ISO C コンパイラでも動作するはずです)。
Snowball の詳細については、https://snowballstem.org/ を参照してください。
ステミングは、同じ単語のさまざまな形式を共通の「語幹」にマッピングします。たとえば、英語のステマーはconnection 、 connections 、 connective 、 connected 、およびconnectionをconnectにマッピングします。そのため、 connectedを検索すると、他の形式のみを持つドキュメントも検索されます。
この語幹形式は単語自体であることがよくありますが、これは意図された使用分野であるテキスト検索システムの要件ではないため、常に当てはまるわけではありません。また、共通の言語根を持つすべての単語を混同するのではなく、同じ意味の単語を混同することも目指しています (そのため、 aweとawful は同じ語幹を持ちません)。語幹が過剰であることは語幹が不足している場合よりも問題が多いため、語幹を強化しない傾向があります。解決が困難な場合に発生します。常に単語を原形に還元したり、それ自体が単語である原形を取得したりする場合、Snowball のステミング アルゴリズムはおそらく正しい答えではありません。