ओपनएनएलपी - टोकनेशन

दिए गए वाक्य को छोटे भागों (टोकन) में काटने की प्रक्रिया के रूप में जाना जाता है tokenization। सामान्य तौर पर, दिए गए कच्चे पाठ को सीमांकक (ज्यादातर व्हाट्सएप) के एक सेट के आधार पर टोकन किया जाता है।

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

ओपनएनएलपी का उपयोग कर टोकन

opennlp.tools.tokenize पैकेज में वे कक्षाएं और इंटरफेस होते हैं जिनका उपयोग टोकन प्रदर्शन करने के लिए किया जाता है।

दिए गए वाक्यों को सरल अंशों में बदलने के लिए, OpenNLP लाइब्रेरी तीन अलग-अलग कक्षाएं प्रदान करती है -

  • SimpleTokenizer - यह वर्ग चरित्र वर्गों का उपयोग करके दिए गए कच्चे पाठ को टोकन देता है।

  • WhitespaceTokenizer - यह वर्ग दिए गए पाठ को टोकन करने के लिए व्हाट्सएप का उपयोग करता है।

  • TokenizerME- यह वर्ग कच्चे पाठ को अलग टोकन में परिवर्तित करता है। यह अपने निर्णय लेने के लिए अधिकतम एन्ट्रापी का उपयोग करता है।

SimpleTokenizer

का उपयोग कर एक वाक्य tokenize SimpleTokenizer वर्ग, आप की जरूरत है -

  • संबंधित वर्ग की एक वस्तु बनाएं।

  • का उपयोग करके वाक्य को टोकन दें tokenize() तरीका।

  • टोकन प्रिंट करें।

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

Step 1 - संबंधित वर्ग को त्वरित करना

दोनों वर्गों में, उन्हें तुरंत तैयार करने के लिए कोई रचनाकार उपलब्ध नहीं हैं। इसलिए, हमें स्थिर चर का उपयोग करके इन वर्गों की वस्तुओं को बनाने की आवश्यकता हैINSTANCE

SimpleTokenizer tokenizer = SimpleTokenizer.INSTANCE;

Step 2 - वाक्यों को टोकें

इन दोनों वर्गों में एक विधि कहा जाता है tokenize()। यह विधि स्ट्रिंग प्रारूप में एक कच्चे पाठ को स्वीकार करती है। आह्वान करने पर, यह दिए गए स्ट्रिंग को टोकन देता है और स्ट्रिंग्स (टोकन) की एक सरणी देता है।

का उपयोग करके वाक्य को टोकन दें tokenizer() नीचे दिखाए अनुसार विधि।

//Tokenizing the given sentence 
 String tokens[] = tokenizer.tokenize(sentence);

Step 3 - टोकन प्रिंट करें

वाक्य को टोकन करने के बाद, आप टोकन का उपयोग करके प्रिंट कर सकते हैं for loop, जैसा की नीचे दिखाया गया।

//Printing the tokens 
for(String token : tokens)       
   System.out.println(token);

Example

निम्नलिखित प्रोग्राम है जो SimpleTokenizer वर्ग का उपयोग करके दिए गए वाक्य को टोकन देता है। इस प्रोग्राम को नाम के साथ फाइल में सेव करेंSimpleTokenizerExample.java

import opennlp.tools.tokenize.SimpleTokenizer;  
public class SimpleTokenizerExample { 
   public static void main(String args[]){ 
     
      String sentence = "Hi. How are you? Welcome to Tutorialspoint. " 
         + "We provide free tutorials on various technologies"; 
    
      //Instantiating SimpleTokenizer class 
      SimpleTokenizer simpleTokenizer = SimpleTokenizer.INSTANCE;  
       
      //Tokenizing the given sentence 
      String tokens[] = simpleTokenizer.tokenize(sentence);  
       
      //Printing the tokens 
      for(String token : tokens) {         
         System.out.println(token);  
      }       
   }  
}

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

javac SimpleTokenizerExample.java 
java SimpleTokenizerExample

निष्पादित करने पर, उपरोक्त कार्यक्रम दिए गए स्ट्रिंग (कच्चे पाठ) को पढ़ता है, इसे टोकन करता है, और निम्नलिखित आउटपुट प्रदर्शित करता है -

Hi 
. 
How 
are 
you 
? 
Welcome 
to 
Tutorialspoint 
. 
We 
provide 
free 
tutorials 
on 
various 
technologies

