Tenho alguns problemas para criar um novo modelo para Stanford Parser.
Também baixei a última versão de Stanford: http://nlp.stanford.edu/software/lex-parser.shtml
E aqui, Genia Corpus em 2 formatos, xml e ptb (Penn Treebank).
Standford Parser pode treinar com arquivos ptd; aí baixei Genia Corpus, porque quero trabalhar com texto biomédico:
http://categorizer.tmit.bme.hu/~illes/genia_ptb/ (link não está mais disponível) (genia_ptb.tar.gz)
Então, eu tenho uma curta classe principal para obter representação de dependência de uma frase biomédica:
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);
Tentei maneiras diferentes, mas sempre obtive o mesmo resultado.
Eu tenho um erro na última linha. Esta é a minha saída:
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
Como posso criar um novo modelo com este corpus?
java
nlp
stanford-nlp
Nathan
fonte
fonte
Respostas:
Como andrucz afirmou em seu comentário, a verdadeira causa do seu problema parece derivar de uma aula ausente.
Tente verificar se você importou corretamente sua biblioteca (e certifique-se de que ela contém a classe
EnglishUnknownWordModelTrainer
emedu.stanford.nlp.parser.lexparser
.(Se você estiver usando o Maven, verifique se adicionou a dependência corretamente - um rápido google para fazer isso: Stanford Parser Maven Repo )
fonte
A biblioteca NLP foi instalada corretamente? Verifique os logs para verificar se não há erros. Na maioria das vezes, esse problema ocorre quando a biblioteca stanford nltk não é instalada corretamente.
Uma maneira rápida de verificar é executando a GUI para testar o analisador, se ele for executado com êxito, a biblioteca instalada corretamente, caso contrário, se isso gerar erros, você sabe que sua instalação foi ruim.
O site de Stanford também menciona isso, dê uma olhada:
Se você é novo na análise, pode começar executando a GUI para experimentar o analisador. Os scripts são incluídos para linux (lexparser-gui.sh) e Windows (lexparser-gui.bat). Dê uma olhada na documentação do pacote Javadoc lexparser e na documentação da classe LexicalizedParser. (Aponte seu navegador da web para o arquivo index.html no diretório javadoc incluído e navegue até esses itens.) Consulte as Perguntas frequentes do analisador para obter respostas a perguntas comuns. Se nada disso ajudar, consulte nossas diretrizes por e-mail para obter instruções sobre como entrar em contato conosco para obter mais assistência.
fonte
Verifique se você importou a biblioteca corretamente e certifique-se de que ela contém a classe {EnglishUnknownWordModelTra iner} e também certifique-se de que a versão que você baixou funciona corretamente com Genia Corps.
fonte