OpenNLP - Phân tích cú pháp các câu
Sử dụng API OpenNLP, bạn có thể phân tích cú pháp các câu đã cho. Trong chương này, chúng ta sẽ thảo luận về cách phân tích cú pháp văn bản thô bằng API OpenNLP.
Phân tích cú pháp Văn bản thô bằng Thư viện OpenNLP
Để phát hiện các câu, OpenNLP sử dụng một mô hình được xác định trước, một tệp có tên en-parserchunking.bin. Đây là một mô hình được xác định trước được đào tạo để phân tích cú pháp văn bản thô đã cho.
Các Parser lớp của opennlp.tools.Parser gói được sử dụng để chứa các thành phần phân tích cú pháp và ParserTool lớp của opennlp.tools.cmdline.parser gói được sử dụng để phân tích nội dung.
Sau đây là các bước cần làm để viết một chương trình phân tích cú pháp văn bản thô đã cho bằng cách sử dụng ParserTool lớp học.
Bước 1: Tải mô hình
Mô hình phân tích cú pháp văn bản được đại diện bởi lớp có tên ParserModel, thuộc về gói opennlp.tools.parser.
Để tải một mô hình tokenizer -
Tạo ra một InputStream đối tượng của mô hình (Khởi tạo FileInputStream và chuyển đường dẫn của mô hình ở định dạng Chuỗi đến phương thức khởi tạo của nó).
Khởi tạo ParserModel lớp và vượt qua InputStream (đối tượng) của mô hình như một tham số cho phương thức khởi tạo của nó, như được hiển thị trong khối mã sau.
//Loading parser model
InputStream inputStream = new FileInputStream(".../en-parserchunking.bin");
ParserModel model = new ParserModel(inputStream);
Bước 2: Tạo một đối tượng của lớp Parser
Các Parser lớp của gói opennlp.tools.parserđại diện cho một cấu trúc dữ liệu để chứa các thành phần phân tích cú pháp. Bạn có thể tạo một đối tượng của lớp này bằng cách sử dụng tĩnhcreate() phương pháp của ParserFactory lớp học.
Gọi create() phương pháp của ParserFactory bằng cách chuyển đối tượng mô hình được tạo ở bước trước, như hình dưới đây -
//Creating a parser Parser parser = ParserFactory.create(model);
Bước 3: Phân tích cú pháp câu
Các parseLine() phương pháp của ParserToollớp được sử dụng để phân tích cú pháp văn bản thô trong OpenNLP. Phương thức này chấp nhận -
một biến chuỗi đại diện cho văn bản được phân tích cú pháp.
một đối tượng phân tích cú pháp.
một số nguyên đại diện cho số lượng phân tích cú pháp được thực hiện.
Gọi phương thức này bằng cách chuyển cho câu các tham số sau: đối tượng phân tích cú pháp được tạo ở các bước trước và một số nguyên đại diện cho số lượng phân tích cú pháp cần thiết được thực hiện.
//Parsing the sentence
String sentence = "Tutorialspoint is the largest tutorial library.";
Parse topParses[] = ParserTool.parseLine(sentence, parser, 1);
Example
Sau đây là chương trình phân tích văn bản thô đã cho. Lưu chương trình này trong một tệp có tênParserExample.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();
}
}
Biên dịch và thực thi tệp Java đã lưu từ Dấu nhắc lệnh bằng các lệnh sau:
javac ParserExample.java
java ParserExample
Khi thực thi, chương trình trên đọc văn bản thô đã cho, phân tích cú pháp nó và hiển thị đầu ra sau:
(TOP (S (NP (NN Tutorialspoint)) (VP (VBZ is) (NP (DT the) (JJS largest) (NN
tutorial) (NN library.)))))