Làm thế nào để đào tạo Stanford Parser với Genia Corpus?


93

Tôi gặp một số vấn đề để tạo một mô hình mới cho Stanford Parser.

Tôi cũng đã tải xuống phiên bản cuối cùng từ Stanford: http://nlp.stanford.edu/software/lex-parser.shtml

Và đây, Genia Corpus ở 2 định dạng xml và ptb (Penn Treebank).

Standford Parser có thể đào tạo với các tệp ptd; sau đó tôi tải xuống Genia Corpus, vì tôi muốn làm việc với văn bản y sinh:

http://categorizer.tmit.bme.hu/~illes/genia_ptb/ (liên kết không còn nữa) (genia_ptb.tar.gz)

Sau đó, tôi có một lớp Chính ngắn để có được biểu diễn phụ thuộc của một câu y sinh:

    String treebankPath = "/stanford-parser-2012-05-22/genia_ptb/GENIA_treebank_v1/ptb";

    Treebank tr = op.tlpParams.diskTreebank();
    tr.loadPath(treebankPath);  
    LexicalizedParser lpc=LexicalizedParser.trainFromTreebank(tr,op);

Tôi đã thử nhiều cách khác nhau, nhưng luôn nhận được cùng một kết quả.

Tôi có một lỗi ở dòng cuối cùng. Đây là đầu ra của tôi:

Currently Fri Jun 01 15:02:57 CEST 2012
Options parameters:
useUnknownWordSignatures 2
smoothInUnknownsThreshold 100
smartMutation false
useUnicodeType false
unknownSuffixSize 1
unknownPrefixSize 1
flexiTag true
useSignatureForKnownSmoothing false
parserParams edu.stanford.nlp.parser.lexparser.EnglishTreebankParserParams
forceCNF false
doPCFG true
doDep false
freeDependencies false
directional true
genStop true
distance true
coarseDistance false
dcTags false
nPrune false
Train parameters: smooth=false PA=true GPA=false selSplit=true (400.0; deleting [VP^SQ, VP^VP, VP^SINV, VP^NP]) mUnary=1 mUnaryTags=false sPPT=false tagPA=true tagSelSplit=false (0.0) rightRec=true leftRec=false collinsPunc=false markov=true mOrd=2 hSelSplit=true (10) compactGrammar=3 postPA=false postGPA=false selPSplit=false (0.0) tagSelPSplit=false (0.0) postSplitWithBase=false fractionBeforeUnseenCounting=0.5 openClassTypesThreshold=50 preTransformer=null taggedFiles=null
Using EnglishTreebankParserParams splitIN=4 sPercent=true sNNP=0 sQuotes=false sSFP=false rbGPA=false j#=false jJJ=false jNounTags=false sPPJJ=false sTRJJ=false sJJCOMP=false sMoreLess=false unaryDT=true unaryRB=true unaryPRP=false reflPRP=false unaryIN=false sCC=1 sNT=false sRB=false sAux=2 vpSubCat=false mDTV=2 sVP=3 sVPNPAgr=false sSTag=0 mVP=false sNP%=0 sNPPRP=false dominatesV=1 dominatesI=false dominatesC=false mCC=0 sSGapped=4 numNP=false sPoss=1 baseNP=1 sNPNNP=0 sTMP=1 sNPADV=1 cTags=true rightPhrasal=false gpaRootVP=false splitSbar=0 mPPTOiIN=0
Binarizing trees...done. Time elapsed: 141 ms
Extracting PCFG...done. Time elapsed: 56 ms
Compiling grammar...done Time elapsed: 1 ms
Extracting Lexicon...Exception in thread "main" edu.stanford.nlp.util.ReflectionLoading$ReflectionLoadingException: edu.stanford.nlp.util.MetaClass$ClassCreationException: java.lang.ClassNotFoundException: edu.stanford.nlp.parser.lexparser.EnglishUnknownWordModelTrainer
    at edu.stanford.nlp.util.ReflectionLoading.loadByReflection(ReflectionLoading.java:39)
    at edu.stanford.nlp.parser.lexparser.BaseLexicon.initializeTraining(BaseLexicon.java:335)
    at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromTreebank(LexicalizedParser.java:800)
    at edu.stanford.nlp.parser.lexparser.LexicalizedParser.trainFromTreebank(LexicalizedParser.java:226)
    at edu.stanford.nlp.parser.lexparser.LexicalizedParser.trainFromTreebank(LexicalizedParser.java:237)
    at ABravoDemo.main(ABravoDemo.java:35)
