Java で Lucene を使用して、コーパスのインデックスを作成し、そこから単語リストを抽出しています。私は EnglishAnalyzer を使用してステム処理を行います。次に、単語リストを Python に渡し、NLTK でいくつかのことを行います。Lucene の EnglishAnalyzer で使用されるステマーと完全に互換性のある NLTK のステマーはありますか?
これを回避するために PyLucene を使用することもできますが、依存関係を最小限に抑えたいと考えています。
http://text-processing.com/demo/stem/でさまざまな NLTK ステマーを試し、結果を使用して Lucene の EnglishAnalyzer の動作と比較できます。Porter または Lancaster のいずれかの一般的なアルゴリズムの 1 つを実装している可能性があります。
したがって、私が間違っていなければ、lucene には他の人 (つまり、snowball、egotor、stempel) によって提供されたいくつかのステマーがあります。Snowball Stemmer と NLTK Porter Stemmer を比較すると、NLTK API でさえ Snowball Stemmer の方が信頼性が高いことが示唆されました。http://nltk.googlecode.com/svn/trunk/doc/api/nltk.stem.porter-module.htmlを参照してください。
英語のステミングをいくつか比較すると ( http://snowball.tartarus.org/demo.phpとhttp://text-processing.com/demo/stem/を使用)
スノーボール:
cat -> cat
computer -> comput
argues -> argu
NLTK ポーター:
cat computer argue ->
cat comput argu
したがって、デモから見ると、それらはほとんど同じように見えますが、確かに、NLTK api がそう示唆しているため、スノーボールに固執し、Java でコーディングを続けます。
P/S: やあ、マーク・シュラー (私はあなたの名前を「d」なしで発音するクレイジーなアジア人です)