Zunächst einmal bin ich neu bei Python/Nltk so meine Entschuldigung, wenn die Frage zu einfach ist. Ich habe eine große Datei, die ich zu symbolisieren versuche; Ich bekomme Speicherfehler.Tokenizing große (> 70 MB) TXT-Datei mit Python NLTK. Verkettung & Schreiben von Daten, um Fehler zu streamen
Eine Lösung, die ich gelesen habe, ist, die Datei Zeile für Zeile zu lesen, was jedoch Sinn macht, wenn ich das tue, bekomme ich den Fehler cannot concatenate 'str' and 'list' objects
. Ich bin nicht sicher, warum dieser Fehler seit angezeigt wird (nach dem Lesen der Datei, ich überprüfe seinen Typ und es ist in der Tat eine Zeichenfolge.
Ich habe versucht, die 7MB Dateien in 4 kleinere zu teilen, und wenn das ausgeführt wird, ich bekomme. error: failed to write data to stream
Schließlich, wenn eine sehr kleine Probe der Datei (100 KB oder weniger) versuchen, und den geänderten Code ausgeführt wird, ich bin in der Lage, die Datei tokenize
Irgendwelche Einblicke in das, was passiert.
# tokenizing large file one line at a time
import nltk
filename=open("X:\MyFile.txt","r").read()
type(raw) #str
tokens = ''
for line in filename
tokens+=nltk.word_tokenize(filename)
#cannot concatenate 'str' and 'list' objects
Die folgenden Arbeiten mit kleiner Datei:
import nltk
filename=open("X:\MyFile.txt","r").read()
type(raw)
tokens = nltk.word.tokenize(filename)
Funktioniert perfekt! Vielen Dank luke14free –
Aber denken Sie daran, dass 'word_tokenize' annimmt, dass es immer nur einen Satz enthält, so dass Sie einige Tokenisierungsfehler bekommen. Wirklich müssen Sie einen Teil der Datei lesen, teilen Sie es mit 'sent_tokenize', dann übergeben Sie das an' word_tokenize'. Was ist ein Schmerz, wenn Sie Zeile für Zeile lesen müssen, und Ihre Sätze über Linien brechen. Vielleicht möchten Sie also lieber mit den Unvollkommenheiten leben ... – alexis
Ja, mein Code basiert auf der ziemlich starken Annahme, dass Sie kein \ n in der Mitte eines Satzes finden können. – luke14free