2010-08-10 4 views
1

J'ai à marquer phrase en utilisant l'analyseur stanford« AWT-EventQueue-1 » java.lang.OutOfMemoryError: Java heap space

pour chaque phrase que je charge le fichier EnglishPCFGrammer et trouve les balises à l'aide analyseur stanford, il fonctionne bon pour phrase mais quand je donne des phrases multiples, je reçois cette exception .. quelqu'un aider


Loading parser from serialized file englishPCFG.ser.gz ... done [7.7 sec]. 
Exception in thread "AWT-EventQueue-1" java.lang.OutOfMemoryError: Java heap space 
     at edu.stanford.nlp.parser.lexparser.ExhaustivePCFGParser.createArrays(ExhaustivePCFGParser.java:2056) 
     at edu.stanford.nlp.parser.lexparser.ExhaustivePCFGParser.considerCreatingArrays(ExhaustivePCFGParser.java:2027) 
     at edu.stanford.nlp.parser.lexparser.ExhaustivePCFGParser.parse(ExhaustivePCFGParser.java:315) 
     at edu.stanford.nlp.parser.lexparser.LexicalizedParser.parse(LexicalizedParser.java:375) 
     at edu.stanford.nlp.parser.lexparser.LexicalizedParser.apply(LexicalizedParser.java:279) 
     at finalproj.logic.SentenceTagger.tagSentence(SentenceTagger.java:25) 
     at finalproj.logic.SentenceToXMLWriter.addSentence(SentenceToXMLWriter.java:62) 
     at finalproj.logic.SentenceSplitter.splitFile(SentenceSplitter.java:24) 
     at finalproj.ui.LoadReqFile.jBtnSentenceSplitActionPerformed(LoadReqFile.java:126) 
     at finalproj.ui.LoadReqFile.access$200(LoadReqFile.java:21) 
     at finalproj.ui.LoadReqFile$3.actionPerformed(LoadReqFile.java:70) 
     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 
     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
     at java.awt.Component.processMouseEvent(Component.java:6038) 
     at javax.swing.JComponent.processMouseEvent(JComponent.java:3260) 
     at java.awt.Component.processEvent(Component.java:5803) 
     at java.awt.Container.processEvent(Container.java:2058) 
     at java.awt.Component.dispatchEventImpl(Component.java:4410) 
     at java.awt.Container.dispatchEventImpl(Container.java:2116) 
     at java.awt.Component.dispatchEvent(Component.java:4240) 
     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) 
     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) 
     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) 
     at java.awt.Container.dispatchEventImpl(Container.java:2102) 
     at java.awt.Component.dispatchEvent(Component.java:4240) 
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) 
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) 
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) 
+0

Pourquoi auriez-vous besoin d'analyser la grammaire sur plusieurs phrases à la fois? Sûrement ce sont des unités discrètes? – Catchwa

Répondre

0

Vous devez commencer java avec des paramètres supplémentaires pour augmenter l'espace de tas. espace initial est 64MB, ce qui est évidemment ne suffit pas:

java -Xms128m -Xmx256m 

commencera avec 128 Mo (initiale de la taille du tas) et permettre à un maximum de tas 256Myte. Vous pourriez avoir besoin d'expérimentation.


Remarque - la page 'about' de l'analyseur contient un exemple stanford de ligne de commande courte java (ligne dernière) où ils utilisent une taille de tas de 200MByte. Je prends cela comme un indice que l'analyseur lui-même nécessite plus de 64 Mo de mémoire. (note supplémentaire: cet exemple de ligne de commande a une erreur de syntaxe, mon exemple ci-dessus est correct).

1

for each sentence i load the EnglishPCFGrammer file

Vous ne voulez certainement pas charger un fichier pour chaque phrase. Vous n'avez besoin de le charger qu'une seule fois - au début de votre processus d'analyse syntaxique, et simplement le référencer pour chaque phrase.
Il semble que le chargement de la File pour chaque phrase certainement provoquer une OutOfMemoryError.

Questions connexes