Genia Corpus로 Stanford Parser를 훈련시키는 방법은 무엇입니까?


93

Stanford Parser의 새 모델을 만드는 데 몇 가지 문제가 있습니다.

Stanford에서 마지막 버전도 다운로드했습니다. http://nlp.stanford.edu/software/lex-parser.shtml

그리고 여기에는 xml과 ptb (Penn Treebank)의 두 가지 형식의 Genia Corpus가 있습니다.

Standford Parser는 ptd 파일로 학습 할 수 있습니다. 그런 다음 생의학 텍스트 작업을 원하기 때문에 Genia Corpus를 다운로드했습니다.

http://categorizer.tmit.bme.hu/~illes/genia_ptb/ (더 이상 사용할 수없는 링크) (genia_ptb.tar.gz)

그런 다음 하나의 생체 의학 문장의 종속성 표현을 얻기 위해 짧은 Main 클래스가 있습니다.

    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 2013

1
그것은 당신을 도울 수도 있습니다 비디오, 시도 youtube.com/watch?v=w4rWpvBjBRI
락스 G

답변:


1

andrucz가 그의 의견에서 언급했듯이 문제의 실제 원인은 누락 된 수업에서 비롯된 것 같습니다.

라이브러리를 올바르게 가져 왔는지 확인하십시오 (그리고 라이브러리에 클래스 EnglishUnknownWordModelTra‌​iner가 포함되어 있는지 확인하십시오 .edu.stanford.nlp.parser.lexparser .

(Maven을 사용하는 경우 종속성을 올바르게 추가했는지 확인하십시오-빠른 Google이 이것을 발견했습니다 : Stanford Parser Maven Repo )


1

NLP 라이브러리가 올바르게 설치 되었습니까? 로그를 확인하여 오류가 없는지 확인하십시오. 대부분의 경우이 문제는 스탠포드 nltk 라이브러리가 올바르게 설치되지 않을 때 발생합니다.

확인하는 빠른 방법은 GUI를 실행하여 파서가 성공적으로 실행되면 라이브러리가 올바르게 설치되고 그렇지 않으면 오류가 발생하면 설치가 불량한 것입니다.

스탠포드 웹 사이트에서도 이것을 살펴 보라고 언급합니다.

파싱을 처음 사용하는 경우 GUI를 실행하여 파서를 사용해 볼 수 있습니다. Linux (lexparser-gui.sh) 및 Windows (lexparser-gui.bat) 용 스크립트가 포함되어 있습니다. Javadoc lexparser 패키지 문서와 LexicalizedParser 클래스 문서를 살펴보십시오. (포함 된 javadoc 디렉토리의 index.html 파일에서 웹 브라우저를 가리키고 해당 항목으로 이동합니다.) 일반적인 질문에 대한 답변은 파서 FAQ를 참조하십시오. 도움이되지 않는 경우 추가 지원을 위해 연락하는 방법에 대한 지침은 이메일 지침을 참조하십시오.


0

라이브러리를 올바르게 가져 왔는지 확인하고 {EnglishUnknownWordModelTra‌ iner} 클래스가 포함되어 있는지 확인하고 다운로드 한 버전이 Genia Corps에서 제대로 작동하는지 확인합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.