OpenNLP - Cümleleri Ayrıştırma

OpenNLP API kullanarak verilen cümleleri ayrıştırabilirsiniz. Bu bölümde, OpenNLP API kullanılarak ham metnin nasıl ayrıştırılacağını tartışacağız.

OpenNLP Kitaplığını Kullanarak Ham Metni Ayrıştırma

Cümleleri algılamak için, OpenNLP önceden tanımlanmış bir model kullanır; en-parserchunking.bin. Bu, verilen ham metni ayrıştırmak için eğitilmiş önceden tanımlanmış bir modeldir.

Parser sınıfı opennlp.tools.Parser paket ayrıştırma bileşenlerini tutmak için kullanılır ve ParserTool sınıfı opennlp.tools.cmdline.parser paket içeriği ayrıştırmak için kullanılır.

Aşağıda, verilen ham metni kullanarak ayrıştıran bir program yazmak için izlenecek adımlar verilmiştir. ParserTool sınıf.

Adım 1: Modeli yükleme

Metni ayrıştırma modeli, adlı sınıf tarafından temsil edilir. ParserModelpakete ait olan opennlp.tools.parser.

Bir jetonlaştırıcı modeli yüklemek için -

  • Oluşturduğunuz bir InputStream modelin nesnesi (FileInputStream öğesini örnekleyin ve modelin yolunu String biçiminde yapıcısına iletin).

  • Örnekleyin ParserModel sınıf ve geç InputStream (nesne) modelinin yapıcısına bir parametre olarak aşağıdaki kod bloğunda gösterildiği gibi.

//Loading parser model 
InputStream inputStream = new FileInputStream(".../en-parserchunking.bin"); 
ParserModel model = new ParserModel(inputStream);

Adım 2: Parser sınıfının bir nesnesini oluşturma

Parser paketin sınıfı opennlp.tools.parserayrıştırma bileşenlerini tutmak için bir veri yapısını temsil eder. Statik kullanarak bu sınıfın bir nesnesini oluşturabilirsiniz.create() yöntemi ParserFactory sınıf.

Çağırın create() yöntemi ParserFactory önceki adımda oluşturulan model nesnesini aşağıda gösterildiği gibi ileterek -

//Creating a parser Parser parser = ParserFactory.create(model);

3. Adım: Cümlenin ayrıştırılması

parseLine() yöntemi ParserToolsınıfı, ham metni OpenNLP'de ayrıştırmak için kullanılır. Bu yöntem kabul eder -

  • ayrıştırılacak metni temsil eden bir String değişkeni.

  • ayrıştırıcı nesnesi.

  • gerçekleştirilecek ayrıştırma sayısını temsil eden bir tam sayı.

Aşağıdaki parametreleri cümleyi ileterek bu yöntemi çağırın: önceki adımlarda oluşturulan ayrıştırma nesnesi ve yürütülecek gerekli çözümleme sayısını temsil eden bir tam sayı.

//Parsing the sentence 
String sentence = "Tutorialspoint is the largest tutorial library.";       
Parse topParses[] = ParserTool.parseLine(sentence, parser, 1);

Example

Verilen ham metni ayrıştıran program aşağıdadır. Bu programı adıyla bir dosyaya kaydedinParserExample.java.

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

import opennlp.tools.cmdline.parser.ParserTool; 
import opennlp.tools.parser.Parse; 
import opennlp.tools.parser.Parser; 
import opennlp.tools.parser.ParserFactory; 
import opennlp.tools.parser.ParserModel;  

public class ParserExample { 
   
   public static void main(String args[]) throws Exception{  
      //Loading parser model 
      InputStream inputStream = new FileInputStream(".../en-parserchunking.bin"); 
      ParserModel model = new ParserModel(inputStream); 
       
      //Creating a parser 
      Parser parser = ParserFactory.create(model); 
      
      //Parsing the sentence 
      String sentence = "Tutorialspoint is the largest tutorial library.";
      Parse topParses[] = ParserTool.parseLine(sentence, parser, 1); 
    
      for (Parse p : topParses) 
         p.show();          
   } 
}

Kaydedilen Java dosyasını aşağıdaki komutları kullanarak Komut isteminden derleyin ve yürütün -

javac ParserExample.java 
java ParserExample

Yürütüldüğünde, yukarıdaki program verilen ham metni okur, ayrıştırır ve aşağıdaki çıktıyı görüntüler -

(TOP (S (NP (NN Tutorialspoint)) (VP (VBZ is) (NP (DT the) (JJS largest) (NN
   tutorial) (NN library.)))))