2011-12-25 25 views

Trả lời

11

Gần đây, tôi đã gặp sự cố tương tự và đã viết một số ghi chú trên blog để sử dụng các công cụ OpenNLP 1.5.x. Đó là một chút dày đặc để sao chép toàn bộ, do đó, here's a link with more details.


Ở mức cao, bạn cần tải OpenNLP coreference model libraries thích hợp và cũng là WordNet 3.0 dictionary. Với những phụ thuộc đó, việc khởi tạo đối tượng liên kết là khá đơn giản:

// LinkerMode should be TEST 
//Note: I tried LinkerMode.EVAL before realizing that this was the problem 
Linker _linker = new DefaultLinker("lib/opennlp/coref", LinkerMode.TEST); 

Bằng cách sử dụng Trình liên kết, tuy nhiên ít rõ ràng hơn một chút. Bạn cần phải:

  1. Phá vỡ các nội dung thành câu và các thẻ tương ứng
  2. Tạo một đối tượng Parse cho mỗi câu
  3. Bọc mỗi câu Phân tích để chỉ ra thứ tự câu:

    final DefaultParse parseWrapper = new DefaultParse(parse, idx);
  4. Lặp lại trên mỗi câu phân tích cú pháp ane sử dụng Trình liên kết để nhận các đối tượng Đề cập từ mỗi phân tích cú pháp:

    final Mention[] extents = 
        _linker.getMentionFinder().getMentions(parseWrapper);
  5. Cuối cùng, sử dụng Linker để xác định các thực thể khác biệt trên tất cả các đối tượng đề cập đến:

    DiscourseEntity[] entities = _linker.getEntities(arrayOfAllMentions);
+0

Ông có thể xin cho biết tôi làm thế nào điều này sẽ được thực hiện từ dòng lệnh? Cảm ơn bạn. – Haritz

+0

Trong blog bạn cho biết bạn tải các mô hình bằng cách sử dụng 'getResourceAsStream' nhưng cuối cùng không mô tả cách bạn đã nói với Linker tải các mô hình bằng cách sử dụng' getResourceAsStream'. Làm thế nào bạn thực sự tải các mô hình? – justhalf

+0

@justhalf Đó thực sự chỉ là lỗi sao chép + dán từ bước trước trên blog. 'Linker' lấy đường dẫn đến các mô hình lõi trực tiếp, do đó không cần sử dụng' getResourceAsStream'. Cảm ơn vì đã bắt được điều đó! – dpdearing

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