25

Java でテキスト解析を行うための API があるかどうか知りたいです。テキスト内のすべての単語、個別の単語、表現などを抽出できるもの。見つかった単語が数字、日付、年、名前、通貨などであるかどうかを通知できるもの。

私は今、テキスト分析を開始しているので、キックオフするための API だけが必要です。Web クローラーを作成しましたが、ダウンロードしたデータを分析するための何かが必要です。ページ内の単語数、類似単語、データ型、およびテキストに関連する別のリソースをカウントするメソッドが必要です。

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

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

4

5 に答える 5

26

Named Entity Recogniserを探しているようです。

いくつかの選択肢があります。

Stanford Natural Language Processing Group のCRFClassifierは、Named Entity Recogniser の Java 実装です。

GATE (General Architecture for Text Engineering)は、言語処理用のオープン ソース スイートです。開発者向けページhttp://gate.ac.uk/family/developer.htmlのスクリーンショットをご覧ください。これで何ができるかが簡単にわかるはずです。ビデオ チュートリアルでは、このソフトウェアが提供する機能の概要をよりよく理解できます。

必要に応じて、いずれかをカスタマイズする必要がある場合があります。

他にも次のオプションがあります。


CRFClassifier のトレーニングに関しては、FAQ で簡単な説明を見つけることができます。

...トレーニング データはタブで区切られた列にある必要があり、それらの列の意味をマップで定義します。1 つの列は "answer" と呼ばれ、NER クラスを持ち、既存の機能は "word" や "tag" などの名前を認識します。プロパティ ファイルを使用して、データ ファイル、マップ、および生成するフィーチャを定義します。NERFeatureFactory の Javadoc には、さまざまなプロパティが生成する機能に関するかなりのドキュメントがありますが、最終的には、いくつかの質問に答えるためにソース コードにアクセスする必要があります...

CRFClassifierの javadoc にもコード スニペットがあります。

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

テキスト ファイルで提供されたシリアル化された分類子を使用してトレーニング済みモデルを実行する場合:

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

于 2011-07-25T22:07:46.710 に答える
10

たとえば、標準ライブラリjava.textのいくつかのクラスを使用したり、使用したりできますStreamTokenizer(要件に応じてカスタマイズできます)。しかし、ご存じのように、インターネット ソースからのテキスト データには通常、多くの誤字脱字があり、パフォーマンスを向上させるには、ファジートークナイザーのようなものを使用する必要があります。Java.textやその他の標準的なユーティリティは、そのようなコンテキストでは機能が制限されすぎています

したがって、正規表現(java.util.regex) を使用し、必要に応じて独自の種類のトークナイザーを作成することをお勧めします。

PS 必要に応じて、未加工のテキストでテンプレート化された部分を認識するためのステートマシン パーサーを作成できます。下の図には、単純なステートマシン認識機能が表示されている場合があります (テキスト内のはるかに複雑なテンプレートを認識できる、より高度なパーサーを構築できます)。

ここに画像の説明を入力

于 2011-07-23T13:26:58.343 に答える
8

大量のデータを処理している場合は、ApacheのLuceneが必要なものを支援する可能性があります。

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

于 2011-07-23T16:11:11.003 に答える
2

一から作り直すよりも、Lucene の Analysis クラスと Stemmer クラスを適応させたいと思います。彼らは大多数のケースをカバーしています。additional クラスと contrib クラスも参照してください。

于 2011-07-31T13:53:12.550 に答える
2

LingPipeもご覧になることをお勧めします。Web サービスに問題がない場合は、この記事にさまざまな API の概要があります。

于 2011-07-27T18:19:47.737 に答える