- OpenNLP 教程
- OpenNLP - 首頁
- OpenNLP - 概述
- OpenNLP - 環境
- OpenNLP - 參考 API
- OpenNLP - 語句檢測
- OpenNLP - 分詞
- 命名實體識別
- OpenNLP - 詞性標註
- OpenNLP - 語句解析
- OpenNLP - 語句組塊分析
- OpenNLP - 命令列介面
- OpenNLP 有用資源
- OpenNLP - 快速指南
- OpenNLP - 有用資源
- OpenNLP - 討論
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() 方法建立此類的物件。
透過傳遞上一步建立的模型物件呼叫 ParserFactory 的 create() 方法,如下所示 -
//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.)))))