Opennlp-tokenization
OpenNLP-トークン化
与えられた文を小さな部分(トークン)に切り刻むプロセスは、*トークン化*として知られています。 一般に、指定された生のテキストは、区切り文字(ほとんどが空白)のセットに基づいてトークン化されます。
トークン化は、スペルチェック、検索処理、品詞の識別、文の検出、ドキュメントのドキュメント分類などのタスクで使用されます。
OpenNLPを使用したトークン化
与えられた文をより単純なフラグメントにトークン化するために、OpenNLPライブラリは3つの異なるクラスを提供します-
- SimpleTokenizer -このクラスは、文字クラスを使用して、指定された生テキストをトークン化します。
- WhitespaceTokenizer -このクラスは、指定されたテキストをトークン化するために空白を使用します。
- TokenizerME -このクラスは、生のテキストを個別のトークンに変換します。 最大エントロピーを使用して決定を行います。
SimpleTokenizer
- それぞれのクラスのオブジェクトを作成します。
- * tokenize()*メソッドを使用して文をトークン化します。
- トークンを印刷します。
以下は、与えられた生のテキストをトークン化するプログラムを書くために従うべきステップです。
- ステップ1 *-それぞれのクラスをインスタンス化する
両方のクラスに、それらをインスタンス化するために利用できるコンストラクタはありません。 したがって、静的変数 INSTANCE を使用してこれらのクラスのオブジェクトを作成する必要があります。
- ステップ2 *-文をトークン化する
これらの両方のクラスには、* tokenize()*というメソッドが含まれています。 このメソッドは、文字列形式の生テキストを受け入れます。 呼び出し時に、指定された文字列をトークン化し、文字列(トークン)の配列を返します。
以下に示すように、* tokenizer()*メソッドを使用して文をトークン化します。
- ステップ3 *-トークンを印刷する
文をトークン化した後、以下に示すように、 for loop を使用してトークンを印刷できます。
例
以下は、SimpleTokenizerクラスを使用して特定の文をトークン化するプログラムです。 このプログラムを SimpleTokenizerExample.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
実行すると、上記のプログラムは、指定された文字列(生テキスト)を読み取り、それをトークン化し、次の出力を表示します-
WhitespaceTokenizer
- それぞれのクラスのオブジェクトを作成します。
- * tokenize()*メソッドを使用して文をトークン化します。
- トークンを印刷します。
以下は、与えられた生のテキストをトークン化するプログラムを書くために従うべきステップです。
- ステップ1 *-それぞれのクラスをインスタンス化する
両方のクラスに、それらをインスタンス化するために利用できるコンストラクタはありません。 したがって、静的変数 INSTANCE を使用してこれらのクラスのオブジェクトを作成する必要があります。
- ステップ2 *-文をトークン化する
これらの両方のクラスには、* tokenize()*というメソッドが含まれています。 このメソッドは、文字列形式の生テキストを受け入れます。 呼び出し時に、指定された文字列をトークン化し、文字列(トークン)の配列を返します。
以下に示すように、* tokenizer()*メソッドを使用して文をトークン化します。
- ステップ3 *-トークンを印刷する
文をトークン化した後、以下に示すように、 for loop を使用してトークンを印刷できます。
例
以下は、 WhitespaceTokenizer クラスを使用して特定の文をトークン化するプログラムです。 このプログラムを WhitespaceTokenizerExample.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
実行時に、上記のプログラムは指定された文字列(生テキスト)を読み取り、トークン化して、次の出力を表示します。
TokenizerMEクラス
OpenNLPは、定義済みのモデルであるde-token.binというファイルを使用して、文をトークン化します。 与えられた生のテキストの文をトークン化するように訓練されています。
- TokenizerModel クラスを使用して en-token.bin モデルをロードします。
- TokenizerME クラスをインスタンス化します。
- このクラスの* tokenize()*メソッドを使用して文をトークン化します。
以下は、 TokenizerME クラスを使用して、指定された生テキストから文をトークン化するプログラムを作成するために従うべき手順です。
- ステップ1 *-モデルの読み込み
トークン化のモデルは、 opennlp.tools.tokenize パッケージに属する TokenizerModel というクラスで表されます。
トークナイザーモデルをロードするには-
- モデルの InputStream オブジェクトを作成します(FileInputStreamをインスタンス化し、モデルのパスをString形式でコンストラクターに渡します)。
- 次のコードブロックに示すように、 TokenizerModel クラスをインスタンス化し、モデルの InputStream (オブジェクト)をコンストラクターにパラメーターとして渡します。
- ステップ2 *-TokenizerMEクラスのインスタンス化
パッケージ opennlp.tools.tokenize の TokenizerME クラスには、生のテキストを小さな部分(トークン)に切り分けるメソッドが含まれています。 最大エントロピーを使用して決定を行います。
以下に示すように、このクラスをインスタンス化し、前の手順で作成したモデルオブジェクトを渡します。
- ステップ3 *-文のトークン化
次のように、文の文字列形式をこのメソッドに渡すことにより、このメソッドを呼び出します。
例
以下は、指定された生テキストをトークン化するプログラムです。 このプログラムを TokenizerMEExample.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
実行すると、上記のプログラムは、指定された文字列を読み取り、その中の文を検出し、次の出力を表示します-
トークンの位置を取得する
- tokenizePos()メソッドを使用して、トークンの位置または*スパン*を取得することもできます。 これは、パッケージ *opennlp.tools.tokenize のTokenizerインターフェイスのメソッドです。 すべての(3つの)トークナイザークラスがこのインターフェイスを実装しているため、すべてのクラスでこのメソッドを見つけることができます。
このメソッドは、文字列の形式の文または生のテキストを受け入れ、 Span 型のオブジェクトの配列を返します。
次のように、* tokenizePos()*メソッドを使用して、トークンの位置を取得できます-
位置の印刷(スパン)
次のコードブロックに示すように、* tokenizePos()*メソッドによって返されたスパンをSpan配列に格納して印刷できます。
トークンとその位置を一緒に印刷する
Stringクラスの* substring()メソッドは、 *begin および end オフセットを受け入れ、それぞれの文字列を返します。 次のコードブロックに示すように、このメソッドを使用して、トークンとそのスパン(位置)を一緒に印刷できます。
例(SimpleTokenizer)
以下は、 SimpleTokenizer クラスを使用して生テキストのトークンスパンを取得するプログラムです。 また、トークンをその位置とともに出力します。 このプログラムを、 SimpleTokenizerSpans.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
実行すると、上記のプログラムは、指定された文字列(生テキスト)を読み取り、それをトークン化し、次の出力を表示します-
例(WhitespaceTokenizer)
以下は、 WhitespaceTokenizer クラスを使用して生テキストのトークンスパンを取得するプログラムです。 また、トークンをその位置とともに出力します。 このプログラムを WhitespaceTokenizerSpans.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムは指定された文字列(生テキスト)を読み取り、トークン化して、次の出力を表示します。
例(TokenizerME)
以下は、 TokenizerME クラスを使用して生テキストのトークンスパンを取得するプログラムです。 また、トークンをその位置とともに出力します。 このプログラムを TokenizerMESpans.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
実行すると、上記のプログラムは、指定された文字列(生テキスト)を読み取り、それをトークン化し、次の出力を表示します-
トークナイザーの確率
TokenizerMEクラスのgetTokenProbabilities()メソッドは、tokenizePos()メソッドの最新の呼び出しに関連付けられた確率を取得するために使用されます。
次は、tokenizePos()メソッドの呼び出しに関連付けられた確率を出力するプログラムです。 このプログラムを TokenizerMEProbs.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
実行時に、上記のプログラムは指定された文字列を読み取り、文をトークン化して出力します。 さらに、tokenizerPos()メソッドの最新の呼び出しに関連付けられた確率も返します。