Моделирование n-грамм с помощью java hashmap

Мне нужно смоделировать набор n-граммов (последовательности из n слов) и их контексты (слова, которые появляются рядом с n-граммой вместе с их частотой). Моя идея заключалась в следующем:

public class Ngram {

    private String[] words;
    private HashMap<String, Integer> contextCount = new HashMap<String, Integer>();
}

Затем, для подсчета всех различных n-граммов, я использую другой Hashmap, например

HashMap<String, Ngram> ngrams = new HashMap<String, Ngram>();

, и добавляю к нему при получении текста. Проблема в том, что когда количество n-граммов превышает 10 000 или около того, куча JVM заполняется (она установлена ​​на максимум 1,5 ГБ), и все очень сильно замедляется.

Есть ли лучший способ сделать это, чтобы избежать такого потребления памяти? Кроме того, контексты должны быть легко сопоставимы между n-граммами, которые я ' м. Не уверен, что это возможно с моим решением.

6
задан Nikola 5 May 2011 в 15:09
поделиться