2011-12-15 8 views
1

私は、txtファイルのすべての単語の出現を数える必要があるプロジェクトに取り組んでいます。 は例えば、私はこのようなテキストファイルを持っている:NLP for java、どのツールキットを使用しますか?

シルバーレイクは、IPO候補に探し何

業績によって押しつぶさ 3会社:アップル、シーラス・ロジック社、IBM IBMのパルミサーノ:あなたが100であることを取得する方法-Year Old Company

上記の3つの文がファイルにある場合、すべての単語の出現を計算したいと思います。ここでは、会社と会社は同じ単語「会社」(小文字)とみなす必要があるため、「会社」という単語の合計発生数は2です。

「NLPツールキット」は、 「家族」と「家族」は実際には同じ単語「家族」に由来していますか?

ナイーブベイズのトレーニングをさらに進めるために、すべての単語の出現を数えますので、各単語の正確な出現数を得ることは非常に重要です。

+0

有用な場合があります:http://weblogs.java.net/blog/tomwhite/archive/2006/07/pluralization.html –

+2

有用な用語:家族や家族が同じ*語彙素に属していることを伝えるツール*は、* stemmer *と呼ばれます。ワード数はユニグラム周波数とも呼ばれます。文書を単語数の特徴ベクトルとして扱うモデルをbag * of-words *と呼びます。 – cyborg

+0

@cyborgありがとうございました。 –

答えて

4

Apache LuceneおよびOpenNLPは、良好なステミングアルゴリズムの実装を提供します。最適なものを見直して使用することができます。私は自分のプロジェクトにLuceneを使っています。

+0

実際に私がやることは、lemmatizationと呼ばれるものです。私のプロジェクトではうまく機能します。残念ながら、私はJava実装のための有用なリソースを見つけることができませんでした。私が見つけた唯一のものはStanfordNLP Javaライブラリですが、機能的には機能していないようです。とにかく、あなたの返事をありがとう。 –

0
あなたはまたGATEを見てもよい

:あなたは袋の単語モデルを訓練するために言葉を使用する場合は、TF-IDF値を使用することができますhttp://gate.ac.uk/

絶対カウントの代わりに。

http://en.wikipedia.org/wiki/Tf%E2%80%93idf

+0

これは、データベース内の単語の重みを計算するデータベースのモデルを思い出させます。ありがとう。 –

0

あなたは(ルート単語を取得)語幹と呼ばれて行っています。

前述したように、Lingpipe、GateおよびLucene/Solrはステミングを行います。別のオプションはスタンフォードパーサーです。あるいは、Porter Stemming algoを自分で実装することもできます。

関連する問題