2011-07-23 10 views
23

Javaでテキスト解析を行うAPIがあるかどうかを知りたい。テキスト内のすべての単語、別々の単語、式などを抽出できるもの何かが数字、日付、年、名前、通貨などであるかどうかを知らせるものJavaでのテキスト分析/マイニング用のAPIはありますか?

テキスト解析を開始しています今すぐ、私はキックオフのためのAPIが必要です。私はウェブクローラーを作ったので、ダウンロードしたデータを分析するための何かが必要になりました。ページ内の単語数、類似した単語、データ型、テキストに関連する他のリソースを数える方法が必要です。

Javaでのテキスト解析用のAPIはありますか?

EDIT:テキストマイニング、テキストをマイニングしたい。これを提供するJavaのAPI。

+1

このスレッドにいくつかの素晴らしい答えがありました。http://stackoverflow.com/questions/3778388/java-text-analysis-libraries – crowne

+0

ダウンロードしたページから映画情報を抽出したいと思います。タイトル、俳優、年、ディレクターなどのようなもの –

+0

@Renato DinhaniConceiçãoダウンロードしたページはすべて共通のhtml構造ですか? (テンプレート化されたWebページ?) – stemm

答えて

10

たとえば、標準ライブラリjava.textのクラスを使用するか、StreamTokenizerを使用します(必要に応じてカスタマイズすることができます)。インターネット源からテキストデータは、通常、多くのorthographicalミスを持っていとパフォーマンス向上のためにあなたがファジートークナイザのようなものを使用する必要が - - あなたが知っているようしかし、するjava.textおよびその他のスタンダールutilsのは、このような文脈であまりにも限られた能力を持っています。

だから、私は正規表現(のjava.util.regex)を使用し、必要に応じてトークナイザの独自の種類を作成することをアドバイスしたいです。

P.S. 必要に応じて、生のテキストでテンプレート部分を認識するためのステートマシンパーサーを作成することができます。下の図では、単純なステートマシン認識機能を見ることができます(より複雑なテンプレートをテキストで認識できる、より高度なパーサーを構築できます)。

enter image description here

8

あなたは、大量のデータを扱っている場合は、おそらくApacheのLuceneはあなたが必要なものとするのに役立ちます。

それ以外の場合は、標準パターンクラスに大きく依存する独自のAnalyzerクラスを作成するのが最も簡単な場合があります。こうすることで、単語、境界、数字、日付などと見なされるテキストを制御できます。たとえば、20110723は日付か数字ですか。データをよりよく理解するために、複数パス解析アルゴリズムを実装する必要があります。

26

あなたがNamed Entity Recogniserを探しているようです。

あなたにはいくつかの選択肢があります。スタンフォード自然言語処理グループから

CRFClassifierは、固有表現認識器のJava実装です。

GATE (General Architecture for Text Engineering)は、言語処理用のオープンソーススイートです。開発者用ページのスクリーンショットをご覧ください:http://gate.ac.uk/family/developer.htmlこれが何をすることができるか、あなたに簡単な考えを与えるはずです。 video tutorialは、このソフトウェアが提供しなければならないことのより良い概要を提供します。

お客様のニーズに合わせてカスタマイズする必要がある場合があります。Webサービスを介した


、あなたは見つけることができるbrief explanation at their FAQ

...トレーニングデータは、タブ区切りの列である必要があり、あなたはそれらの意味を定義 地図を介して列。 1列は で「回答」と呼ばれ、NERクラスがあり、既存の機能には「ワード」や「タグ」などの名前については が知られています。データファイル、マップ、 、およびプロパティファイルを使用して生成する機能を定義します。最終的にあなた は、いくつかの質問に答えるために、ソースコードに行かなければならないけれども、異なる性質 がNERFeatureFactoryのJavadocの中で発生するどの機能の かなりのドキュメントは

またでコードスニペットを見つけることができます...、がありますjavadoc of CRFClassifier: テキストファイルで提供シリアライズされた分類器との訓練を受けたモデルを実行するための

典型的なコマンドラインの使用方法

java -mx500m edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier conll.ner.gz -textFile samplesentences.txt

プロパティファイル内のすべてのパラメータを指定して(電車、テスト、または ランタイム):

java -mx1g edu.stanford.nlp.ie.crf.CRFClassifier -prop propFile

を訓練し、コマンドラインからシンプルなNERモデルをテストするには:

java -mx1000m edu.stanford.nlp.ie.crf.CRFClassifier -trainFile trainFile -testFile testFile -macro > output

+0

CRFClassifierのコード例をトレーニングと分類に提供できますか? –

+0

私は自分自身でライブラリを扱っていませんが、ちょっと散らかったにもかかわらず、いくつかのドキュメントが見つかりました。上記の追加情報を参照してください... –

+0

私はCRFClassifierを使用しています。簡単に設定できます。 –

1

LingPipeもご覧になることをお勧めします。 WebサービスでOKなら、this articleにはさまざまなAPIの概要が表示されます

2

私は車輪を再開発するのではなく、Luceneの解析とステマーのクラスに適応したいと思います。彼らには大部分のケースがカバーされています。追加クラスとcontribクラスも参照してください。

関連する問題