何百もの単語の長い文字列を取り、IR システムで使用するためにストップ ワードと語幹を削除してトークン化するクラスまたはメソッドを探しています。
例えば:
「でっかい太った猫が、カンガルーに『君の一番おかしなやつ』って言った…」
トークナイザーは句読点を削除し、単語の を返しArrayList
ます
ストップワードリムーバーは、「the」、「to」などの単語を削除します
ステマーは各単語を「ルート」に減らします。たとえば、「おかしな」はおかしくなります
よろしくお願いします。
何百もの単語の長い文字列を取り、IR システムで使用するためにストップ ワードと語幹を削除してトークン化するクラスまたはメソッドを探しています。
例えば:
「でっかい太った猫が、カンガルーに『君の一番おかしなやつ』って言った…」
トークナイザーは句読点を削除し、単語の を返しArrayList
ます
ストップワードリムーバーは、「the」、「to」などの単語を削除します
ステマーは各単語を「ルート」に減らします。たとえば、「おかしな」はおかしくなります
よろしくお願いします。
AFAIK Luceneはあなたが望むことをすることができます。とStandardAnalyzer
、StopAnalyzer
ストップワードの削除ができます。( SnowballLucene contrib-snowball
からの作業を含む) プロジェクトと組み合わせて、ステミングも行うことができます。
ただし、ステミングについては、次の回答も考慮してください。実際の単語を生成するステミングアルゴリズム
これらは自然言語処理の標準要件であるため、そのようなツールキットを調べます。Java が必要なので、OpenNLP から始めます: http://opennlp.sourceforge.net/
他の言語を見ることができる場合は、NLTK (Python) もあります。
「your funniest guy i know」は標準構文ではないことに注意してください。これにより、「You're the funniest guy I know」よりも処理が難しくなります。不可能ではありませんが、はるかに困難です。「あなたの」を「あなたは」と同一視するシステムを私は知りません。
私が取り組んできた多くのタスクの問題に対処したので、トークナイザーの提案をさせてください。答えとして直接与えられているとは思わないのでedu.northwestern.at.utils.corpuslinguistics.tokenizer.*
、トークナイザーのファミリーとしてよく使用します。PennTreebankTokenizer
クラスを使用したケースがたくさんあります。使用方法は次のとおりです。
WordTokenizer wordTokenizer = new PennTreebankTokenizer();
List<String> words = wordTokenizer.extractWords(text);
この作品へのリンクはこちら。免責事項として、私は Northwestern、グループ、または彼らの仕事とは何の関係もありません。私は時々コードを使用するだけの人です。
これがNLPツールの包括的なリストです。これらは軽量になり、内部の動作をより細かく制御できるため、これらを自分で作成することが理にかなっている場合があります。トークン化には単純な正規表現を使用します。ストップワードの場合は、以下のリストまたはその他のリストをHashSetにプッシュするだけです。
これは、ポーターステマーの多くのJava実装の1つです)。