2013-12-07 3 views
0

Я пытаюсь использовать Tagger Stanford POS (http://nlp.stanford.edu/downloads/tagger.shtml#Download), но при попытке инициализировать Tagger поStanford POS Tagger OutOfMemoryError чтение Таггер

MaxentTagger tagger = new MaxentTagger("english-left3words-distsim.tagger"); 

Я всегда получаю эту ошибку:

Reading POS tagger model from stanford-postagger-2013-11-12/models/english-left3words-distsim.tagger ... Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 
    at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:3443) 
    at java.io.ObjectInputStream$HandleTable.assign(ObjectInputStream.java:3250) 
    at java.io.ObjectInputStream.readString(ObjectInputStream.java:1628) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1320) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) 
    at java.util.HashMap.readObject(HashMap.java:1029) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:979) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1873) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1777) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1970) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1895) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1777) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1970) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1895) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1777) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) 
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.readExtractors(MaxentTagger.java:582) 
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:808) 
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.readModelAndInit(MaxentTagger.java:755) 
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:289) 
    at edu.stanford.nlp.tagger.maxent.MaxentTagger.<init>(MaxentTagger.java:253) 

Я запускаю это в Eclipse, и я выделяю 4gb пространства кучи на jvm в соответствии с связанными инструкциями от http://nlp.stanford.edu/downloads/pos-tagger-faq.shtml#oom (с использованием -vmargs -Xms4096M -Xmx4096M -mx4096m)

Я нашел эту ошибку в поиске: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6525563, который кажется связанным, но я думаю, что теггер Стэнфорда настолько широко используется. Я сомневаюсь, что я был бы первым, кто включил этот OutOfMemoryError, если бы из-за этой ошибки ...

Обновление: кажется, что Eclipse фактически не получает память, которую я пытаюсь выделить. Runtime.getRuntime(). MaxMemory() сообщает, что доступно только 123 Мб, а другие проекты в одной рабочей области имеют 1 доступный доступ.

ответ

0

Забыл добавить vmargs в конфигурацию запуска проекта.

Добавление -Xms512m -Xmx1024m -mx512m в раздел аргументов VM в разделе «Конфигурации запуска» позволяет считывать теггер правильно.

Смежные вопросы