WhitespaceTokenizer

का उपयोग कर एक वाक्य tokenize WhitespaceTokenizer वर्ग, आप की जरूरत है -

  • संबंधित वर्ग की एक वस्तु बनाएं।

  • का उपयोग करके वाक्य को टोकन दें tokenize() तरीका।

  • टोकन प्रिंट करें।

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

Step 1 - संबंधित वर्ग को त्वरित करना

दोनों वर्गों में, उन्हें तुरंत तैयार करने के लिए कोई रचनाकार उपलब्ध नहीं हैं। इसलिए, हमें स्थिर चर का उपयोग करके इन वर्गों की वस्तुओं को बनाने की आवश्यकता हैINSTANCE

WhitespaceTokenizer tokenizer = WhitespaceTokenizer.INSTANCE;

Step 2 - वाक्यों को टोकें

इन दोनों वर्गों में एक विधि कहा जाता है tokenize()। यह विधि स्ट्रिंग प्रारूप में एक कच्चे पाठ को स्वीकार करती है। आह्वान करने पर, यह दिए गए स्ट्रिंग को टोकन देता है और स्ट्रिंग्स (टोकन) की एक सरणी देता है।

का उपयोग करके वाक्य को टोकन दें tokenizer() नीचे दिखाए अनुसार विधि।

//Tokenizing the given sentence 
 String tokens[] = tokenizer.tokenize(sentence);

Step 3 - टोकन प्रिंट करें

वाक्य को टोकन करने के बाद, आप टोकन का उपयोग करके प्रिंट कर सकते हैं for loop, जैसा की नीचे दिखाया गया।

//Printing the tokens 
for(String token : tokens)       
   System.out.println(token);

Example

निम्नलिखित प्रोग्राम है जो दिए गए वाक्य का उपयोग करके टोकन देता है WhitespaceTokenizerकक्षा। इस प्रोग्राम को नाम के साथ फाइल में सेव करेंWhitespaceTokenizerExample.java

import opennlp.tools.tokenize.WhitespaceTokenizer;  

public class WhitespaceTokenizerExample {  
   
   public static void main(String args[]){ 
     
      String sentence = "Hi. How are you? Welcome to Tutorialspoint. " 
         + "We provide free tutorials on various technologies"; 
    
      //Instantiating whitespaceTokenizer class 
       WhitespaceTokenizer whitespaceTokenizer = WhitespaceTokenizer.INSTANCE;  
       
      //Tokenizing the given paragraph 
      String tokens[] = whitespaceTokenizer.tokenize(sentence);  
       
      //Printing the tokens 
      for(String token : tokens)     
         System.out.println(token);        
   } 
}

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

javac WhitespaceTokenizerExample.java 
java WhitespaceTokenizerExample

निष्पादित करने पर, उपरोक्त कार्यक्रम दिए गए स्ट्रिंग (कच्चे पाठ) को पढ़ता है, इसे टोकन करता है, और निम्न आउटपुट को प्रदर्शित करता है।

Hi. 
How 
are 
you? 
Welcome 
to 
Tutorialspoint. 
We 
provide 
free 
tutorials 
on 
various 
technologies

टोकनिनेयर वर्ग

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

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

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

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

  • का उपयोग कर वाक्यों को टोकन tokenize() इस वर्ग की विधि।

प्रोग्राम को लिखने के लिए निम्नलिखित चरणों का पालन करना चाहिए जो दिए गए कच्चे पाठ से वाक्यों का उपयोग करता है TokenizerME कक्षा।

Step 1 - मॉडल लोड हो रहा है

टोकेनाइजेशन का मॉडल नामित वर्ग द्वारा दर्शाया गया है TokenizerModel, जो पैकेज के अंतर्गत आता है opennlp.tools.tokenize

एक टोकन मॉडल लोड करने के लिए -

  • बनाओ InputStream मॉडल का उद्देश्य (FileInputStream झटपट करें और इसके निर्माणकर्ता को स्ट्रिंग प्रारूप में मॉडल का पथ पास करें)।

  • झटपट TokenizerModel कक्षा और पास InputStream (ऑब्जेक्ट) इसके निर्माता के लिए एक पैरामीटर के रूप में, जैसा कि निम्नलिखित कोड ब्लॉक में दिखाया गया है।

//Loading the Tokenizer model 
InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-token.bin"); 
TokenizerModel tokenModel = new TokenizerModel(inputStream);

