ओपनएनएलपी - भाषण के भाग ढूँढना

ओपनएनएलपी का उपयोग करके, आप किसी दिए गए वाक्य के भाषण के हिस्सों का भी पता लगा सकते हैं और उन्हें प्रिंट कर सकते हैं। भाषण के हिस्सों के पूर्ण नाम के बजाय, OpenNLP भाषण के प्रत्येक भागों के संक्षिप्त रूपों का उपयोग करता है। निम्न तालिका OpenNLP और उनके अर्थ द्वारा पता लगाए गए भाषणों के विभिन्न भागों को इंगित करता है।

शब्दभेद भाषण के कुछ हिस्सों का मतलब
एनएन संज्ञा, एकवचन या द्रव्यमान
डीटी निर्धारक
वीबी क्रिया, आधार रूप
VBD क्रिया, भूत काल
VBZ क्रिया, तीसरा व्यक्ति विलक्षण वर्तमान
में पूर्वसर्ग या अधीनस्थ संयोजन
एनएनपी व्यक्तिवाचक संज्ञा, एकवचन
सेवा सेवा
जे जे विशेषण

भाषण के हिस्सों को टैग करना

एक वाक्य के भाषण के हिस्सों को टैग करने के लिए, ओपनएनएलपी एक मॉडल, एक फ़ाइल का उपयोग करता है जिसका नाम है en-posmaxent.bin। यह एक पूर्वनिर्धारित मॉडल है जिसे दिए गए कच्चे पाठ के भाषण के हिस्सों को टैग करने के लिए प्रशिक्षित किया जाता है।

POSTaggerME की कक्षा opennlp.tools.postagपैकेज का उपयोग इस मॉडल को लोड करने के लिए किया जाता है, और ओपनएनएलपी लाइब्रेरी का उपयोग करके दिए गए कच्चे पाठ के भाषण के हिस्सों को टैग किया जाता है। ऐसा करने के लिए, आपको यह करने की आवश्यकता है -

  • लोड करें en-pos-maxent.bin का उपयोग कर मॉडल POSModel कक्षा।

  • झटपट POSTaggerME कक्षा।

  • वाक्य को स्पष्ट करें।

  • टैग का उपयोग कर उत्पन्न करें tag() तरीका।

  • टोकन और टैग का उपयोग करके प्रिंट करें POSSample कक्षा।

एक प्रोग्राम लिखने के लिए निम्नलिखित चरणों का पालन करना चाहिए जो दिए गए कच्चे पाठ में भाषण के कुछ हिस्सों को टैग करता है POSTaggerME कक्षा।

चरण 1: मॉडल लोड करें

पीओएस टैगिंग के लिए मॉडल को नामित वर्ग द्वारा दर्शाया गया है 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क्लास का उपयोग इसके लिए पास किए गए कच्चे पाठ को टोकन देने के लिए किया जाता है। यह विधि एक स्ट्रिंग चर को पैरामीटर के रूप में स्वीकार करती है, और स्ट्रिंग्स (टोकन) की एक सरणी लौटाती है।

झटपट whitespaceTokenizer इस विधि के वाक्य के स्ट्रिंग प्रारूप को पारित करके इस विधि को वर्ग और आह्वान करें।

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

चरण 4: टैग उत्पन्न करना

tag() की विधि whitespaceTokenizerवर्ग टोकन के वाक्य को पीओएस टैग प्रदान करता है। यह विधि टोकन की एक सरणी (स्ट्रिंग) को एक पैरामीटर के रूप में स्वीकार करती है और टैग (सरणी) लौटाती है।

आह्वान किया tag() पिछले चरण में उत्पन्न टोकन को पास करके विधि।

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

चरण 5: टोकन और टैग को प्रिंट करना

POSSampleवर्ग पीओएस-टैग किए गए वाक्य का प्रतिनिधित्व करता है। इस वर्ग को तुरंत करने के लिए, हमें टोकन की एक (पाठ की) और टैग की एक सरणी की आवश्यकता होगी।

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()); 
   
   } 
}

निम्न आदेशों का उपयोग करके कमांड प्रॉम्प्ट से सहेजी गई जावा फ़ाइल को संकलित करें और निष्पादित करें -

javac PosTaggerExample.java 
java PosTaggerExample

निष्पादित करने पर, उपरोक्त कार्यक्रम दिए गए पाठ को पढ़ता है और इन वाक्यों के भाषण के कुछ हिस्सों का पता लगाता है और उन्हें प्रदर्शित करता है, जैसा कि नीचे दिखाया गया है।

Hi_NNP welcome_JJ to_TO Tutorialspoint_VB

पीओएस टैगर प्रदर्शन

निम्नलिखित कार्यक्रम है जो किसी दिए गए कच्चे पाठ के भाषण के हिस्सों को टैग करता है। यह प्रदर्शन की निगरानी भी करता है और टैगर के प्रदर्शन को प्रदर्शित करता है। इस प्रोग्राम को नाम के साथ फाइल में सेव करें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();      
   } 
}

निम्न आदेशों का उपयोग करके कमांड प्रॉम्प्ट से सहेजी गई जावा फ़ाइल को संकलित करें और निष्पादित करें -

javac PosTaggerExample.java 
java PosTaggerExample

निष्पादित करने पर, उपरोक्त कार्यक्रम दिए गए पाठ को पढ़ता है और इन वाक्यों के बोलने के हिस्सों को टैग करता है और उन्हें प्रदर्शित करता है। इसके अलावा, यह पीओएस टैगर के प्रदर्शन पर भी नज़र रखता है और उसे प्रदर्शित करता है।

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

पीओएस टैगर संभावना

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]); 
   } 
}

निम्न आदेशों का उपयोग करके कमांड प्रॉम्प्ट से सहेजी गई जावा फ़ाइल को संकलित करें और निष्पादित करें -

javac TokenizerMEProbs.java 
java TokenizerMEProbs

निष्पादित करने पर, उपरोक्त कार्यक्रम दिए गए कच्चे पाठ को पढ़ता है, इसमें प्रत्येक टोकन के भाषण के हिस्सों को टैग करता है, और उन्हें प्रदर्शित करता है। इसके अलावा, यह दिए गए वाक्य में भाषण के प्रत्येक भागों के लिए संभावनाओं को भी प्रदर्शित करता है, जैसा कि नीचे दिखाया गया है।

Hi_NNP welcome_JJ to_TO Tutorialspoint_VB    
0.6416834779738033 
0.42983612874819177 
0.8584513635863117 
0.4394784478206072