Я пытаюсь реализовать symspell в python3 (64 бит), и у меня есть текстовый файл размером 20 МБ, который содержит слова с частотами. Я могу успешно загрузить эти данные в словарь с именем originalDictionary
. В качестве следующего шага для каждого слова в словаре я должен удалять по одному символу за раз, а также добавлять это измененное слово в другой словарь с именем editDictionary
. Но я получил ошибку памяти.
Я запускаю это на Windows10 (x64) с 16 ГБ ОЗУ.
Что я могу сделать, чтобы решить эту проблему?
for word in originalDictionary:
for i in range(len(word)):
edit1 = word[0:i] + word[i + 1:]
if edit1 not in editedDictionary:
editedDictionary[edit1] = [word]
else:
editedDictionary[edit1].append(word)
Ниже приведена ошибка:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm 2018.3.2\helpers\pydev\pydevd.py", line 1741, in <module>
main()
File "C:\Program Files\JetBrains\PyCharm 2018.3.2\helpers\pydev\pydevd.py", line 1735, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "C:\Program Files\JetBrains\PyCharm 2018.3.2\helpers\pydev\pydevd.py", line 1135, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2018.3.2\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/ee/PycharmProjects/SymSpell/spellCorrector.py", line 98, in <module>
createDictionaries()
File "C:/Users/ee/PycharmProjects/SymSpell/spellCorrector.py", line 40, in createDictionaries
editedDictionary[edit1] = [word]
MemoryError