Cambiar frases a vectores con la función while en Python

Me gustaría cambiar las siguientes frases a vectores con sklearn:

Article 1. It is not good to eat pizza after midnight Article 2. I wouldn't survive a day withouth stackexchange Article 3. All of these are just random phrases Article 4. To prove if my experiment works. Article 5. The red dog jumps over the lazy fox 

Obtuve el siguiente código:

 from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer(min_df=1) n=0 while n < 5: n = n + 1 a = ('Article %(number)s' % {'number': n}) print(a) with open("LISR2.txt") as openfile: for line in openfile: if a in line: X=line print(vectorizer.fit_transform(X)) 

Lo que me da el siguiente error:

 ValueError: Iterable over raw text documents expected, string object received. 

¿Por qué pasó esto? Sé que esto debería funcionar porque si escribo individualmente:

 X=("It is not good to eat pizza","I wouldn't survive a day", "All of these") print(vectorizer.fit_transform(X)) 

Me da mis vectores deseados.

 (0, 8) 1 (0, 2) 1 (0, 11) 1 (0, 3) 1 (0, 6) 1 (0, 4) 1 (0, 5) 1 (1, 1) 1 (1, 9) 1 (1, 12) 1 (2, 10) 1 (2, 7) 1 (2, 0) 1 

Mira los documentos . Dice que CountVectorizer.fit_transform espera una serie de cadenas (por ejemplo, una lista de cadenas). Estás pasando una sola cadena en su lugar.

Tiene sentido, fit_transform in scikit hace dos cosas: 1) aprende un modelo (ajuste) 2) aplica el modelo sobre los datos (transformación). Desea crear una matriz, donde las columnas son todas las palabras en el vocabulario y las filas corresponden a los documentos. Para eso necesitas saber todo el vocabulario en tu corpus (todas las columnas).

Este problema se produce cuando proporciona los datos sin procesar, significa que le da directamente la cadena a la función de extracción, en su lugar, puede dar Y = [X] y pasar esta Y como parámetro, entonces obtendrá la información correcta. También enfrenté este problema