如何用Genia语料库来训练斯坦福分析器?
我有一些问题要为斯坦福大学parsing器创build一个新的模型。
我也下载了斯坦福大学的最新版本: http : //nlp.stanford.edu/software/lex-parser.shtml
在这里,Genia语料库有两种格式,xml和ptb(Penn Treebank)。
斯坦福德parsing器可以训练与ptd文件; 然后我下载了Genia语料库,因为我想用生物医学文本工作:
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
我怎样才能用这个语料库创build一个新的模型?
正如Andrucz在他的评论中指出的那样,你的问题的真正原因似乎源于一个缺课。
尝试检查您是否正确导入了库(并确保其包含EnglishUnknownWordModelTrainer
中的edu.stanford.nlp.parser.lexparser
类。
(如果您使用的是Maven,请确认您是否正确地添加了依赖关系 – 一个快速的谷歌浏览器: Stanford Parser Maven Repo )
NLP库安装是否正确? 检查日志以确认没有错误。 大多数情况下,当stanford nltk库没有正确安装时,会出现这个问题。
一个快速的方法来检查是通过运行GUI来尝试parsing器,如果运行成功,那么库正确安装,否则如果抛出错误,那么你知道你的安装很差。
斯坦福的网站也提到这个看看:
如果您不熟悉parsing,则可以通过运行GUI来尝试parsing器。 脚本包含在Linux(lexparser-gui.sh)和Windows(lexparser-gui.bat)中。 查看Javadoc lexparser包文档和LexicalizedParser类文档。 (将您的Web浏览器指向包含的javadoc目录中的index.html文件,然后导航到这些项目。)查看parsing器常见问题以获取常见问题的答案。 如果没有任何帮助,请参阅我们的电子邮件指南,了解有关如何联系我们以获得进一步帮助的说明。
检查您是否正确导入了库,并确保它包含类{EnglishUnknownWordModelTrainer},并确保您下载的版本与Genia Corps合适。