Opennlp-named-entity-recognition
OpenNLP-名前付きエンティティの認識
特定のテキストから名前、人、場所、およびその他のエンティティを見つけるプロセスは、* N amed E ntity R * ecognition(NER)と呼ばれます。 この章では、OpenNLPライブラリを使用してJavaプログラムでNERを実行する方法について説明します。
オープンNLPを使用した名前付きエンティティ認識
さまざまなNERタスクを実行するために、OpenNLPは異なる事前定義モデル、つまりen-nerdate.bn、en-ner-location.bin、en-ner-organization.bin、en-ner-person.bin、およびen-ner-timeを使用します。ビン。 これらのファイルはすべて、所定の生テキスト内の各エンティティを検出するようにトレーニングされた事前定義モデルです。
- TokenNameFinderModel クラスを使用して、それぞれのモデルをロードします。
- NameFinder クラスをインスタンス化します。
- 名前を見つけて印刷します。
以下は、特定の生テキストから名前エンティティを検出するプログラムを作成するために従うべき手順です。
ステップ1:モデルの読み込み
文検出のモデルは、パッケージ opennlp.tools.namefind に属する TokenNameFinderModel という名前のクラスで表されます。
NERモデルを読み込むには-
- モデルの InputStream オブジェクトを作成します(FileInputStreamをインスタンス化し、適切なNERモデルのパスをString形式でコンストラクターに渡します)。
- 次のコードブロックに示すように、 TokenNameFinderModel クラスをインスタンス化し、モデルの InputStream (オブジェクト)をコンストラクターにパラメーターとして渡します。
ステップ2:NameFinderMEクラスのインスタンス化
パッケージ opennlp.tools.namefind の NameFinderME クラスには、NERタスクを実行するためのメソッドが含まれています。 このクラスは、最大エントロピーモデルを使用して、指定された生テキスト内の名前付きエンティティを検索します。
このクラスをインスタンス化し、以下に示すように前のステップで作成されたモデルオブジェクトを渡します-
ステップ3:文中の名前を見つける
文の文字列形式をこのメソッドに渡すことにより、このメソッドを呼び出します。
ステップ4:文中の名前のスパンを印刷する
次のコードブロックに示すように、* find()*メソッドによって返されたスパンをSpan配列に格納して印刷できます。
- NERの例*
以下は、与えられた文を読み、その中の人の名前の範囲を認識するプログラムです。 このプログラムを NameFinderME_Example.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
上記のプログラムは、実行時に、指定された文字列(生テキスト)を読み取り、その中の人物の名前を検出し、以下に示すようにその位置(スパン)を表示します。
名前とその位置
Stringクラスの* substring()メソッドは、 *begin および end offsets を受け入れ、それぞれの文字列を返します。 次のコードブロックに示すように、このメソッドを使用して、名前とそのスパン(位置)を一緒に印刷できます。
以下は、指定された生のテキストから名前を検出し、それらをその位置とともに表示するプログラムです。 このプログラムを NameFinderSentences.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
実行時に、上記のプログラムは指定された文字列(生テキスト)を読み取り、その中の人物の名前を検出し、以下に示すようにその位置(スパン)を表示します。
場所の名前を見つける
さまざまなモデルをロードすることにより、さまざまな名前のエンティティを検出できます。 以下は、 en-ner-location.bin モデルをロードし、指定された文の場所名を検出するJavaプログラムです。 このプログラムを LocationFinder.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
上記のプログラムは、実行時に、指定された文字列(生テキスト)を読み取り、その中の人物の名前を検出し、以下に示すようにその位置(スパン)を表示します。
NameFinderの確率
以下は、確率を出力するプログラムです。 このプログラムを TokenizerMEProbs.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
実行時に、上記のプログラムは指定された文字列を読み取り、文をトークン化し、それらを出力します。 さらに、以下に示すように、最後にデコードされたシーケンスの確率も返します。