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

© . All rights reserved.