Je tente de former un modèle NER en utilisant la bibliothèque stanford-nlp. J'ai un fichier au format requis d'une taille de 6GB. Le fichier de configuration :
usePrevSequences=true
useClassFeature=true
useTypeSeqs2=true
useSequences=true
wordShape=chris2useLC
useTypeySequences=true
useDisjunctive=true
noMidNGrams=true
serializeTo=ner-model50.ser.gz
maxNGramLeng=6
useNGrams=true
usePrev=true
useNext=true
maxLeft=1
trainFile=trainData
map=word=0,answer=1
useWord=true
useTypeSeqs=true
Chaque phrase est divisée par une ligne vide comme suggéré dans la documentation. Donc quand j'exécute la commande avec mx25g
:
java -mx25g -cp stanford-ner.jar edu.stanford.nlp.ie.crf.CRFClassifier -prop config.prop
J'ai eu l'erreur :
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
À partir de la page FAQ de la bibliothèque, il est suggéré de diviser le fichier en plusieurs fichiers en cas d'erreur de mémoire.
Pour ce faire, vous devez modifier le fichier de configuration en utilisant l'option trainFileList
au lieu de l'option trainFile
. Maintenant, j'ai plusieurs fichiers d'environ 250MB chacun. J'ai eu l'erreur suivante en exécutant la même commande :
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
Il semble donc que la division des fichiers n'a pas aidé. Pensez-vous que diviser en fichiers encore plus petits aidera? ou cela n'a pas d'importance? Y a-t-il un moyen de contourner ce problème? Toute information est utile. Merci d'avance.