Caused by: edu.stanford.nlp.util.MetaClass$ClassCreationException: java.lang.ClassNotFoundException: edu.stanford.nlp.parser.lexparser.EnglishUnknownWordModelTrainer
    at edu.stanford.nlp.util.MetaClass.createFactory(MetaClass.java:353)
    at edu.stanford.nlp.util.MetaClass.createInstance(MetaClass.java:370)
    at edu.stanford.nlp.util.ReflectionLoading.loadByReflection(ReflectionLoading.java:37)
    ... 5 more
Caused by: java.lang.ClassNotFoundException: edu.stanford.nlp.parser.lexparser.EnglishUnknownWordModelTrainer
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at edu.stanford.nlp.util.MetaClass$ClassFactory.construct(MetaClass.java:119)
    at edu.stanford.nlp.util.MetaClass$ClassFactory.<init>(MetaClass.java:192)
    at edu.stanford.nlp.util.MetaClass$ClassFactory.<init>(MetaClass.java:53)
    at edu.stanford.nlp.util.MetaClass.createFactory(MetaClass.java:349)
    ... 7 more

Làm cách nào để tạo một mô hình mới với kho tài liệu này?




5
Nguyên nhân thực sự là "java.lang.ClassNotFoundException: edu.stanford.nlp.parser.lexparser.EnglishUnknownWordModelTrainer". Liệu nlp.stanford.edu/software/... có lớp đó? Tôi không thể tải xuống 900MB tại thời điểm này để kiểm tra.
andrucz

1
Hãy thử video này nó có thể giúp bạn, youtube.com/watch?v=w4rWpvBjBRI
Laxman G

Câu trả lời:


1

Như andrucz đã nêu trong bình luận của mình, nguyên nhân thực sự của vấn đề của bạn dường như xuất phát từ một lớp học bị mất tích.

Hãy thử kiểm tra xem bạn đã nhập đúng thư viện của mình hay chưa (và đảm bảo rằng nó chứa lớp EnglishUnknownWordModelTra‌​inertrong đó edu.stanford.nlp.parser.lexparser.

(Nếu bạn đang sử dụng Maven, hãy xác minh rằng bạn đã thêm chính xác phần phụ thuộc - google nhanh chóng giải quyết vấn đề này: Stanford Parser Maven Repo )


1

Thư viện NLP đã cài đặt đúng cách chưa? Kiểm tra nhật ký để xác minh không có lỗi. Hầu hết các lần vấn đề này xảy ra khi thư viện stanford nltk không cài đặt đúng cách.

Một cách nhanh chóng để kiểm tra là chạy GUI để thử trình phân tích cú pháp nếu điều đó chạy thành công thì thư viện được cài đặt chính xác, ngược lại nếu điều đó phát sinh lỗi thì bạn biết rằng cài đặt của mình kém.

Trang web Stanford cũng đề cập đến điều này, hãy xem:

Nếu bạn chưa quen với phân tích cú pháp, bạn có thể bắt đầu bằng cách chạy GUI để thử trình phân tích cú pháp. Tập lệnh được bao gồm cho linux (lexparser-gui.sh) và Windows (lexparser-gui.bat). Hãy xem tài liệu gói Javadoc lexparser và tài liệu lớp LexicalizedParser. (Trỏ trình duyệt web của bạn vào tệp index.html trong thư mục javadoc đi kèm và điều hướng đến các mục đó.) Xem Câu hỏi thường gặp về trình phân tích cú pháp để biết câu trả lời cho các câu hỏi thường gặp. Nếu điều đó không hữu ích, vui lòng xem nguyên tắc email của chúng tôi để biết hướng dẫn về cách liên hệ với chúng tôi để được hỗ trợ thêm.


0

Kiểm tra xem bạn đã nhập đúng thư viện hay chưa và đảm bảo rằng nó đang chứa lớp {EnglishUnknownWordModelTra‌ trơ} và cũng đảm bảo rằng phiên bản bạn đã tải xuống hoạt động đúng với Genia Corps.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.