2012-04-16 38 views
9

Tôi đang sử dụng tài liệu ví dụ về API NameFinder API của OpenNLP. Sau khi khởi tạo tên Finder tài liệu sử dụng đoạn mã sau cho văn bản đầu vào:Trình tìm kiếm tên OpenNLP

for (String document[][] : documents) { 

    for (String[] sentence : document) { 
    Span nameSpans[] = nameFinder.find(sentence); 
    // do something with the names 
    } 

    nameFinder.clearAdaptiveData() 
} 

Tuy nhiên khi tôi mang cái này vào nhật thực của tài liệu '(không phải là 'tài liệu') biến được đem lại cho tôi một lỗi nói rằng biến tài liệu không thể được giải quyết. Tài liệu tham chiếu tới biến mảng 'tài liệu' là gì? Tôi có cần khởi tạo một mảng được gọi là 'tài liệu' có chứa các tệp txt để lỗi này biến mất không?

Cảm ơn sự giúp đỡ của bạn.

Trả lời

16

OpenNLP documentation nói rằng văn bản đầu vào phải được phân đoạn thành tài liệu, câu và mã thông báo. Đoạn mã bạn cung cấp minh họa cách xử lý một số tài liệu.

Nếu bạn chỉ có một tài liệu bạn không cần đầu tiên, chỉ cần một tài liệu bên trong với mảng câu, được tạo thành bởi một mảng mã thông báo.

Để tạo một mảng câu từ một tài liệu bạn có thể sử dụng OpenNLP SentenceDetector, và đối với mỗi câu bạn có thể sử dụng Mã thông báo OpenNLP để nhận được mảng mã thông báo.

Mã của bạn sẽ trông như thế này:

// somehow get the contents from the txt file 
//  and populate a string called documentStr 

String sentences[] = sentenceDetector.sentDetect(documentStr); 
for (String sentence : sentences) { 
    String tokens[] = tokenizer.tokenize(sentence); 
    Span nameSpans[] = nameFinder.find(tokens); 
    // do something with the names 
    System.out.println("Found entity: " + Arrays.toString(Span.spansToStrings(nameSpans, tokens))); 
} 

Bạn có thể học cách sử dụng các SentenceDetector và Tokenizer từ OpenNLP documentation tài liệu.

+0

Cảm ơn bạn đã trả lời! Tôi đã cắm nó vào nhưng vẫn gặp lỗi: "Loại không phù hợp: không thể chuyển đổi từ kiểu phần tử thành String thành chuỗi []" và biến câu bị lỗi trên tôi trên dòng 5: cho (String [] câu: câu) { – Chris

+0

Có, ở đó là một lỗi. Chỉ cần xóa [] khỏi cho (Chuỗi câu []: câu). Cảm ơn bạn. – wcolen

+0

wcolen, cảm ơn tất cả sự giúp đỡ của bạn. Vấn đề duy nhất khi tôi xóa cú pháp mảng [] là dòng kế tiếp bây giờ sủa vào tôi vì phương thức find nhận một mảng làm đối số, do đó câu không hoạt động: Span nameSpans [] = nameFinder.find (câu); – Chris

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