20

何百もの単語の長い文字列を取り、IR システムで使用するためにストップ ワードと語幹を削除してトークン化するクラスまたはメソッドを探しています。

例えば:

「でっかい太った猫が、カンガルーに『君の一番おかしなやつ』って言った…」

トークナイザーは句読点を削除し、単語の を返しArrayListます

ストップワードリムーバーは、「the」、「to」などの単語を削除します

ステマーは各単語を「ルート」に減らします。たとえば、「おかしな」はおかしくなります

よろしくお願いします。

4

4 に答える 4

8

AFAIK Luceneはあなたが望むことをすることができます。とStandardAnalyzerStopAnalyzerストップワードの削除ができます。( SnowballLucene contrib-snowballからの作業を含む) プロジェクトと組み合わせて、ステミングも行うことができます。

ただし、ステミングについては、次の回答も考慮してください。実際の単語を生成するステミングアルゴリズム

于 2009-11-03T00:15:38.883 に答える
6

これらは自然言語処理の標準要件であるため、そのようなツールキットを調べます。Java が必要なので、OpenNLP から始めます: http://opennlp.sourceforge.net/

他の言語を見ることができる場合は、NLTK (Python) もあります。

「your funniest guy i know」は標準構文ではないことに注意してください。これにより、「You're the funniest guy I know」よりも処理が難しくなります。不可能ではありませんが、はるかに困難です。「あなたの」を「あなたは」と同一視するシステムを私は知りません。

于 2009-11-03T00:10:01.523 に答える
1

私が取り組んできた多くのタスクの問題に対処したので、トークナイザーの提案をさせてください。答えとして直接与えられているとは思わないのでedu.northwestern.at.utils.corpuslinguistics.tokenizer.*、トークナイザーのファミリーとしてよく使用します。PennTreebankTokenizerクラスを使用したケースがたくさんあります。使用方法は次のとおりです。

    WordTokenizer wordTokenizer = new PennTreebankTokenizer();
    List<String> words = wordTokenizer.extractWords(text);

この作品へのリンクはこちら。免責事項として、私は Northwestern、グループ、または彼らの仕事とは何の関係もありません。私は時々コードを使用するだけの人です。

于 2012-06-16T22:06:48.333 に答える
0

これがNLPツールの包括的なリストです。これらは軽量になり、内部の動作をより細かく制御できるため、これらを自分で作成することが理にかなっている場合があります。トークン化には単純な正規表現を使用します。ストップワードの場合は、以下のリストまたはその他のリストをHashSetにプッシュするだけです。

common-english-words.txt

これは、ポーターステマーの多くのJava実装の1つです)。

于 2009-11-03T00:32:51.583 に答える