2013-08-28 46 views
20

Khi xây dựng các ứng dụng mẫu từ trang web của Stanford CoreNLP, tôi chạy vào một ngoại lệ tò mò:Maven thất bại trong việc tải các mô hình CoreNLP

Exception in thread "main" java.lang.RuntimeException: edu.stanford.nlp.io.RuntimeIOException: Unrecoverable error while loading a tagger model 
at edu.stanford.nlp.pipeline.StanfordCoreNLP$4.create(StanfordCoreNLP.java:493) 
… 
Caused by: java.io.IOException: Unable to resolve "edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger" as either class path, filename or URL 
… 

này chỉ xảy ra khi tài sản pos và những người thân sau khi nó được đưa vào tính chất.

Properties props = new Properties(); 
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref"); 
StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 

Đây là sự phụ thuộc từ pom.xml của tôi:

<dependencies> 
<dependency> 
    <groupId>edu.stanford.nlp</groupId> 
    <artifactId>stanford-corenlp</artifactId> 
    <version>3.2.0</version> 
    <scope>compile</scope> 
</dependency> 
</dependencies> 

Trả lời

43

Tôi thực sự tìm thấy câu trả lời cho rằng trong mô tả vấn đề thắc mắc khác về Stackoverflow.

Quoting W.P. McNeill:

Maven không tải về mô hình tập tin tự động, nhưng chỉ khi bạn thêm các mô hình dòng vào .pom. Dưới đây là đoạn mã .pom tìm nạp cả mã và mô hình.

Đây là những gì phụ thuộc của tôi trông giống như bây giờ:

<dependencies> 
<dependency> 
    <groupId>edu.stanford.nlp</groupId> 
    <artifactId>stanford-corenlp</artifactId> 
    <version>3.2.0</version> 
</dependency> 
<dependency> 
    <groupId>edu.stanford.nlp</groupId> 
    <artifactId>stanford-corenlp</artifactId> 
    <version>3.2.0</version> 
    <classifier>models</classifier> 
</dependency> 
</dependencies> 

Phần quan trọng cần lưu ý là sự xâm nhập <classifier>models</classifier> ở phía dưới. Để Eclipse duy trì cả hai tham chiếu, bạn cần định cấu hình phụ thuộc cho mỗi stanford-corenlp-3.2.0stanford-corenlp-3.2.0-models.

+9

Trong trường hợp bạn đang sử dụng SBT, bạn có thể thêm các dòng sau vào chuỗi phụ thuộc thư viện: "edu.stanford.nlp"% "stanford-corenlp"% "3.2.0", "edu.stanford.nlp "%" stanford-corenlp "%" 3.2.0 "phân loại" mô hình " – eliasah

+1

@eliasah: Tôi đang làm điều tương tự như bạn đã nêu trong nhận xét của bạn, nhưng nó không tải xuống các mô hình! Của nó được 2 giờ và vẫn còn nó đã không tải về bất cứ điều gì liên quan đến các mô hình! –

0

Trong trường hợp bạn cần phải sử dụng các mô hình cho các ngôn ngữ khác (như Trung Quốc, Tây Ban Nha, hay tiếng Ả Rập), bạn có thể thêm đoạn sau vào file pom.xml của bạn (thay thế models-chinese với models-spanish hoặc models-arabic cho hai ngôn ngữ này, tương ứng):

<dependency> 
    <groupId>edu.stanford.nlp</groupId> 
    <artifactId>stanford-corenlp</artifactId> 
    <version>3.8.0</version> 
    <classifier>models-chinese</classifier> 
</dependency> 
Các vấn đề liên quan