the stanford spanish software pos parser natural language framework english edu corenlp java nlp stanford-nlp

java - spanish - Cómo entrenar al Stanford Parser con Genia Corpus?



stanford nlp java (3)

Tengo algunos problemas para crear un nuevo modelo para Stanford Parser.

También descargué la última versión de Stanford: http://nlp.stanford.edu/software/lex-parser.shtml

Y aquí, Genia Corpus en 2 formatos, xml y ptb (Penn Treebank).

Standford Parser puede entrenar con archivos ptd; luego descargué Genia Corpus, porque quiero trabajar con texto biomédico:

http://categorizer.tmit.bme.hu/~illes/genia_ptb/ (el enlace ya no está disponible) (genia_ptb.tar.gz)

Luego, tengo una clase principal corta para obtener la representación de dependencia de una oración 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);

He intentado de diferentes maneras, pero siempre obtengo el mismo resultado.

Tengo un error en la última línea. Este es mi resultado:

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

¿Cómo podría crear un nuevo modelo con este corpus?


¿La biblioteca NLP se instaló correctamente? Verifique los registros para verificar que no haya errores. La mayoría de las veces este problema surge cuando la biblioteca stanford nltk no se instala correctamente.

Una forma rápida de comprobarlo es ejecutar la GUI para probar el analizador si se ejecuta correctamente y luego la biblioteca se instala correctamente. De lo contrario, si eso arroja errores, entonces sabrá que la instalación fue deficiente.

El sitio web de Stanford también menciona que eche un vistazo:

Si es nuevo en el análisis sintáctico, puede comenzar ejecutando la GUI para probar el analizador. Los scripts se incluyen para Linux (lexparser-gui.sh) y Windows (lexparser-gui.bat). Eche un vistazo a la documentación del paquete Javadoc lexparser y la documentación de la clase LexicalizedParser. (Apunte su navegador web al archivo index.html en el directorio javadoc incluido y navegue a esos elementos). Mire las preguntas frecuentes del analizador para obtener respuestas a preguntas comunes. Si nada de eso ayuda, consulte nuestras pautas de correo electrónico para obtener instrucciones sobre cómo comunicarse con nosotros para obtener más ayuda.


Como Andrucz declaró en su comentario, la verdadera causa de su problema parece provenir de una clase perdida.

Intente comprobar si ha importado correctamente su biblioteca (y asegúrese de que contenga la clase EnglishUnknownWordModelTra‌​iner en edu.stanford.nlp.parser.lexparser .

(Si está usando Maven, verifique que haya agregado correctamente la dependencia, un rápido broug de Google esto: Stanford Parser Maven Repo )


Compruebe si ha importado correctamente la biblioteca y asegúrese de que contiene la clase {EnglishUnknownWordModelTra iner} y también asegúrese de que la versión que descargó correctamente funcione con Genia Corps.