OpenNLP: análisis de oraciones
Usando la API de OpenNLP, puede analizar las oraciones dadas. En este capítulo, discutiremos cómo analizar texto sin formato usando la API de OpenNLP.
Análisis de texto sin procesar mediante la biblioteca OpenNLP
Para detectar las oraciones, OpenNLP usa un modelo predefinido, un archivo llamado en-parserchunking.bin. Este es un modelo predefinido que está entrenado para analizar el texto sin formato dado.
los Parser clase de la opennlp.tools.Parser paquete se utiliza para contener los componentes de análisis y el ParserTool clase de la opennlp.tools.cmdline.parser El paquete se utiliza para analizar el contenido.
A continuación se muestran los pasos que se deben seguir para escribir un programa que analiza el texto en bruto dado utilizando ParserTool clase.
Paso 1: carga del modelo
El modelo para analizar el texto está representado por la clase denominada ParserModel, que pertenece al paquete opennlp.tools.parser.
Para cargar un modelo de tokenizador:
Crear un InputStream objeto del modelo (Cree una instancia de FileInputStream y pase la ruta del modelo en formato String a su constructor).
Instancia del ParserModel clase y pasar el InputStream (objeto) del modelo como parámetro para su constructor, como se muestra en el siguiente bloque de código.
//Loading parser model
InputStream inputStream = new FileInputStream(".../en-parserchunking.bin");
ParserModel model = new ParserModel(inputStream);
Paso 2: crear un objeto de la clase Analizador
los Parser clase del paquete opennlp.tools.parserrepresenta una estructura de datos para contener componentes de análisis. Puedes crear un objeto de esta clase usando el staticcreate() método del ParserFactory clase.
Invocar el create() método del ParserFactory pasando el objeto modelo creado en el paso anterior, como se muestra a continuación:
//Creating a parser Parser parser = ParserFactory.create(model);
Paso 3: analizar la oración
los parseLine() método del ParserToolLa clase se utiliza para analizar el texto sin formato en OpenNLP. Este método acepta:
una variable de cadena que representa el texto que se va a analizar.
un objeto analizador.
un número entero que representa el número de análisis que se van a realizar.
Invoque este método pasando a la oración los siguientes parámetros: el objeto de análisis creado en los pasos anteriores y un número entero que representa el número requerido de análisis que se van a realizar.
//Parsing the sentence
String sentence = "Tutorialspoint is the largest tutorial library.";
Parse topParses[] = ParserTool.parseLine(sentence, parser, 1);
Example
A continuación se muestra el programa que analiza el texto en bruto dado. Guarde este programa en un archivo con el nombreParserExample.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 y ejecute el archivo Java guardado desde el símbolo del sistema utilizando los siguientes comandos:
javac ParserExample.java
java ParserExample
Al ejecutarse, el programa anterior lee el texto sin formato dado, lo analiza y muestra la siguiente salida:
(TOP (S (NP (NN Tutorialspoint)) (VP (VBZ is) (NP (DT the) (JJS largest) (NN
tutorial) (NN library.)))))