OpenNLP-品詞の検索

OpenNLPを使用すると、特定の文の品詞を検出して印刷することもできます。OpenNLPは、品詞のフルネームの代わりに、各品詞の短い形式を使用します。次の表は、OpenNLPによって検出された音声のさまざまな部分とその意味を示しています。

品詞 品詞の意味
NN 名詞、単数または質量
DT 限定詞
VB 動詞、基本形
VBD 動詞、過去形
VBZ 動詞、三人称単数現在形
前置詞または従属接続詞
NNP 固有名詞、単数
JJ 形容詞

品詞のタグ付け

OpenNLPは、文の品詞にタグを付けるために、モデルという名前のファイルを使用します。 en-posmaxent.bin。これは、指定された生のテキストの品詞にタグを付けるようにトレーニングされた事前定義されたモデルです。

ザ・ POSTaggerME のクラス opennlp.tools.postagパッケージは、このモデルをロードし、OpenNLPライブラリを使用して指定された生のテキストの品詞にタグを付けるために使用されます。そうするために、あなたはする必要があります-

  • をロードします en-pos-maxent.bin を使用したモデル POSModel クラス。

  • インスタンス化する POSTaggerME クラス。

  • 文をトークン化します。

  • を使用してタグを生成します tag() 方法。

  • を使用してトークンとタグを印刷します POSSample クラス。

以下は、を使用して、指定された生のテキストのスピーチの部分にタグを付けるプログラムを作成するために従うべき手順です。 POSTaggerME クラス。

ステップ1:モデルをロードする

POSタグ付けのモデルは、という名前のクラスで表されます。 POSModel、パッケージに属します opennlp.tools.postag

トークナイザーモデルをロードするには-

  • 作成する InputStream モデルのオブジェクト(FileInputStreamをインスタンス化し、モデルのパスを文字列形式でコンストラクターに渡します)。

  • インスタンス化する POSModel クラスと合格 InputStream 次のコードブロックに示すように、コンストラクターへのパラメーターとしてのモデルの(オブジェクト)-

//Loading Parts of speech-maxent model 
InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-pos-maxent.bin"); 
POSModel model = new POSModel(inputStream);

ステップ2:POSTaggerMEクラスをインスタンス化する

ザ・ POSTaggerME パッケージのクラス opennlp.tools.postag与えられた生のテキストの品詞を予測するために使用されます。最大エントロピーを使用して決定を下します。

以下に示すように、このクラスをインスタンス化し、前の手順で作成したモデルオブジェクトを渡します。

//Instantiating POSTaggerME class 
POSTaggerME tagger = new POSTaggerME(model);

ステップ3:文をトークン化する

ザ・ tokenize() の方法 whitespaceTokenizerクラスは、渡された生のテキストをトークン化するために使用されます。このメソッドは、パラメーターとしてString変数を受け入れ、String(トークン)の配列を返します。

インスタンス化する whitespaceTokenizer クラスと文の文字列形式をこのメソッドに渡すことにより、このメソッドを呼び出します。

//Tokenizing the sentence using WhitespaceTokenizer class  
WhitespaceTokenizer whitespaceTokenizer= WhitespaceTokenizer.INSTANCE; 
String[] tokens = whitespaceTokenizer.tokenize(sentence);

ステップ4:タグを生成する

ザ・ tag() の方法 whitespaceTokenizerクラスは、トークンの文にPOSタグを割り当てます。このメソッドは、トークンの配列(String)をパラメーターとして受け取り、タグ(array)を返します。

を呼び出す tag() 前のステップで生成されたトークンをそれに渡すことによるメソッド。

//Generating tags 
String[] tags = tagger.tag(tokens);

ステップ5:トークンとタグを印刷する

ザ・ POSSampleclassはPOSタグ付きの文を表します。このクラスをインスタンス化するには、(テキストの)トークンの配列とタグの配列が必要になります。

ザ・ toString()このクラスのメソッドは、タグ付けされた文を返します。前の手順で作成したトークンとタグ配列を渡してこのクラスをインスタンス化し、toString() 次のコードブロックに示すように、メソッド。

//Instantiating the POSSample class 
POSSample sample = new POSSample(tokens, tags); 
System.out.println(sample.toString());

Example

以下は、特定の生のテキストの品詞にタグを付けるプログラムです。このプログラムを名前のファイルに保存しますPosTaggerExample.java.

import java.io.FileInputStream; 
import java.io.InputStream;  

import opennlp.tools.postag.POSModel; 
import opennlp.tools.postag.POSSample; 
import opennlp.tools.postag.POSTaggerME; 
import opennlp.tools.tokenize.WhitespaceTokenizer;  

public class PosTaggerExample { 
  
   public static void main(String args[]) throws Exception{ 
    
      //Loading Parts of speech-maxent model       
      InputStream inputStream = new 
         FileInputStream("C:/OpenNLP_models/en-pos-maxent.bin"); 
      POSModel model = new POSModel(inputStream); 
       
      //Instantiating POSTaggerME class 
      POSTaggerME tagger = new POSTaggerME(model); 
       
      String sentence = "Hi welcome to Tutorialspoint"; 
       
      //Tokenizing the sentence using WhitespaceTokenizer class  
      WhitespaceTokenizer whitespaceTokenizer= WhitespaceTokenizer.INSTANCE; 
      String[] tokens = whitespaceTokenizer.tokenize(sentence); 
       
      //Generating tags 
      String[] tags = tagger.tag(tokens);
      
      //Instantiating the POSSample class 
      POSSample sample = new POSSample(tokens, tags); 
      System.out.println(sample.toString()); 
   
   } 
}

