Как исправить ошибку памяти в ноутбуке jupyter - PullRequest
0 голосов
/ 05 мая 2020

Я делаю проект НЛП в jupyter notebook с набором данных, включающим 160000 строк. После запуска данного кода я получаю ошибку памяти.

messages = list(zip(processed, Y))

# defined a seed for reproducibility
seed = 1
np.random.seed = seed
np.random.shuffle(messages)

# calling find_features function for each comments
featuresets = [(find_features(text), label) for (text, label) in messages] 

Отображается ошибка -

<ipython-input-18-faca481e94f7> in find_features(message)
      3     features = {}
      4     for word in word_features:
----> 5         features[word] = (word in words)
      6 
      7     return features

MemoryError: 

Есть ли способ исправить это. Я использую windows 64-битный ноутбук с 4 ГБ оперативной памяти Core i5 8-го поколения.

1 Ответ

2 голосов
/ 05 мая 2020

Не уверен, что это полностью решит вашу проблему, но вы, кажется, создаете словарь с логическими значениями, которые хранят результат поиска слова в списке / наборе / что угодно.

Если только несколько слов находятся в списке, он по-прежнему создает огромный словарь с множеством False значений, когда вам просто нужны True значения (если вам не нужно знать, какие значения были протестированы)

Я бы заменил:

features = {}
for word in word_features:
   features[word] = (word in words)

с

features = set()
for word in word_features:
    if word in words:
        features.add(word)

или установите понимание:

features = {word for word in word_features if word in words}

Теперь, чтобы проверить, существует ли word в features, просто выполните if word in features:

Создание set, содержащего только совпадающее слово, исключает записи, где проверяется False, а также удаляет значение , оставляя только ключи, которым принадлежит слово.

...