Porter StemmingアルゴリズムとLancaster Stemmingアルゴリズムの大きな違いと利点は何ですか?[クローズド]
質問
私はjavaで文書分類のタスクに取り組んでいます。
両方のアルゴリズムが高く評価されましたが、それぞれの利点と欠点は何ですか?また、自然言語処理タスクの文献ではどちらがより一般的に使用されているのでしょうか?
どのように解決するのですか?
基本的なことですが、Porter と Lancaster のステミングアルゴリズムの主な違いは、Lancaster ステマーが Porter ステマーよりかなり積極的であるということです。現在使用されている 3 つの主要なステミングアルゴリズムは、Porter、Snowball (Porter2)、Lancaster (Paice-Husk) で、攻撃性の連続性は基本的にこれらに沿っています。ポーターは最も攻撃的でないアルゴリズムで、各アルゴリズムの詳細はかなり長くて専門的です。ここでは、その内訳を説明します。
Porter: 間違いなく最も一般的に使用されるステマーで、最も穏やかなステマーの 1 つです。数少ないステマーの 1 つで、Java をサポートしていることも利点ですが、アルゴリズムの中で最も計算量が多くなります (大きな差はありませんが)。また、大差で最も古いステミングアルゴリズムです。
Porter2。Porter の改良版としてほぼ一般的に評価されていますが、それには理由があります。Porter自身、彼の元のアルゴリズムより優れていると認めています。ポーターよりわずかに速い計算時間で、かなり大きなコミュニティがあります。
Lancaster。非常に積極的なステミングアルゴリズムで、時には欠点もあります。porter と snowball では、ステム処理された表現は通常、読者にとってかなり直感的ですが、Lancaster ではそうではなく、多くの短い単語は完全に難読化されます。最速のアルゴリズムで、単語の作業セットを大幅に削減できますが、より区別したい場合は、このツールを使用する必要はありません。
正直なところ、Snowballは通常行くべき道であると感じています。Lancaster が作業セットを大幅に削減する特定の状況があり、それは非常に便利ですが、私の意見では、Snowball よりもわずかな速度向上は、正確さの欠如に見合うものではありません。Porterは最も多くの実装があるので、通常はデフォルトで使用されるアルゴリズムですが、可能であれば、snowballを使用してください。
雪だるま - 追加情報
雪だるま は小さな文字列処理言語であり、情報検索のためのステミングアルゴリズムを作成するために設計されています。 ステミングアルゴリズムを作成するために設計された小さな文字列処理言語です。
Snowball コンパイラは、Snowball スクリプトを他の言語 - 現在では ISO C#, Go, Java, Object Pascal - に翻訳します。 現在、ISO C、C#、Go、Java、Javascript、Object Pascal、Python、Rust がサポートされています。 Python および Rust がサポートされています。
名前の歴史
<ブロッククオート
suffix STRIPPER GRAMmar "を提供することから、"strippergram "と呼ぶことも考えていました。
しかし、良識が勝ったので、「Snowball」と名付けました。
SNOBOLへのオマージュとして'Snowball'と名付けました。
ファーバー、グリスウォルド、ポアジ、ポロンスキーの各氏が1960年代に開発した優れた文字列処理言語であるSNOBOLに敬意を表して、「スノーボール」と名付けた。
の4人が1960年代に開発した優れた文字列処理言語であるSNOBOLに敬意を表して、「Snowball」と命名しました。
---マーティン・ポーター
Snowball 言語で実装されたステマーは、単に Snowball ステマーと呼ばれることもあります。たとえば、Natural Language Toolkit を参照してください。 nltk.stem.snowball .
関連
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み] Javaでリストを反復処理する方法
-
[解決済み] Javaは複数行の文字列をサポートしていますか?
-
[解決済み] Javaにおける例外処理によるパフォーマンスへの影響とは?
-
[解決済み】NoClassDefFoundErrorとClassNotFoundExceptionの原因や違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mvn' は、内部または外部のコマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
-
実行中にEclipseがポップアップする A Java Exception has occurred
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
アノテーション「@Retention」の役割
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
ApiModel と @ApiModelProperty の使用法