OpenNLP - 语句解析



使用 OpenNLP API,您可以解析给定的句子。在本节中,我们将讨论如何使用 OpenNLP API 解析原始文本。

使用 OpenNLP 库解析原始文本

为了检测句子,OpenNLP 使用预定义模型,一个名为 en-parserchunking.bin 的文件。这是一个预定义的模型,经过训练可以解析给定的原始文本。

opennlp.tools.Parser 包中的 Parser 类用于保存解析成分,而 opennlp.tools.cmdline.parser 包中的 ParserTool 类用于解析内容。

以下是使用 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 类的对象

opennlp.tools.parser 包中的 Parser 类表示用于保存解析成分的数据结构。您可以使用 ParserFactory 类的静态 create() 方法创建此类的对象。

通过传递上一步创建的模型对象调用 ParserFactorycreate() 方法,如下所示 -

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

步骤 3:解析句子

ParserTool 类的 parseLine() 方法用于在 OpenNLP 中解析原始文本。此方法接受 -

  • 表示要解析的文本的字符串变量。

  • 一个解析器对象。

  • 表示要执行的解析次数的整数。

通过传递以下参数调用此方法:上一步创建的解析对象,以及表示需要执行的解析次数的整数。

//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.))))) 
广告