次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-

javac PosTaggerExample.java 
java PosTaggerExample

上記のプログラムは、実行時に、指定されたテキストを読み取り、これらの文の品詞を検出して、以下に示すように表示します。

Hi_NNP welcome_JJ to_TO Tutorialspoint_VB

POSタガーパフォーマンス

以下は、特定の生のテキストの品詞にタグを付けるプログラムです。また、パフォーマンスを監視し、タガーのパフォーマンスを表示します。このプログラムを名前のファイルに保存しますPosTagger_Performance.java

import java.io.FileInputStream; 
import java.io.InputStream;  

import opennlp.tools.cmdline.PerformanceMonitor; 
import opennlp.tools.postag.POSModel; 
import opennlp.tools.postag.POSSample; 
import opennlp.tools.postag.POSTaggerME; 
import opennlp.tools.tokenize.WhitespaceTokenizer;  

public class PosTagger_Performance { 
   public static void main(String args[]) throws Exception{ 
      //Loading Parts of speech-maxent model       
      InputStream inputStream = new 
         FileInputStream("C:/OpenNLP_models/en-pos-maxent.bin"); 
      POSModel model = new POSModel(inputStream); 
       
      //Creating an object of WhitespaceTokenizer class  
      WhitespaceTokenizer whitespaceTokenizer= WhitespaceTokenizer.INSTANCE; 
      
      //Tokenizing the sentence 
      String sentence = "Hi welcome to Tutorialspoint"; 
      String[] tokens = whitespaceTokenizer.tokenize(sentence); 
       
      //Instantiating POSTaggerME class 
      POSTaggerME tagger = new POSTaggerME(model); 
       
      //Generating tags 
      String[] tags = tagger.tag(tokens); 
       
      //Instantiating POSSample class       
      POSSample sample = new POSSample(tokens, tags); 
      System.out.println(sample.toString()); 
       
      //Monitoring the performance of POS tagger 
      PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "sent"); 
      perfMon.start(); 
      perfMon.incrementCounter(); 
      perfMon.stopAndPrintFinalResult();      
   } 
}

次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-

javac PosTaggerExample.java 
java PosTaggerExample

実行時に、上記のプログラムは指定されたテキストを読み取り、これらの文の品詞にタグを付けて表示します。さらに、POSタガーのパフォーマンスを監視して表示します。

Hi_NNP welcome_JJ to_TO Tutorialspoint_VB  
Average: 0.0 sent/s  
Total: 1 sent 
Runtime: 0.0s

POSタガー確率

ザ・ probs() の方法 POSTaggerME クラスは、最近タグ付けされた文の各タグの確率を見つけるために使用されます。

//Getting the probabilities of the recent calls to tokenizePos() method 
double[] probs = detector.getSentenceProbabilities();

以下は、最後にタグ付けされた文の各タグの確率を表示するプログラムです。このプログラムを名前のファイルに保存しますPosTaggerProbs.java

import java.io.FileInputStream; 
import java.io.InputStream;  

import opennlp.tools.postag.POSModel; 
import opennlp.tools.postag.POSSample; 
import opennlp.tools.postag.POSTaggerME; 
import opennlp.tools.tokenize.WhitespaceTokenizer;  

public class PosTaggerProbs { 
   
   public static void main(String args[]) throws Exception{ 
      
      //Loading Parts of speech-maxent model       
      InputStream inputStream = new FileInputStream("C:/OpenNLP_mdl/en-pos-maxent.bin"); 
      POSModel model = new POSModel(inputStream); 
       
      //Creating an object of WhitespaceTokenizer class  
      WhitespaceTokenizer whitespaceTokenizer= WhitespaceTokenizer.INSTANCE; 
       
      //Tokenizing the sentence 
      String sentence = "Hi welcome to Tutorialspoint"; 
      String[] tokens = whitespaceTokenizer.tokenize(sentence); 
       
      //Instantiating POSTaggerME class 
      POSTaggerME tagger = new POSTaggerME(model); 
             
      //Generating tags 
      String[] tags = tagger.tag(tokens);       
      
      //Instantiating the POSSample class 
      POSSample sample = new POSSample(tokens, tags);  
      System.out.println(sample.toString());
      
      //Probabilities for each tag of the last tagged sentence. 
      double [] probs = tagger.probs();       
      System.out.println("  ");       
      
      //Printing the probabilities  
      for(int i = 0; i<probs.length; i++) 
         System.out.println(probs[i]); 
   } 
}

次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-

javac TokenizerMEProbs.java 
java TokenizerMEProbs

上記のプログラムは、実行時に、指定された生のテキストを読み取り、その中の各トークンの品詞にタグを付けて表示します。さらに、以下に示すように、特定の文の各品詞の確率も表示されます。

Hi_NNP welcome_JJ to_TO Tutorialspoint_VB    
0.6416834779738033 
0.42983612874819177 
0.8584513635863117 
0.4394784478206072