Step 2 - टोकेनाइज़रईएम क्लास को इंस्टेंट करना

TokenizerME पैकेज की कक्षा opennlp.tools.tokenizeकच्चे पाठ को छोटे भागों (टोकन) में काटने के तरीके शामिल हैं। यह अपने निर्णय लेने के लिए अधिकतम एन्ट्रापी का उपयोग करता है।

इस वर्ग को तुरंत लिखें और पिछले चरण में बनाई गई मॉडल ऑब्जेक्ट को नीचे दिखाए अनुसार पास करें।

//Instantiating the TokenizerME class 
TokenizerME tokenizer = new TokenizerME(tokenModel);

Step 3 - सजा को टोकन देना

tokenize() की विधि TokenizerMEक्लास का उपयोग इसके लिए पास किए गए कच्चे पाठ को टोकन देने के लिए किया जाता है। यह विधि एक स्ट्रिंग चर को पैरामीटर के रूप में स्वीकार करती है, और स्ट्रिंग्स (टोकन) की एक सरणी लौटाती है।

इस विधि के वाक्य के स्ट्रिंग प्रारूप को पास करके इस विधि को लागू करें, निम्नानुसार।

//Tokenizing the given raw text 
String tokens[] = tokenizer.tokenize(paragraph);

Example

निम्नलिखित कार्यक्रम है जो दिए गए कच्चे पाठ को टोकन देता है। इस प्रोग्राम को नाम के साथ फाइल में सेव करेंTokenizerMEExample.java

import java.io.FileInputStream; 
import java.io.InputStream; 
import opennlp.tools.tokenize.TokenizerME; 
import opennlp.tools.tokenize.TokenizerModel;  

public class TokenizerMEExample { 
  
   public static void main(String args[]) throws Exception{     
     
      String sentence = "Hi. How are you? Welcome to Tutorialspoint. " 
            + "We provide free tutorials on various technologies"; 
       
      //Loading the Tokenizer model 
      InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-token.bin"); 
      TokenizerModel tokenModel = new TokenizerModel(inputStream); 
       
      //Instantiating the TokenizerME class 
      TokenizerME tokenizer = new TokenizerME(tokenModel); 
       
      //Tokenizing the given raw text 
      String tokens[] = tokenizer.tokenize(sentence);       
          
      //Printing the tokens  
      for (String a : tokens) 
         System.out.println(a); 
   } 
}

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

javac TokenizerMEExample.java 
java TokenizerMEExample

निष्पादित करने पर, उपरोक्त कार्यक्रम दिए गए स्ट्रिंग को पढ़ता है और इसमें वाक्यों का पता लगाता है और निम्नलिखित आउटपुट प्रदर्शित करता है -

Hi 
. 
How 
are 
you 
? 
Welcome 
to 
Tutorialspoint 
. 
We 
provide 
free 
tutorials 
on 
various 
technologie

टोकन के पदों को पुनः प्राप्त करना

हम भी स्थिति प्राप्त कर सकते हैं या spans का उपयोग कर टोकन की tokenizePos()तरीका। यह पैकेज के टोकनाइज़र इंटरफ़ेस की विधि हैopennlp.tools.tokenize। चूंकि सभी (तीन) टोकनाइज़र कक्षाएं इस इंटरफ़ेस को लागू करती हैं, आप उन सभी में यह विधि पा सकते हैं।

यह विधि एक स्ट्रिंग के रूप में वाक्य या कच्चे पाठ को स्वीकार करती है और प्रकार की वस्तुओं की एक सरणी लौटाती है Span

आप का उपयोग कर टोकन की स्थिति प्राप्त कर सकते हैं tokenizePos() विधि, इस प्रकार है -

//Retrieving the tokens 
tokenizer.tokenizePos(sentence);

पदों की छपाई (स्पैन)

नाम का वर्ग Span का opennlp.tools.util पैकेज का उपयोग सेट के प्रारंभ और अंत पूर्णांक को संग्रहीत करने के लिए किया जाता है।

आप द्वारा दिए गए स्पैन को स्टोर कर सकते हैं tokenizePos() स्पैन ऐरे में विधि और उन्हें प्रिंट करें, जैसा कि निम्नलिखित कोड ब्लॉक में दिखाया गया है।

