Antes que nada, soy nuevo en python/nltk así que mis disculpas si la pregunta es demasiado básica. Tengo un archivo grande que estoy tratando de tokenizar; Tengo errores de memoria.Tokenización de archivo TXT grande (> 70 MB) con Python NLTK. Concatenación y escritura de datos para transmitir errores
Una de las soluciones que he leído es leer el archivo una línea a la vez, lo que tiene sentido, sin embargo, al hacerlo obtengo el error cannot concatenate 'str' and 'list' objects
. No estoy seguro de por qué se muestra ese error ya que (después de leer el archivo, compruebo su tipo y de hecho es una cadena.
He intentado dividir los archivos de 7MB en 4 más pequeños, y al ejecutar eso, me sale:. error: failed to write data to stream
Por último, cuando se trata de una muestra muy pequeña del archivo (100 KB o menos), y ejecutando el código modificado, soy capaz de tokenize el archivo
Cualquier ideas sobre lo que está sucediendo. ? Gracias.
# 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
Los siguientes trabajos con pequeño archivo:
import nltk
filename=open("X:\MyFile.txt","r").read()
type(raw)
tokens = nltk.word.tokenize(filename)
Funciona perfectamente! muchas gracias luke14free –
Pero ten en cuenta que 'word_tokenize' supone que se ejecuta en una sola oración a la vez, por lo que esto te dará algunos errores de tokenización. Realmente necesitas leer un trozo del archivo, dividirlo con 'sent_tokenize', luego pasarlo a' word_tokenize'. Lo cual es un problema si necesita leer línea por línea, y sus oraciones se cruzan en líneas. Así que quizás prefiera vivir con las imperfecciones por ahora ... – alexis
Sí, mi código se basa en la suposición bastante fuerte de que no puede encontrar un \ n en el medio de una oración. – luke14free