Prima di tutto, sono nuovo in Python/nltk, quindi mi scuso se la domanda è troppo semplice. Ho un file di grandi dimensioni che sto cercando di tokenize; Ottengo errori di memoria.Tokenizzazione di file TXT di grandi dimensioni (> 70 MB) utilizzando Python NLTK. Concatenazione e scrittura di dati per lo streaming di errori
Una soluzione di cui ho letto è leggere il file una riga alla volta, il che ha senso, tuttavia, quando lo faccio, viene visualizzato l'errore cannot concatenate 'str' and 'list' objects
. Non sono sicuro del motivo per cui viene visualizzato quell'errore (dopo aver letto il file, ne controllo il tipo ed è in realtà una stringa.
Ho provato a suddividere i file da 7 MB in 4 più piccoli, e quando lo eseguo, ottengo:. error: failed to write data to stream
Infine, quando si cerca un campione molto piccolo del file (100 KB o meno), e l'esecuzione del codice modificato, sono in grado di tokenize il file
Eventuali approfondimenti di ciò che sta accadendo. ? Grazie
# 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
le seguenti opere con file di piccole dimensioni:
import nltk
filename=open("X:\MyFile.txt","r").read()
type(raw)
tokens = nltk.word.tokenize(filename)
Funziona perfettamente! grazie mille luke14free –
Ma sappi che 'word_tokenize' presuppone che sia eseguito su una singola frase alla volta, quindi questo ti darà alcuni errori di tokenizzazione. In realtà è necessario leggere un blocco del file, dividerlo con 'sent_tokenize', quindi passarlo a' word_tokenize'. Che è un dolore se hai bisogno di leggere riga per riga e le tue frasi sfondano le righe. Quindi potresti preferire semplicemente vivere con le imperfezioni per ora ... – alexis
Sì, il mio codice si basa sul presupposto abbastanza forte che non riesci a trovare un \ n nel mezzo di una frase. – luke14free