//Retrieving the tokens 
Span[] tokens = tokenizer.tokenizePos(sentence);
//Printing the spans of tokens 
for( Span token : tokens)        
   System.out.println(token);

एक साथ मुद्रण टोकन और उनकी स्थिति

substring() स्ट्रिंग कक्षा की विधि स्वीकार करती है begin और यह endऑफसेट और संबंधित स्ट्रिंग लौटाता है। हम इस विधि का उपयोग टोकन और उनके स्पैन (स्थिति) को एक साथ प्रिंट करने के लिए कर सकते हैं, जैसा कि निम्नलिखित कोड ब्लॉक में दिखाया गया है।

//Printing the spans of tokens 
for(Span token : tokens)  
   System.out.println(token +" "+sent.substring(token.getStart(), token.getEnd()));

Example(SimpleTokenizer)

निम्नलिखित प्रोग्राम है जो कच्चे पाठ के टोकन स्पैन को पुनः प्राप्त करता है SimpleTokenizerकक्षा। यह उनके पदों के साथ-साथ टोकन भी प्रिंट करता है। इस प्रोग्राम को नाम वाली फ़ाइल में सेव करेंSimpleTokenizerSpans.java

import opennlp.tools.tokenize.SimpleTokenizer; 
import opennlp.tools.util.Span;  

public class SimpleTokenizerSpans {  
   public static void main(String args[]){ 
     
      String sent = "Hi. How are you? Welcome to Tutorialspoint. " 
         + "We provide free tutorials on various technologies"; 
    
      //Instantiating SimpleTokenizer class 
      SimpleTokenizer simpleTokenizer = SimpleTokenizer.INSTANCE;  
       
      //Retrieving the boundaries of the tokens 
      Span[] tokens = simpleTokenizer.tokenizePos(sent);  
       
      //Printing the spans of tokens 
      for( Span token : tokens)
         System.out.println(token +" "+sent.substring(token.getStart(), token.getEnd()));          
   } 
}

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

javac SimpleTokenizerSpans.java 
java SimpleTokenizerSpans

निष्पादित करने पर, उपरोक्त कार्यक्रम दिए गए स्ट्रिंग (कच्चे पाठ) को पढ़ता है, इसे टोकन करता है, और निम्नलिखित आउटपुट प्रदर्शित करता है -

[0..2) Hi 
[2..3) . 
[4..7) How 
[8..11) are 
[12..15) you 
[15..16) ? 
[17..24) Welcome 
[25..27) to 
[28..42) Tutorialspoint 
[42..43) . 
[44..46) We 
[47..54) provide 
[55..59) free 
[60..69) tutorials 
[70..72) on 
[73..80) various 
[81..93) technologies

Example (WhitespaceTokenizer)

निम्नलिखित प्रोग्राम है जो कच्चे पाठ के टोकन स्पैन को पुनः प्राप्त करता है WhitespaceTokenizerकक्षा। यह उनके पदों के साथ-साथ टोकन भी प्रिंट करता है। इस प्रोग्राम को नाम के साथ फाइल में सेव करेंWhitespaceTokenizerSpans.java

