OpenNLP - Analisi delle frasi

Utilizzando OpenNLP API, puoi analizzare le frasi fornite. In questo capitolo, discuteremo come analizzare il testo grezzo utilizzando l'API OpenNLP.

Analisi del testo grezzo utilizzando la libreria OpenNLP

Per rilevare le frasi, OpenNLP utilizza un modello predefinito, un file denominato en-parserchunking.bin. Questo è un modello predefinito addestrato per analizzare il testo non elaborato specificato.

Il Parser classe di opennlp.tools.Parser pacchetto viene utilizzato per contenere i componenti di analisi e il file ParserTool classe di opennlp.tools.cmdline.parser pacchetto viene utilizzato per analizzare il contenuto.

Di seguito sono riportati i passaggi da seguire per scrivere un programma che analizzi il testo non elaborato specificato utilizzando l'estensione ParserTool classe.

Passaggio 1: caricamento del modello

Il modello per l'analisi del testo è rappresentato dalla classe denominata ParserModel, che appartiene al pacchetto opennlp.tools.parser.

Per caricare un modello di tokenizer:

  • Creare un InputStream oggetto del modello (creare un'istanza di FileInputStream e passare il percorso del modello in formato String al suo costruttore).

  • Istanziare il file ParserModel class e passare il InputStream (oggetto) del modello come parametro del suo costruttore, come mostrato nel seguente blocco di codice.

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

Passaggio 2: creazione di un oggetto della classe Parser

Il Parser classe del pacchetto opennlp.tools.parserrappresenta una struttura di dati per contenere i componenti di analisi. Puoi creare un oggetto di questa classe usando il file staticcreate() metodo del ParserFactory classe.

Invoca il file create() metodo del ParserFactory passando l'oggetto modello creato nel passaggio precedente, come mostrato di seguito -

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

Passaggio 3: analisi della frase

Il parseLine() metodo del ParserToolclass viene utilizzata per analizzare il testo grezzo in OpenNLP. Questo metodo accetta:

  • una variabile String che rappresenta il testo da analizzare.

  • un oggetto parser.

  • un numero intero che rappresenta il numero di analisi da eseguire.

Richiamare questo metodo passando alla frase i seguenti parametri: l'oggetto di analisi creato nei passaggi precedenti e un numero intero che rappresenta il numero di analisi richiesto da eseguire.

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

Example

Di seguito è riportato il programma che analizza il testo grezzo fornito. Salva questo programma in un file con il nomeParserExample.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();          
   } 
}

Compilare ed eseguire il file Java salvato dal prompt dei comandi utilizzando i seguenti comandi:

javac ParserExample.java 
java ParserExample

All'esecuzione, il programma precedente legge il testo grezzo fornito, lo analizza e visualizza il seguente output:

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