OpenNLP - Разбор предложений
Используя OpenNLP API, вы можете анализировать данные предложения. В этой главе мы обсудим, как анализировать необработанный текст с помощью OpenNLP API.
Анализ исходного текста с использованием библиотеки OpenNLP
Для обнаружения предложений OpenNLP использует предопределенную модель, файл с именем en-parserchunking.bin. Это предопределенная модель, которая обучена анализировать заданный необработанный текст.
В Parser класс opennlp.tools.Parser пакет используется для хранения компонентов синтаксического анализа и ParserTool класс opennlp.tools.cmdline.parser package используется для анализа содержимого.
Ниже приведены шаги, которые необходимо выполнить, чтобы написать программу, которая анализирует данный необработанный текст, используя ParserTool класс.
Шаг 1. Загрузка модели
Модель для синтаксического анализа текста представлена классом с именем ParserModel, который принадлежит пакету opennlp.tools.parser.
Чтобы загрузить модель токенизатора -
Создать InputStream объект модели (создайте экземпляр FileInputStream и передайте путь модели в строковом формате ее конструктору).
Создайте экземпляр ParserModel класс и пройти InputStream (объект) модели в качестве параметра ее конструктора, как показано в следующем блоке кода.
//Loading parser model
InputStream inputStream = new FileInputStream(".../en-parserchunking.bin");
ParserModel model = new ParserModel(inputStream);
Шаг 2: Создание объекта класса Parser
В Parser класс пакета opennlp.tools.parserпредставляет структуру данных для хранения компонентов синтаксического анализа. Вы можете создать объект этого класса, используя статическийcreate() метод ParserFactory класс.
Вызвать create() метод ParserFactory передавая объект модели, созданный на предыдущем шаге, как показано ниже -
//Creating a parser Parser parser = ParserFactory.create(model);
Шаг 3. Разбор предложения
В parseLine() метод ParserToolКласс используется для анализа необработанного текста в OpenNLP. Этот метод принимает -
переменная типа String, представляющая анализируемый текст.
объект парсера.
целое число, представляющее количество выполняемых синтаксических анализов.
Вызовите этот метод, передав предложению следующие параметры: объект синтаксического анализа, созданный на предыдущих шагах, и целое число, представляющее необходимое количество выполняемых синтаксических анализов.
//Parsing the sentence
String sentence = "Tutorialspoint is the largest tutorial library.";
Parse topParses[] = ParserTool.parseLine(sentence, parser, 1);
Example
Ниже приводится программа, которая анализирует данный необработанный текст. Сохраните эту программу в файл с названиемParserExample.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();
}
}
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды:
javac ParserExample.java
java ParserExample
При выполнении вышеуказанная программа считывает данный необработанный текст, анализирует его и отображает следующий вывод:
(TOP (S (NP (NN Tutorialspoint)) (VP (VBZ is) (NP (DT the) (JJS largest) (NN
tutorial) (NN library.)))))