Streamen Sie die Datei und verarbeiten Sie sie beim zeilenweisen Lesen der Datei.
Wenn der Speicher zum Speichern der Tokens ein Problem ist, schreiben Sie die Prozesstoken zeilenweise oder in Stapeln.
Zeile für Zeile:
from __future__ import print_function
from nltk import word_tokenize
with open('input.txt', 'r') as fin, open('output.txt', 'w') as fout:
for line in fin:
tokenized_line = ' '.join(word_tokenize(line.strip()))
print(tokenized_line, end='\n', file=fout)
In Chargen (1000):
from __future__ import print_function
from nltk import word_tokenize
with open('input.txt', 'r') as fin, open('output.txt', 'w') as fout:
processed_lines = []
for i, line in enumerate(fin):
tokenized_line = ' '.join(word_tokenize(line.strip()))
processed_lines.append(tokenized_line)
if i % 1000 = 0:
print('\n'.join(processed_lines), end='\n', file=fout)
processed_lines = []
Sie könnten die Dateien in kleinere Brocken brechen und sie in dieser Körnung verarbeiten. –