Tengo la columna 'revisión' del marco de datos con contenido como 'Food was Awesome' y quiero una nueva columna que cuente el número de repeticiones de cada palabra.
name The First Years Massaging Action Teether
review A favorite in our house!
rating 5
Name: 269, dtype: object
Esperando resultados como ['Food': 1, 'was': 1, 'Awesome': 1] Lo intenté con for loop pero está tardando demasiado en ejecutarse
for row in range(products.shape[0]):
try:
count_vect.fit_transform([products['review_without_punctuation'][row]])
products['word_count'][row]=count_vect.vocabulary_
except:
print(row)
Me gustaría hacerlo sin for loop.
2 respuestas
Encontré una solución para esto. He definido una función como esta:
def Vectorize(text):
try:
count_vect.fit_transform([text])
return count_vect.vocabulary_
except:
return-1
Y aplicado la función anterior
from sklearn.feature_extraction.text import CountVectorizer
count_vect = CountVectorizer()
products['word_count'] = products['review_without_punctuation'].apply(Vectorize)
Esta solución funcionó y obtuve vocabulario en una nueva columna.
Puede obtener el vector de conteo para todos los documentos como este:
cv = CountVectorizer()
count_vectors = cv.fit_transform(products['review_without_punctuation'])
Para obtener el vector de recuento en formato de matriz para un documento en particular por índice, por ejemplo, el primer documento,
count_vectors[0].toarray()
El vocabulario está en
cv.vocabulary_
Para obtener las palabras que componen un vector de conteo, por ejemplo, para el primer documento, use
cv.inverse_transform(count_vectors[0])
Preguntas relacionadas
Nuevas preguntas
pandas
Pandas es una biblioteca de Python para la manipulación y análisis de datos, p. marcos de datos, series de tiempo multidimensionales y conjuntos de datos transversales que se encuentran comúnmente en estadísticas, resultados de ciencias experimentales, econometría o finanzas. Pandas es una de las principales bibliotecas de ciencia de datos en Python.