📅  最后修改于: 2020-11-23 03:57:28             🧑  作者: Mango
使用OpenNLP API,您可以解析给定的句子。在本章中,我们将讨论如何使用OpenNLP API解析原始文本。
为了检测句子,OpenNLP使用预定义的模型,名为en-parserchunking.bin的文件。这是一个预定义的模型,经过训练可以解析给定的原始文本。
opennlp.tools.Parser包的Parser类用于保存解析成分,而opennlp.tools.cmdline.parser包的ParserTool类用于解析内容。
以下是编写使用ParserTool类解析给定原始文本的程序的步骤。
用于解析文本的模型由名为ParserModel的类表示,该类属于包opennlp.tools.parser 。
加载令牌化器模型-
创建模型的InputStream对象(实例化FileInputStream并将String格式的模型路径传递给其构造函数)。
实例化ParserModel类,并将模型的InputStream (对象)作为参数传递给其构造函数,如以下代码块所示。
//Loading parser model
InputStream inputStream = new FileInputStream(".../en-parserchunking.bin");
ParserModel model = new ParserModel(inputStream);
包opennlp.tools.parser的Parser类表示用于保存解析成分的数据结构。您可以使用ParserFactory类的静态create()方法创建此类的对象。
通过传递在上一步中创建的模型对象来调用ParserFactory的create()方法,如下所示-
//Creating a parser Parser parser = ParserFactory.create(model);
ParserTool类的parseLine()方法用于解析OpenNLP中的原始文本。此方法接受-
一个String变量,表示要解析的文本。
解析器对象。
一个整数,表示要执行的解析次数。
通过向句子传递以下参数来调用此方法:在前面的步骤中创建的parse对象,以及一个表示要执行的所需解析次数的整数。
//Parsing the sentence
String sentence = "Tutorialspoint is the largest tutorial library.";
Parse topParses[] = ParserTool.parseLine(sentence, parser, 1);
例
以下是解析给定原始文本的程序。将此程序保存在名为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.)))))