Stanford Parser'ı Genia Corpus ile nasıl eğitebilirim?


93

Stanford Parser için yeni bir model oluşturmakta bazı problemlerim var.

Son sürümü de Stanford'dan indirdim: http://nlp.stanford.edu/software/lex-parser.shtml

Ve burada, 2 formatta Genia Corpus, xml ve ptb (Penn Treebank).

Standford Parser, ptd dosyalarıyla eğitim yapabilir; sonra Genia Corpus'u indirdim çünkü biyomedikal metinle çalışmak istiyorum:

http://categorizer.tmit.bme.hu/~illes/genia_ptb/ (bağlantı artık mevcut değil) (genia_ptb.tar.gz)

Ardından, bir biyomedikal cümlenin bağımlılık temsilini almak için kısa bir Ana sınıfım var:

    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);

Farklı yollar denedim ama hep aynı sonucu aldım.

Son satırda bir hata var. Bu benim çıktım:

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

Bu külliyatla nasıl yeni bir model oluşturabilirim?




5
Gerçek neden "java.lang.ClassNotFoundException: edu.stanford.nlp.parser.lexparser.EnglishUnknownWordModelTrainer" dir. Does nlp.stanford.edu/software/... o sınıfı var? Şu anda kontrol etmek için 900 MB indiremiyorum.
andrucz

1
Bu videoyu deneyin, size yardımcı olabilir, youtube.com/watch?v=w4rWpvBjBRI
Laxman G

Yanıtlar:


1

Andrucz'ın yorumunda belirttiği gibi, sorunun gerçek nedeni eksik bir sınıftan kaynaklanıyor gibi görünüyor.

Kitaplığınızı doğru şekilde içe aktarıp aktarmadığınızı kontrol etmeyi deneyin (ve EnglishUnknownWordModelTra‌​ineriçinde sınıfı içerdiğinden emin olun edu.stanford.nlp.parser.lexparser.

(Maven kullanıyorsanız, bağımlılığı doğru şekilde eklediğinizi doğrulayın - hızlı bir google şuna göz atın: Stanford Parser Maven Repo )


1

NLP kitaplığı doğru bir şekilde kuruldu mu? Hata olmadığını doğrulamak için günlükleri kontrol edin. Stanford nltk kitaplığı doğru yüklenmediğinde bu sorun çoğu zaman ortaya çıkar.

Kontrol etmenin hızlı bir yolu, GUI'yi çalıştırarak ayrıştırıcıyı başarılı bir şekilde çalışırsa, ardından kitaplık doğru şekilde kurulur, aksi takdirde hata verirse, kurulumunuzun zayıf olduğunu anlarsınız.

Stanford web sitesi de bundan bahsediyor:

Ayrıştırmada yeniyseniz, ayrıştırıcıyı denemek için GUI'yi çalıştırarak başlayabilirsiniz. Linux (lexparser-gui.sh) ve Windows (lexparser-gui.bat) için betikler dahildir. Javadoc lexparser paketi belgelerine ve LexicalizedParser sınıfı belgelerine bir göz atın. (Web tarayıcınızı, dahil olan javadoc dizinindeki index.html dosyasına doğrultun ve bu öğelere gidin.) Genel soruların cevapları için ayrıştırıcı SSS bölümüne bakın. Bunların hiçbiri yardımcı olmazsa, daha fazla yardım için bize nasıl ulaşacağınıza ilişkin talimatlar için lütfen e-posta yönergelerimize bakın.


0

Kitaplığı doğru bir şekilde içe aktardığınızı kontrol edin ve {EnglishUnknownWordModelTra‌ iner} sınıfını içerdiğinden ve ayrıca indirdiğiniz sürümün Genia Corps ile düzgün çalıştığından emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.