2012-07-23 32 views
5

Làm thế nào để trích xuất SVO bằng NLP trong java, tôi mới trong nlp.i hiện đang sử dụng opennlp. nhưng làm thế nào để làm trong java với một perticular trong câu java.Làm thế nào để trích xuất đối tượng Verb đối tượng bằng cách sử dụng nlp java

LexicalizedParser lp = **new LexicalizedParser("englishPCFG.ser.gz");** 
String[] sent = { "This", "is", "an", "easy", "sentence", "." }; 
Tree parse = (Tree) lp.apply(Arrays.asList(sent)); 
parse.pennPrint(); 
System.out.println(); 
TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed"); 
tp.print(parse); 

nhận được một lỗi biên soạn tại LexicalizedParser mới ("englishPCFG.ser.gz"); ** Các constructor LexicalizedParser (String) là undefined

Trả lời

0

Đây là mã từ phân tích cú pháp phụ thuộc Stanford, không từ OpenNLP. Thực hiện theo ví dụ được đưa ra trong ParserDemo.java (và/hoặc ParserDemo2.java) được bao gồm trong thư mục phân tích cú pháp stanford và đảm bảo rằng mã trình diễn của bạn và stanford-parser.jar trong classpath của bạn là từ cùng một phiên bản của trình phân tích cú pháp. Tôi nghi ngờ bạn đang sử dụng phiên bản mới hơn của trình phân tích cú pháp với mã demo cũ hơn.

0

Bạn có thể sử dụng Stanford CoreNLP. Kiểm tra câu trả lời here cho "thuật toán thô" cách nhận đối tượng-vị ngữ chủ ngữ từ một câu.

+0

sử dụng textrunner là api tốt hơn cho điều này –

2

có vẻ như bạn đang sử dụng phiên bản mới của trình phân tích cú pháp NLP của Stanford. trong phiên bản mới của các nhà xây dựng phân tích cú pháp này không được sử dụng để cấp phát bộ nhớ, thay vào đó chúng tôi đang có các chức năng chuyên dụng. bạn có thể sử dụng:

LexicalizedParser lp = LexicalizedParser.loadModel("englishPCFG.ser.gz"); 

bạn có thể sử dụng các quá tải khác nhau của API này.

Stanford documentation for various overloads of loadModel

0

Bạn có thể sử dụng reverb. Kiểm tra câu trả lời ở đây để "reVerb" cách lấy thông tin trích xuất từ ​​câu

Các vấn đề liên quan