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.)))))