web-dev-qa-db-fra.com

Comment entraîner l'analyseur Stanford avec Genia Corpus?

J'ai quelques problèmes pour créer un nouveau modèle pour Stanford Parser.

J'ai également téléchargé la dernière version de Stanford: http://nlp.stanford.edu/software/Lex-parser.shtml

Et ici, Genia Corpus en 2 formats, xml et ptb (Penn Treebank).

Standford Parser peut s’entraîner avec des fichiers ptd; puis j'ai téléchargé Genia Corpus, parce que je veux travailler avec du texte biomédical:

http://categorizer.tmit.bme.hu/~illes/genia_ptb/(lien n'est plus disponible) (genia_ptb.tar.gz)

Ensuite, j'ai une petite classe principale pour obtenir une représentation de dépendance d'une phrase biomédicale:

    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);

J'ai essayé différentes méthodes, mais j'ai toujours le même résultat.

J'ai une erreur dans la dernière ligne. Ceci est ma sortie:

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

Comment créer un nouveau modèle avec ce corpus?

92
nathan

Comme Andrucz l'a déclaré dans son commentaire, la cause réelle de votre problème semble provenir d'une classe manquante.

Essayez de vérifier si vous avez correctement importé votre bibliothèque (et assurez-vous qu'elle contient la classe EnglishUnknownWordModelTra‌​iner dans edu.stanford.nlp.parser.lexparser.

(Si vous utilisez Maven, vérifiez que vous avez correctement ajouté la dépendance - une rapide recherche sur Google: Analyseur Stanford Maven Repo )

1
Maximilian Schirm

La bibliothèque de PNL s’est-elle installée correctement? Consultez les journaux pour vérifier qu’il n’ya pas d’erreur. La plupart du temps, ce problème survient lorsque la bibliothèque stanford nltk ne s’installe pas correctement.

Un moyen rapide de vérifier est d’exécuter l’interface graphique pour essayer l’analyseur s’il fonctionne correctement, puis la bibliothèque est installée correctement. Sinon, si vous relevez des erreurs, vous savez que votre installation est médiocre.

Le site Web de Stanford mentionne également ceci:

Si vous débutez dans l'analyse, vous pouvez commencer par exécuter l'interface graphique pour essayer l'analyseur. Les scripts sont inclus pour linux (lexparser-gui.sh) et Windows (lexparser-gui.bat). Jetez un coup d’oeil à la documentation du paquet Javadoc lexparser et à la documentation de la classe LexicalizedParser. (Pointez votre navigateur Web sur le fichier index.html du répertoire javadoc inclus et accédez à ces éléments.) Consultez l'analyseur FAQ pour connaître les réponses aux questions courantes. Si rien de tout cela ne vous aide, veuillez consulter nos consignes relatives aux courriers électroniques pour savoir comment nous contacter pour obtenir de l'aide.

1
Binny Peza

Vérifiez si vous avez correctement importé la bibliothèque et assurez-vous qu'elle contient la classe {EnglishUnknownWordModelTra‌ iner} et assurez-vous également que la version que vous avez téléchargée fonctionne correctement avec Genia Corps.

0
Divya Mishra