จะฝึก Stanford Parser กับ Genia Corpus ได้อย่างไร


93

ฉันมีปัญหาในการสร้างโมเดลใหม่สำหรับ Stanford Parser

ฉันได้ดาวน์โหลดเวอร์ชันล่าสุดจาก Stanford แล้ว: http://nlp.stanford.edu/software/lex-parser.shtml

และที่นี่ Genia Corpus ใน 2 รูปแบบ xml และ ptb (Penn Treebank)

Standford Parser สามารถฝึกกับไฟล์ ptd; จากนั้นฉันดาวน์โหลด Genia Corpus เพราะฉันต้องการทำงานกับข้อความชีวการแพทย์:

http://categorizer.tmit.bme.hu/~illes/genia_ptb/ (ลิงก์ไม่สามารถใช้ได้อีกต่อไป) (genia_ptb.tar.gz)

จากนั้นฉันมีคลาสหลักสั้น ๆ เพื่อรับการแสดงการพึ่งพาของประโยคชีวการแพทย์หนึ่งประโยค:

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

ฉันลองหลายวิธีแล้ว แต่ก็ได้ผลลัพธ์เหมือนเดิมเสมอ

ฉันมีข้อผิดพลาดในบรรทัดสุดท้าย นี่คือผลลัพธ์ของฉัน:

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

ฉันจะสร้างโมเดลใหม่ด้วยคลังข้อมูลนี้ได้อย่างไร




5
สาเหตุที่แท้จริงคือ "java.lang.ClassNotFoundException: edu.stanford.nlp.parser.lexparser.EnglishUnknownWordModelTrainer" ไม่nlp.stanford.edu/software/...มีระดับที่? ฉันไม่สามารถดาวน์โหลด 900MB ในขณะนี้เพื่อตรวจสอบ
andrucz

1
ลองดูวิดีโอนี้ดูครับ youtube.com/watch?v=w4rWpvBjBRI
Laxman G

คำตอบ:


1

ตามที่ andrucz ระบุไว้ในความคิดเห็นของเขาสาเหตุที่แท้จริงของปัญหาของคุณดูเหมือนจะมาจากชั้นเรียนที่หายไป

ลองตรวจสอบว่าคุณนำเข้าห้องสมุดของคุณถูกต้องหรือไม่ (และตรวจสอบให้แน่ใจว่ามีชั้นเรียนEnglishUnknownWordModelTra‌​inerอยู่ในedu.stanford.nlp.parser.lexparser.

(หากคุณกำลังใช้ Maven ให้ตรวจสอบว่าคุณได้เพิ่มการอ้างอิงอย่างถูกต้องหรือไม่ - Google ด่วนแนะนำสิ่งนี้: Stanford Parser Maven Repo )


1

ไลบรารี NLP ติดตั้งอย่างถูกต้องหรือไม่? ตรวจสอบในบันทึกเพื่อตรวจสอบว่าไม่มีข้อผิดพลาด ปัญหาส่วนใหญ่เกิดขึ้นเมื่อมีการติดตั้งไลบรารี stanford nltk ไม่ถูกต้อง

วิธีที่รวดเร็วในการตรวจสอบคือการเรียกใช้ GUI เพื่อลองใช้ตัวแยกวิเคราะห์หากทำงานได้สำเร็จจากนั้นไลบรารีจะติดตั้งอย่างถูกต้องหากมีข้อผิดพลาดแสดงว่าการติดตั้งของคุณไม่ดี

เว็บไซต์ Stanford ยังกล่าวถึงสิ่งนี้ด้วย:

หากคุณยังใหม่กับการแยกวิเคราะห์คุณสามารถเริ่มต้นด้วยการเรียกใช้ GUI เพื่อลองใช้โปรแกรมแยกวิเคราะห์ สคริปต์รวมอยู่ใน linux (lexparser-gui.sh) และ Windows (lexparser-gui.bat) ดูเอกสารประกอบแพ็คเกจ Javadoc lexparser และเอกสารประกอบคลาส LexicalizedParser (ชี้เว็บเบราว์เซอร์ของคุณไปที่ไฟล์ index.html ในไดเร็กทอรี javadoc ที่รวมอยู่และไปที่รายการเหล่านั้น) ดูคำถามที่พบบ่อยของโปรแกรมวิเคราะห์คำตอบสำหรับคำถามทั่วไป หากไม่สามารถช่วยได้โปรดดูหลักเกณฑ์ทางอีเมลของเราสำหรับคำแนะนำในการติดต่อเราเพื่อขอความช่วยเหลือเพิ่มเติม


0

ตรวจสอบว่าคุณได้นำเข้าไลบรารีอย่างถูกต้องหรือไม่และตรวจสอบให้แน่ใจว่ามีคลาส {EnglishUnknownWordModelTra‌ iner} และตรวจสอบให้แน่ใจว่าเวอร์ชันที่คุณดาวน์โหลดทำงานกับ Genia Corps อย่างถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.