¿Cómo entrenar al analizador de Stanford con Genia Corpus?

93

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 probado diferentes formas, pero siempre obtengo el mismo resultado.

Tengo un error en la última línea. Esta es mi salida:

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?

nathan
fuente
2
comprobar: stackoverflow.com/a/3158157/2128327
Khaled.K
5
La causa real es "java.lang.ClassNotFoundException: edu.stanford.nlp.parser.lexparser.EnglishUnknownWordModelTrainer". ¿Tiene nlp.stanford.edu/software/… esa clase? No puedo descargar 900 MB en este momento para comprobarlo.
andrucz
1
Pruebe este video que puede ayudarlo, youtube.com/watch?v=w4rWpvBjBRI
Laxman G

Respuestas:

1

Como dijo andrucz en su comentario, la verdadera causa de su problema parece provenir de una clase faltante.

Intente verificar si importó correctamente su biblioteca (y asegúrese de que contenga la clase EnglishUnknownWordModelTra‌​ineren edu.stanford.nlp.parser.lexparser.

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

Maximilian Schirm
fuente
1

¿Se instaló correctamente la biblioteca de PNL? Consulte los registros para verificar que no haya errores. La mayoría de las veces, este problema se produce cuando la biblioteca nltk de stanford no se instala correctamente.

Una forma rápida de verificar es ejecutando la GUI para probar el analizador si se ejecuta correctamente y luego la biblioteca se instaló correctamente; de ​​lo contrario, si arroja errores, entonces sabrá que su instalación fue deficiente.

El sitio web de Stanford también menciona esta prueba:

Si es nuevo en el análisis, puede comenzar ejecutando la GUI para probar el analizador. Se incluyen scripts 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 hasta esos elementos). Consulte 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.

Binny Peza
fuente
0

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

Divya Mishra
fuente