import opennlp.tools.tokenize.WhitespaceTokenizer;
import opennlp.tools.util.Span; 
public class WhitespaceTokenizerSpans {  
   public static void main(String args[]){ 
     
      String sent = "Hi. How are you? Welcome to Tutorialspoint. " 
         + "We provide free tutorials on various technologies"; 
    
      //Instantiating SimpleTokenizer class 
      WhitespaceTokenizer whitespaceTokenizer = WhitespaceTokenizer.INSTANCE;  
       
      //Retrieving the tokens 
      Span[] tokens = whitespaceTokenizer.tokenizePos(sent);  
       
      //Printing the spans of tokens 
      for( Span token : tokens) 
         System.out.println(token +" 
            "+sent.substring(token.getStart(), token.getEnd()));        
   } 
}

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

javac WhitespaceTokenizerSpans.java 
java WhitespaceTokenizerSpans

निष्पादित करने पर, उपरोक्त कार्यक्रम दिए गए स्ट्रिंग (कच्चे पाठ) को पढ़ता है, इसे टोकन करता है, और निम्न आउटपुट को प्रदर्शित करता है।

[0..3) Hi. 
[4..7) How 
[8..11) are 
[12..16) you? 
[17..24) Welcome 
[25..27) to 
[28..43) Tutorialspoint. 
[44..46) We 
[47..54) provide 
[55..59) free
[60..69) tutorials 
[70..72) on 
[73..80) various 
[81..93) technologies

Example (TokenizerME)

निम्नलिखित प्रोग्राम है जो कच्चे पाठ के टोकन स्पैन को पुनः प्राप्त करता है TokenizerMEकक्षा। यह उनके पदों के साथ-साथ टोकन भी प्रिंट करता है। इस प्रोग्राम को नाम के साथ फाइल में सेव करेंTokenizerMESpans.java

import java.io.FileInputStream; 
import java.io.InputStream; 
import opennlp.tools.tokenize.TokenizerME; 
import opennlp.tools.tokenize.TokenizerModel; 
import opennlp.tools.util.Span;  

public class TokenizerMESpans { 
   public static void main(String args[]) throws Exception{     
      String sent = "Hello John how are you welcome to Tutorialspoint"; 
       
      //Loading the Tokenizer model 
      InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-token.bin"); 
      TokenizerModel tokenModel = new TokenizerModel(inputStream); 
       
      //Instantiating the TokenizerME class 
      TokenizerME tokenizer = new TokenizerME(tokenModel); 
       
      //Retrieving the positions of the tokens 
      Span tokens[] = tokenizer.tokenizePos(sent); 
       
      //Printing the spans of tokens 
      for(Span token : tokens) 
         System.out.println(token +" "+sent.substring(token.getStart(), token.getEnd()));      
   } 
}

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

javac TokenizerMESpans.java 
java TokenizerMESpans

निष्पादित करने पर, उपरोक्त कार्यक्रम दिए गए स्ट्रिंग (कच्चे पाठ) को पढ़ता है, इसे टोकन करता है, और निम्नलिखित आउटपुट प्रदर्शित करता है -

[0..5) Hello 
[6..10) John 
[11..14) how 
[15..18) are 
[19..22) you 
[23..30) welcome 
[31..33) to 
[34..48) Tutorialspoint

टोकनर संभावना

टोकनएपएमई क्लास की getTokenProbabilities () पद्धति का उपयोग टोकनपेपोस () पद्धति के लिए सबसे हालिया कॉल से जुड़ी संभावनाओं को प्राप्त करने के लिए किया जाता है।

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

इसके बाद tokenizePos () पद्धति से कॉल से जुड़ी संभावनाओं को प्रिंट करने का कार्यक्रम है। इस प्रोग्राम को नाम के साथ फाइल में सेव करेंTokenizerMEProbs.java

import java.io.FileInputStream; 
import java.io.InputStream; 
import opennlp.tools.tokenize.TokenizerME; 
import opennlp.tools.tokenize.TokenizerModel; 
import opennlp.tools.util.Span;  

public class TokenizerMEProbs { 
   
   public static void main(String args[]) throws Exception{     
      String sent = "Hello John how are you welcome to Tutorialspoint"; 
      
      //Loading the Tokenizer model 
      InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-token.bin"); 
      TokenizerModel tokenModel = new TokenizerModel(inputStream); 
      
      //Instantiating the TokenizerME class 
      TokenizerME tokenizer = new TokenizerME(tokenModel);
      
      //Retrieving the positions of the tokens 
      Span tokens[] = tokenizer.tokenizePos(sent); 
       
      //Getting the probabilities of the recent calls to tokenizePos() method 
      double[] probs = tokenizer.getTokenProbabilities(); 
       
      //Printing the spans of tokens 
      for(Span token : tokens) 
         System.out.println(token +" "+sent.substring(token.getStart(), token.getEnd()));      
         System.out.println("  "); 
         for(int i = 0; i<probs.length; i++) 
            System.out.println(probs[i]);          
   } 
}

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

javac TokenizerMEProbs.java 
java TokenizerMEProbs

निष्पादित करने पर, उपरोक्त कार्यक्रम दिए गए स्ट्रिंग को पढ़ता है और वाक्यों को टोकता है और उन्हें प्रिंट करता है। इसके अलावा, यह टोकेनाइजरपोस () पद्धति के लिए सबसे हालिया कॉल से जुड़ी संभावनाओं को भी लौटाता है।

[0..5) Hello 
[6..10) John 
[11..14) how 
[15..18) are 
[19..22) you 
[23..30) welcome 
[31..33) to 
[34..48) Tutorialspoint 
   
1.0 
1.0 
1.0 
1.0 
1.0 
1.0 
1.0 
1.0