Ранее я обучал немецкий классификатор, используя Stanford NER и обучающий файл с 450 000 токенов. Поскольку у меня было почти 20 классов, это заняло около 8 часов, и мне пришлось сократить многие функции в файле реквизита.
Теперь у меня есть файл газеты с 16 000 000 уникальных помеченных токенов. Я хочу переобучить свой классификатор для использования этих токенов, но постоянно сталкиваюсь с проблемами памяти. Gazette-txt имеет размер 386 МБ и в основном содержит объекты с двумя токенами (имя + второе имя), все они уникальны.
Я уменьшил количество классов до 5, уменьшил количество токенов в бюллетене на 4 миллиона и удалил все функции, перечисленные на сайте часто задаваемых вопросов Stanford NER, из проп-файла, но я все еще сталкиваюсь с память: ошибка пространства кучи java. У меня 16 ГБ оперативной памяти, и я запускаю JVM с параметром -mx15g -Xmx14g.
Ошибка возникает примерно через 5 часов после начала процесса.
Моя проблема в том, что я не знаю, как еще больше сократить использование памяти без произвольного удаления записей из бюллетеня. Есть ли у кого-нибудь дополнительные предложения о том, как я могу уменьшить использование памяти?
Мой проп-файл выглядит так:
trainFile = ....tsv
serializeTo = ...ser.gz
map = word=0,answer=1
useWordPairs=false
useNGrams=false
useClassFeature=true
useWord=true
noMidNGrams=true
usePrev=true
useNext=true
useSequences=true
usePrevSequences=true
maxLeft=1
useTypeSeqs=true
useTypeSeqs2=true
useTypeySequences=true
wordShape=chris2useLC
useDisjunctive=true
saveFeatureIndexToDisk=true
qnSize=2
printFeatures=true
useObservedSequencesOnly=true
cleanGazette=true
gazette=....txt
Надеюсь, это не слишком хлопотно. Заранее спасибо!