78

私はJavaでドキュメント分類タスクに取り組んでいます。

両方のアルゴリズムが強く推奨されました。それぞれの利点と欠点は何ですか?自然言語処理タスクの文献ではどちらがより一般的に使用されていますか?

4

1 に答える 1

140

基本的に、porter ステミング アルゴリズムと lancaster ステミング アルゴリズムの主な違いは、lancaster ステマーは porter ステマーよりもかなり攻撃的であるということです。現在使用されている主要なステミング アルゴリズムは、Porter、Snowball (Porter2)、および Lancaster (Paice-Husk) の 3 つです。Porter は最も攻撃的でないアルゴリズムであり、各アルゴリズムの詳細は実際にはかなり長く技術的です。ただし、ここに内訳があります。

Porter: 間違いなく最も一般的に使用されているステマーであり、最も穏やかなステマーの 1 つでもあります。Java を実際にサポートしている数少ないステマーの 1 つであり、これはプラスですが、アルゴリズムの中で最も計算集約的でもあります (非常に大きな差で認められているわけではありません)。これは、大幅に差をつけて最も古いステミング アルゴリズムでもあります。

Porter2: ほとんどの場合、porter よりも優れているとみなされており、それには正当な理由があります。実際、ポーター自身は、それが彼の元のアルゴリズムよりも優れていることを認めています。ポーターよりも計算時間がわずかに速く、かなり大きなコミュニティがあります。

Lancaster: 非常にアグレッシブなステミング アルゴリズム。porter と snowball では、語幹表現は通常、読者にとってかなり直感的ですが、Lancaster ではそうではありません。多くの短い単語が完全に難読化されるからです。ここで最速のアルゴリズムであり、作業中の単語セットを大幅に削減しますが、より多くの区別が必要な場合は、必要なツールではありません.

正直なところ、通常は Snowball が適していると思います。Lancaster が作業セットを大幅に削減する特定の状況がありますが、これは非常に便利ですが、私の意見では、スノーボールに対する限界速度の増加は、精度の欠如に見合うものではありません. ただし、Porter には最も多くの実装があり、通常はデフォルトの go-to アルゴリズムですが、可能であれば Snowball を使用してください。

スノーボール - 追加情報

Snowballは、情報検索で使用するステミング アルゴリズムを作成するために設計された小さな文字列処理言語です。

Snowball コンパイラは、Snowball スクリプトを別の言語に変換します。現在、ISO C、C#、Go、Java、Javascript、Object Pascal、Python、および Rust がサポートされています。

名前の歴史

「STRIPPER GRAMmar」という接尾辞を効果的に提供するので、「strippergram」と呼ぶアイデアをもてあそびましたが、良識が広まり、SNOBOL へのオマージュとして「Snowball」と名付けられました。 1960 年代のファーバー、グリスウォルド、ポアージ、ポロンスキーの各氏。
---マーティン・ポーター

Snowball 言語で実装された Stemmer は、単に Snowball Stemmer と呼ばれることがあります。たとえば、自然言語ツールキット: nltk.stem.snowballを参照してください。

于 2012-06-26T15:07:55.200 に答える