OpenNLP - Parsen der Sätze

Mit der OpenNLP-API können Sie die angegebenen Sätze analysieren. In diesem Kapitel wird erläutert, wie Rohtext mithilfe der OpenNLP-API analysiert wird.

Analysieren von Rohtext mithilfe der OpenNLP-Bibliothek

Um die Sätze zu erkennen, verwendet OpenNLP ein vordefiniertes Modell, eine Datei mit dem Namen en-parserchunking.bin. Dies ist ein vordefiniertes Modell, das darauf trainiert ist, den angegebenen Rohtext zu analysieren.

Das Parser Klasse der opennlp.tools.Parser Paket wird verwendet, um die Analysebestandteile und die zu enthalten ParserTool Klasse der opennlp.tools.cmdline.parser Paket wird verwendet, um den Inhalt zu analysieren.

Im Folgenden finden Sie die Schritte zum Schreiben eines Programms, das den angegebenen Rohtext mithilfe von analysiert ParserTool Klasse.

Schritt 1: Laden des Modells

Das Modell zum Parsen von Text wird durch die genannte Klasse dargestellt ParserModel, die zum Paket gehört opennlp.tools.parser.

So laden Sie ein Tokenizer-Modell:

  • Erstelle ein InputStream Objekt des Modells (Instanziieren Sie den FileInputStream und übergeben Sie den Pfad des Modells im String-Format an seinen Konstruktor).

  • Instanziieren Sie die ParserModel Klasse und bestehen die InputStream (Objekt) des Modells als Parameter für seinen Konstruktor, wie im folgenden Codeblock gezeigt.

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

Schritt 2: Erstellen eines Objekts der Parser-Klasse

Das Parser Klasse des Pakets opennlp.tools.parserstellt eine Datenstruktur zum Halten von Analysebestandteilen dar. Sie können ein Objekt dieser Klasse mit der Statik erstellencreate() Methode der ParserFactory Klasse.

Rufen Sie die create() Methode der ParserFactory indem Sie das im vorherigen Schritt erstellte Modellobjekt übergeben, wie unten gezeigt -

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

Schritt 3: Analysieren des Satzes

Das parseLine() Methode der ParserToolKlasse wird verwendet, um den Rohtext in OpenNLP zu analysieren. Diese Methode akzeptiert -

  • Eine String-Variable, die den zu analysierenden Text darstellt.

  • ein Parser-Objekt.

  • eine Ganzzahl, die die Anzahl der auszuführenden Parses darstellt.

Rufen Sie diese Methode auf, indem Sie dem Satz die folgenden Parameter übergeben: das in den vorherigen Schritten erstellte Analyseobjekt und eine Ganzzahl, die die erforderliche Anzahl der auszuführenden Analysen darstellt.

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

Example

Es folgt das Programm, das den angegebenen Rohtext analysiert. Speichern Sie dieses Programm in einer Datei mit dem NamenParserExample.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();          
   } 
}

Kompilieren Sie die gespeicherte Java-Datei und führen Sie sie an der Eingabeaufforderung mit den folgenden Befehlen aus:

javac ParserExample.java 
java ParserExample

Bei der Ausführung liest das obige Programm den angegebenen Rohtext, analysiert ihn und zeigt die folgende Ausgabe an:

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