OpenNLP - Analisando as Sentenças

Usando a API OpenNLP, você pode analisar as sentenças fornecidas. Neste capítulo, discutiremos como analisar texto bruto usando a API OpenNLP.

Análise de texto bruto usando a biblioteca OpenNLP

Para detectar as frases, o OpenNLP usa um modelo predefinido, um arquivo chamado en-parserchunking.bin. Este é um modelo predefinido que é treinado para analisar o texto bruto fornecido.

o Parser classe do opennlp.tools.Parser pacote é usado para manter os constituintes de análise e o ParserTool classe do opennlp.tools.cmdline.parser pacote é usado para analisar o conteúdo.

A seguir estão os passos a serem seguidos para escrever um programa que analisa o texto bruto fornecido usando o ParserTool classe.

Etapa 1: Carregando o modelo

O modelo de análise de texto é representado pela classe chamada ParserModel, que pertence ao pacote opennlp.tools.parser.

Para carregar um modelo de tokenizer -

  • Criar um InputStream objeto do modelo (instancie o FileInputStream e passe o caminho do modelo no formato String para seu construtor).

  • Instancie o ParserModel classe e passar no InputStream (objeto) do modelo como um parâmetro para seu construtor, conforme mostrado no bloco de código a seguir.

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

Etapa 2: Criação de um objeto da classe Parser

o Parser classe do pacote opennlp.tools.parserrepresenta uma estrutura de dados para manter os constituintes de análise. Você pode criar um objeto desta classe usando o método estáticocreate() método do ParserFactory classe.

Invoque o create() método do ParserFactory passando o objeto modelo criado na etapa anterior, conforme mostrado abaixo -

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

Etapa 3: análise da frase

o parseLine() método do ParserToolclasse é usada para analisar o texto bruto no OpenNLP. Este método aceita -

  • uma variável String que representa o texto a ser analisado.

  • um objeto analisador.

  • um inteiro que representa o número de análises a serem realizadas.

Chame esse método passando os seguintes parâmetros para a frase: o objeto de análise criado nas etapas anteriores e um inteiro representando o número necessário de análises a serem realizadas.

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

Example

A seguir está o programa que analisa o texto bruto fornecido. Salve este programa em um arquivo com o 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();          
   } 
}

Compile e execute o arquivo Java salvo no prompt de comando usando os seguintes comandos -

javac ParserExample.java 
java ParserExample

Ao ser executado, o programa acima lê o texto bruto fornecido, analisa-o e exibe a seguinte saída -

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